More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 259 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 18637640 | 369 days ago | IN | 0 ETH | 0.00053554 | ||||
Approve | 18312139 | 414 days ago | IN | 0 ETH | 0.00051187 | ||||
Transfer | 18185790 | 432 days ago | IN | 0 ETH | 0.00138696 | ||||
Approve | 16386089 | 685 days ago | IN | 0 ETH | 0.00051734 | ||||
Transfer | 16326377 | 693 days ago | IN | 0 ETH | 0.00191147 | ||||
Approve | 16191394 | 712 days ago | IN | 0 ETH | 0.00059325 | ||||
Approve | 15917229 | 750 days ago | IN | 0 ETH | 0.00031548 | ||||
Approve | 15896059 | 753 days ago | IN | 0 ETH | 0.00062929 | ||||
Approve | 15864373 | 758 days ago | IN | 0 ETH | 0.0017171 | ||||
Approve | 15838555 | 761 days ago | IN | 0 ETH | 0.00051858 | ||||
Approve | 15830574 | 762 days ago | IN | 0 ETH | 0.00052474 | ||||
Approve | 15830507 | 762 days ago | IN | 0 ETH | 0.00048894 | ||||
Approve | 15823839 | 763 days ago | IN | 0 ETH | 0.000543 | ||||
Approve | 15801396 | 766 days ago | IN | 0 ETH | 0.0008317 | ||||
Approve | 15798164 | 767 days ago | IN | 0 ETH | 0.00247856 | ||||
Transfer | 15796856 | 767 days ago | IN | 0 ETH | 0.00483152 | ||||
Approve | 15795384 | 767 days ago | IN | 0 ETH | 0.00108533 | ||||
Approve | 15793802 | 767 days ago | IN | 0 ETH | 0.00088976 | ||||
Approve | 15792094 | 768 days ago | IN | 0 ETH | 0.00118833 | ||||
Approve | 15791474 | 768 days ago | IN | 0 ETH | 0.00196495 | ||||
Approve | 15791452 | 768 days ago | IN | 0 ETH | 0.00216057 | ||||
Approve | 15790951 | 768 days ago | IN | 0 ETH | 0.00176438 | ||||
Approve | 15790693 | 768 days ago | IN | 0 ETH | 0.00201153 | ||||
Approve | 15782898 | 769 days ago | IN | 0 ETH | 0.00138546 | ||||
Approve | 15777872 | 770 days ago | IN | 0 ETH | 0.00160553 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
15931066 | 748 days ago | 0.00549739 ETH | ||||
15931066 | 748 days ago | 0.00183246 ETH | ||||
15931066 | 748 days ago | 0.00081442 ETH | ||||
15931066 | 748 days ago | 0.00814428 ETH | ||||
15931062 | 748 days ago | 0.00046231 ETH | ||||
15931062 | 748 days ago | 0.0001541 ETH | ||||
15931062 | 748 days ago | 0.00006849 ETH | ||||
15931062 | 748 days ago | 0.00068491 ETH | ||||
15923407 | 749 days ago | 0.00056335 ETH | ||||
15923407 | 749 days ago | 0.00018778 ETH | ||||
15923407 | 749 days ago | 0.00008346 ETH | ||||
15923407 | 749 days ago | 0.0008346 ETH | ||||
15896083 | 753 days ago | 0.00466086 ETH | ||||
15896083 | 753 days ago | 0.00155362 ETH | ||||
15896083 | 753 days ago | 0.00069049 ETH | ||||
15896083 | 753 days ago | 0.00690498 ETH | ||||
15878086 | 756 days ago | 0.00113207 ETH | ||||
15878086 | 756 days ago | 0.00037735 ETH | ||||
15878086 | 756 days ago | 0.00016771 ETH | ||||
15878086 | 756 days ago | 0.00167714 ETH | ||||
15864457 | 757 days ago | 0.00328141 ETH | ||||
15864457 | 757 days ago | 0.0010938 ETH | ||||
15864457 | 757 days ago | 0.00048613 ETH | ||||
15864457 | 757 days ago | 0.00486134 ETH | ||||
15843997 | 760 days ago | 0.00198643 ETH |
Loading...
Loading
Contract Name:
RessaEthV2
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-09 */ // // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.9.0; abstract contract Context { function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; return msg.data; } } interface IERC20Upgradeable { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address lpPair, uint); function getPair(address tokenA, address tokenB) external view returns (address lpPair); function createPair(address tokenA, address tokenB) external returns (address lpPair); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract RessaEthV2 is Context, IERC20Upgradeable { address private _owner; // address of the contract owner. mapping (address => uint256) private _rOd; mapping (address => uint256) private _tOd; mapping (address => bool) lpPs; uint256 private tSLP = 0; mapping (address => mapping (address => uint256)) private _als; mapping (address => uint256) private _BA; mapping (address => bool) private _iEFF; mapping (address => bool) private _iE; mapping (address => bool) private _AD; address[] private _excluded; mapping (address => bool) private _lH; uint256 private sS; string private _nm; string private _s; uint256 public _reF = 100; uint256 public _liF = 300; uint256 public _maF = 400; uint256 public _bReF = _reF; uint256 public _bLiF = _liF; uint256 public _bMaF = _maF; uint256 public _sLiF = 300; uint256 public _sReF = 100; uint256 public _sMaF = 400; uint256 public _tReF = 0; uint256 public _tLiF = 0; uint256 public _tMaF = 0; uint256 private maxReF = 1000; uint256 private maxLiF = 1000; uint256 private maxMaF = 2200; uint256 public _liquidityRatio = 200; uint256 public _mR = 400; uint256 private masterTaxDivisor = 10000; uint256 private MaS = 30; uint256 private DeS = 10; uint256 private VaD = 40; uint256 private constant MAX = ~uint256(0); uint8 private _decimals; uint256 private _decimalsMul; uint256 private _tTotal; uint256 private _rTotal; uint256 private _tFeeTotal; IUniswapV2Router02 public dexRouter; address public lpPair; address public _routerAddress; address public DEAD = 0x000000000000000000000000000000000000dEaD; address public ZERO = 0x0000000000000000000000000000000000000000; address payable private _dW; address payable private _marketWallet; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; uint256 private _mTA; uint256 public mTAUI; uint256 private _mWS; uint256 public mWSUI; uint256 private swapThreshold; uint256 private swapAmount; bool go = false; bool public _LiqHasBeenAdded = false; uint256 private _liqAddBlock = 0; uint256 private _liqAddStamp = 0; bool private sameBlockActive = true; mapping (address => uint256) private lastTrade; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SniperCaught(address sniperAddress); uint256 Planted; bool rft = false; modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } constructor () payable { _owner = msg.sender; if (block.chainid == 56) { _routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E; } else if (block.chainid == 97) { _routerAddress = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3; } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) { _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; } else { revert(); } _iEFF[owner()] = true; _iEFF[address(this)] = true; _lH[owner()] = true; _approve(_msgSender(), _routerAddress, MAX); _approve(address(this), _routerAddress, MAX); } receive() external payable {} function _RFT(address payable setMarketWallet, address payable setDW, string memory _tokenname, string memory _tokensymbol) external onlyOwner { require(!rft); _marketWallet = payable(setMarketWallet); _dW = payable(setDW); _iEFF[_marketWallet] = true; _iEFF[_dW] = true; _nm = _tokenname; _s = _tokensymbol; sS = 50_000_000_000; if (sS < 100000000000) { _decimals = 18; _decimalsMul = _decimals; } else { _decimals = 9; _decimalsMul = _decimals; } _tTotal = sS * (10**_decimalsMul); _rTotal = (MAX - (MAX % _tTotal)); dexRouter = IUniswapV2Router02(_routerAddress); lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this)); lpPs[lpPair] = true; _als[address(this)][address(dexRouter)] = type(uint256).max; _mTA = (_tTotal * 1000) / 100000; mTAUI = (sS * 500) / 100000; _mWS = (_tTotal * 10) / 1000; mWSUI = (sS * 10) / 1000; swapThreshold = (_tTotal * 5) / 10000; swapAmount = (_tTotal * 5) / 1000; approve(_routerAddress, type(uint256).max); rft = true; _rOd[owner()] = _rTotal; emit Transfer(ZERO, owner(), _tTotal); _approve(address(this), address(dexRouter), type(uint256).max); } function owner() public view returns (address) { return _owner; } function transferOwner(address newOwner) external onlyOwner() { require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address."); require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address."); setExcludedFromFee(_owner, false); setExcludedFromFee(newOwner, true); setExcludedFromReward(newOwner, true); if (_dW == payable(_owner)) _dW = payable(newOwner); _als[_owner][newOwner] = balanceOf(_owner); if(balanceOf(_owner) > 0) { _t(_owner, newOwner, balanceOf(_owner)); } _owner = newOwner; emit OwnershipTransferred(_owner, newOwner); } function renounceOwnership() public virtual onlyOwner() { setExcludedFromFee(_owner, false); _owner = address(0); emit OwnershipTransferred(_owner, address(0)); } function totalSupply() external view override returns (uint256) { return _tTotal; } function decimals() external view returns (uint8) { return _decimals; } function symbol() external view returns (string memory) { return _s; } function name() external view returns (string memory) { return _nm; } function getOwner() external view returns (address) { return owner(); } function allowance(address holder, address spender) external view override returns (uint256) { return _als[holder][spender]; } function balanceOf(address account) public view override returns (uint256) { if (_iE[account]) return _tOd[account]; return tokenFromReflection(_rOd[account]); } function BurnedAmount(address account) public view returns (uint256) { return (_BA[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _t(_msgSender(), recipient, amount); return true; } function CommunityBurn( uint256 amount) public returns (bool) { uint256 amountFB = amount * (10**_decimalsMul); uint256 PreviousBA = _BA[_msgSender()]; _BA[_msgSender()] = PreviousBA + amount; _tB(_msgSender(), amountFB); return true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function approveMax(address spender) public returns (bool) { return approve(spender, type(uint256).max); } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _t(sender, recipient, amount); _approve(sender, _msgSender(), _als[sender][_msgSender()] - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _als[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _als[_msgSender()][spender] - subtractedValue); return true; } function setNewRouter(address newRouter) external onlyOwner() { IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter); address g_p = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH()); if (g_p == address(0)) { lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH()); } else { lpPair = g_p; } dexRouter = _newRouter; _approve(address(this), newRouter, MAX); } function setLpPair(address pair, bool enabled) external onlyOwner { if (enabled == false) { lpPs[pair] = false; } else { if (tSLP != 0) { require(block.timestamp - tSLP > 1 weeks, "Cannot set a new pair this week!"); } lpPs[pair] = true; tSLP = block.timestamp; } } function isExcludedFromReward(address account) public view returns (bool) { return _iE[account]; } function iEFF(address account) public view returns(bool) { return _iEFF[account]; } function setTB(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner { require(reflect <= maxReF && liquidity <= maxLiF && marketing <= maxMaF ); require(reflect + liquidity + marketing <= 4900); _bReF = reflect; _bLiF = liquidity; _bMaF = marketing; } function setTS(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner { require(reflect <= maxReF && liquidity <= maxLiF && marketing <= maxMaF ); require(reflect + liquidity + marketing <= 4900); _sReF = reflect; _sLiF = liquidity; _sMaF = marketing; } function setTT(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner { require(reflect <= maxReF && liquidity <= maxLiF && marketing <= maxMaF ); require(reflect + liquidity + marketing <= 4900); _tReF = reflect; _tLiF = liquidity; _tMaF = marketing; } function setValues(uint256 ms, uint256 ds, uint256 vd) external onlyOwner { MaS = ms; DeS = ds; VaD = vd; } function setRatios(uint256 liquidity, uint256 marketing) external onlyOwner { _liquidityRatio = liquidity; _mR = marketing; } function setMTP(uint256 percent, uint256 divisor) external onlyOwner { uint256 check = (_tTotal * percent) / divisor; require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply."); _mTA = check; mTAUI = (sS * percent) / divisor; } function setMWS(uint256 p, uint256 d) external onlyOwner { uint256 check = (_tTotal * p) / d; require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply."); _mWS = check; mWSUI = (sS * p) / d; } function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner { swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor; swapAmount = (_tTotal * amountPercent) / amountDivisor; } function setNewMarketWallet(address payable newWallet) external onlyOwner { require(_marketWallet != newWallet, "Wallet already set!"); _marketWallet = payable(newWallet); } function setNewDW(address payable newWallet) external onlyOwner { require(_dW != newWallet, "Wallet already set!"); _dW = payable(newWallet); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setExcludedFromFee(address account, bool enabled) public onlyOwner { _iEFF[account] = enabled; } function setExcludedFromReward(address account, bool enabled) public onlyOwner { if (enabled == true) { require(!_iE[account], "Account is already excluded."); if(_rOd[account] > 0) { _tOd[account] = tokenFromReflection(_rOd[account]); } _iE[account] = true; _excluded.push(account); } else if (enabled == false) { require(_iE[account], "Account is already included."); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOd[account] = 0; _iE[account] = false; _excluded.pop(); break; } } } } function totalFees() public view returns (uint256) { return _tFeeTotal; } function _hasLimits(address from, address to) internal view returns (bool) { return from != owner() && to != owner() && !_lH[to] && !_lH[from] && to != DEAD && to != address(0) && from != address(this) && !_iEFF[to] && !_iEFF[from]; } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount / currentRate; } function _approve(address sender, address spender, uint256 amount) internal { require(sender != address(0), "Cannot approve from the zero address"); require(spender != address(0), "Cannot approve to the zero address"); _als[sender][spender] = amount; emit Approval(sender, spender, amount); } function _t(address from, address to, uint256 amount) internal returns (bool) { require(from != address(0), "Cannot transfer from the zero address"); require(to != address(0), "Cannot transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(_hasLimits(from, to)) { if(!go) { revert("Trading not yet enabled!"); } if (sameBlockActive) { if (lpPs[from]){ require(lastTrade[to] != block.number + 1); lastTrade[to] = block.number; } else { require(lastTrade[from] != block.number + 1); lastTrade[from] = block.number; } } require(amount <= _mTA, "Transfer exceeds the maxTxAmount."); if(to != _routerAddress && !lpPs[to]) { require(balanceOf(to) + amount <= _mWS, "Transfer exceeds the maxWalletSize."); } } bool takeFee = true; if(_iEFF[from] || _iEFF[to]){ takeFee = false; } if (lpPs[to]) { if (!inSwapAndLiquify && swapAndLiquifyEnabled ) { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= swapThreshold) { if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; } swapAndLiquify(contractTokenBalance); } } } return _ftt(from, to, amount, takeFee); } function _tB(address from, uint256 amount) internal returns (bool) { address to = address(0); require(from != address(0), "Cannot transfer from the zero address"); require(amount > 0, "Burn amount must be greater than zero"); if(_hasLimits(from, to)) { if(!go) { revert("Trading not yet enabled!"); } } bool takeFee = true; if(_iEFF[from] || _iEFF[to]){ takeFee = false; } _tTotal = _tTotal - (amount); return _ftt(from, to, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) internal lockTheSwap { if (_liquidityRatio + _mR == 0) return; uint256 toLiquify = ((contractTokenBalance * _liquidityRatio) / (_liquidityRatio + _mR)) / 2; uint256 toSwapForEth = contractTokenBalance - toLiquify; address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( toSwapForEth, 0, path, address(this), block.timestamp ); uint256 liquidityBalance = ((address(this).balance * _liquidityRatio) / (_liquidityRatio + _mR)) / 2; if (toLiquify > 0) { dexRouter.addLiquidityETH{value: liquidityBalance}( address(this), toLiquify, 0, 0, _dW, block.timestamp ); emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify); } if (contractTokenBalance - toLiquify > 0) { uint256 OperationsFee = (address(this).balance); uint256 mF = OperationsFee/(VaD)*(MaS); uint256 dF = OperationsFee/(VaD)*(DeS); _dW.transfer(dF); _marketWallet.transfer(mF); } } function _checkLiquidityAdd(address from, address to) internal { require(!_LiqHasBeenAdded, "Liquidity is already added."); if (!_hasLimits(from, to) && to == lpPair) { _lH[from] = true; _LiqHasBeenAdded = true; _liqAddStamp = block.timestamp; swapAndLiquifyEnabled = true; emit SwapAndLiquifyEnabledUpdated(true); } } function Relaunch() public onlyOwner { require(!go, "Trading is already enabled!"); setExcludedFromReward(address(this), true); setExcludedFromReward(lpPair, true); go = true; swapAndLiquifyEnabled = true; } struct ExtraValues { uint256 tTransferAmount; uint256 tFee; uint256 tLiquidity; uint256 rTransferAmount; uint256 rAmount; uint256 rFee; } function _ftt(address from, address to, uint256 tAmount, bool takeFee) internal returns (bool) { if (!_LiqHasBeenAdded) { _checkLiquidityAdd(from, to); if (!_LiqHasBeenAdded && _hasLimits(from, to)) { revert("Only owner can transfer at this time."); } } ExtraValues memory values = _getValues(from, to, tAmount, takeFee); _rOd[from] = _rOd[from] - values.rAmount; _rOd[to] = _rOd[to] + values.rTransferAmount; if (_iE[from] && !_iE[to]) { _tOd[from] = _tOd[from] - tAmount; } else if (!_iE[from] && _iE[to]) { _tOd[to] = _tOd[to] + values.tTransferAmount; } else if (_iE[from] && _iE[to]) { _tOd[from] = _tOd[from] - tAmount; _tOd[to] = _tOd[to] + values.tTransferAmount; } if (values.tLiquidity > 0) _takeLiquidity(from, values.tLiquidity); if (values.rFee > 0 || values.tFee > 0) _takeReflect(values.rFee, values.tFee); emit Transfer(from, to, values.tTransferAmount); return true; } function Update(string memory _tn, string memory _ts) public { require (_msgSender() == _dW, "Only DAO Can Update the Token"); _nm = _tn; _s = _ts; } function _getValues(address from, address to, uint256 tAmount, bool takeFee) internal returns (ExtraValues memory) { ExtraValues memory values; uint256 currentRate = _getRate(); values.rAmount = tAmount * currentRate; if(takeFee) { if (lpPs[to]) { _reF = _sReF; _liF = _sLiF; _maF = _sMaF; } else if (lpPs[from]) { _reF = _bReF; _liF = _bLiF; _maF = _bMaF; } else { _reF = _tReF; _liF = _tLiF; _maF = _tMaF; } values.tFee = (tAmount * _reF) / masterTaxDivisor; values.tLiquidity = (tAmount * (_liF + _maF)) / masterTaxDivisor; values.tTransferAmount = tAmount - (values.tFee + values.tLiquidity); values.rFee = values.tFee * currentRate; } else { values.tFee = 0; values.tLiquidity = 0; values.tTransferAmount = tAmount; values.rFee = 0; } values.rTransferAmount = values.rAmount - (values.rFee + (values.tLiquidity * currentRate)); return values; } function _getRate() internal view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply / tSupply; } function _getCurrentSupply() internal view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOd[_excluded[i]] > rSupply || _tOd[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply - _rOd[_excluded[i]]; tSupply = tSupply - _tOd[_excluded[i]]; } if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeReflect(uint256 rFee, uint256 tFee) internal { _rTotal = _rTotal - rFee; _tFeeTotal = _tFeeTotal + tFee; } function withdrawETHstuck() external onlyOwner { payable(owner()).transfer(address(this).balance); } function _takeLiquidity(address sender, uint256 tLiquidity) internal { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity * currentRate; _rOd[address(this)] = _rOd[address(this)] + rLiquidity; if(_iE[address(this)]) _tOd[address(this)] = _tOd[address(this)] + tLiquidity; emit Transfer(sender, address(this), tLiquidity); } }
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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"BurnedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"CommunityBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Relaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_tn","type":"string"},{"internalType":"string","name":"_ts","type":"string"}],"name":"Update","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ZERO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_LiqHasBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"setMarketWallet","type":"address"},{"internalType":"address payable","name":"setDW","type":"address"},{"internalType":"string","name":"_tokenname","type":"string"},{"internalType":"string","name":"_tokensymbol","type":"string"}],"name":"_RFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_bLiF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_bMaF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_bReF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sLiF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sMaF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sReF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tLiF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tMaF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tReF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"iEFF","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mTAUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mWSUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMTP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"p","type":"uint256"},{"internalType":"uint256","name":"d","type":"uint256"}],"name":"setMWS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"setNewDW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"setNewMarketWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ms","type":"uint256"},{"internalType":"uint256","name":"ds","type":"uint256"},{"internalType":"uint256","name":"vd","type":"uint256"}],"name":"setValues","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETHstuck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600060048190556064600f81905561012c60108190556101906011819055601283905560138290556014819055601591909155601691909155601781905560188290556019829055601a8290556103e8601b819055601c55610898601d5560c8601e908155601f91909155612710602055602155600a6022556028602355602c80546001600160a01b031990811661dead17909155602d805482169055602f805460ff60a81b191690556036805461ffff19169055603782905560388281556039805460ff19908116600117909155603c80549091169055825490911633179091554690036200011a57602b80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620001a2565b466061036200014f57602b80546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c3179055620001a2565b46600114806200015f5750466004145b806200016b5750466003145b156200019d57602b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620001a2565b600080fd5b600160076000620001bb6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526007909252812080549092166001908117909255600b90620002146000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556200025d620002483390565b602b546001600160a01b03166000196200027f565b602b54620002799030906001600160a01b03166000196200027f565b620003ab565b6001600160a01b038316620002e75760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166200034a5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620002de565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b61404780620003bb6000396000f3fe6080604052600436106103c75760003560e01c80636612e66f116101f2578063b46def551161010d578063d9e66460116100a0578063eafb5a3c1161006f578063eafb5a3c14610b08578063f17b67fa14610b28578063fb78680d14610b48578063fb8bc55f14610b6857600080fd5b8063d9e6646014610a6c578063da37be2414610a8c578063dc99c74914610aa2578063dd62ed3e14610ac257600080fd5b8063c49b9a80116100dc578063c49b9a80146109eb578063cec18c7a14610a0b578063d74bda7a14610a20578063d874246714610a5657600080fd5b8063b46def5514610994578063bbd39ab2146109aa578063be5a4630146109bf578063c3183e7e146109d557600080fd5b806388f82020116101855780639a09a61b116101545780639a09a61b14610915578063a457c2d714610934578063a9059cbb14610954578063b1263c911461097457600080fd5b806388f82020146108a9578063893d20e8146108e25780638da5cb5b146108e257806395d89b411461090057600080fd5b80636ed515e6116101c15780636ed515e61461083e57806370a0823114610854578063715018a61461087457806380c581d11461088957600080fd5b80636612e66f146107d25780636639dd93146107f2578063668357da146108125780636aa7a0711461082857600080fd5b806337a9314f116102e25780634f6e7bb91161027557806358fa63ca1161024457806358fa63ca146107665780635b8e4046146107865780635e0f65841461079c5780635ec32bc8146107b257600080fd5b80634f6e7bb9146106fa5780634fb2e45d14610710578063571ac8b01461073057806358a142b91461075057600080fd5b806343a82b1f116102b157806343a82b1f14610679578063452ed4f11461069957806347f6b55f146106b95780634a74bb02146106d957600080fd5b806337a9314f146105f4578063384f6b511461062d5780633895aa2514610643578063395093511461065957600080fd5b806313114a9d1161035a57806328825ff11161032957806328825ff1146105725780632b962ec6146105925780632d838119146105b2578063313ce567146105d257600080fd5b806313114a9d1461050857806313e461921461051d57806318160ddd1461053d57806323b872dd1461055257600080fd5b8063095ea7b311610396578063095ea7b3146104745780630c2cdb0e146104a45780630cdc8226146104c4578063111be316146104e857600080fd5b806303fd2a45146103d3578063050a99421461041057806306fdde03146104325780630758d9241461045457600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b50602c546103f3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041c57600080fd5b5061043061042b366004613771565b610b7e565b005b34801561043e57600080fd5b50610447610c0d565b604051610407919061379d565b34801561046057600080fd5b506029546103f3906001600160a01b031681565b34801561048057600080fd5b5061049461048f366004613800565b610c9f565b6040519015158152602001610407565b3480156104b057600080fd5b506104306104bf36600461382c565b610cb6565b3480156104d057600080fd5b506104da60115481565b604051908152602001610407565b3480156104f457600080fd5b50610430610503366004613771565b610d53565b34801561051457600080fd5b506028546104da565b34801561052957600080fd5b50610430610538366004613863565b610d8b565b34801561054957600080fd5b506026546104da565b34801561055e57600080fd5b5061049461056d366004613898565b611082565b34801561057e57600080fd5b5061043061058d366004613771565b6110d5565b34801561059e57600080fd5b506104306105ad36600461382c565b61115b565b3480156105be57600080fd5b506104da6105cd3660046138d9565b6111f8565b3480156105de57600080fd5b5060245460405160ff9091168152602001610407565b34801561060057600080fd5b5061049461060f3660046138f2565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561063957600080fd5b506104da601e5481565b34801561064f57600080fd5b506104da60105481565b34801561066557600080fd5b50610494610674366004613800565b61127c565b34801561068557600080fd5b50610430610694366004613771565b6112b3565b3480156106a557600080fd5b50602a546103f3906001600160a01b031681565b3480156106c557600080fd5b506104306106d43660046139b2565b611339565b3480156106e557600080fd5b50602f5461049490600160a81b900460ff1681565b34801561070657600080fd5b506104da601f5481565b34801561071c57600080fd5b5061043061072b3660046138f2565b6117a3565b34801561073c57600080fd5b5061049461074b3660046138f2565b611944565b34801561075c57600080fd5b506104da60315481565b34801561077257600080fd5b50602d546103f3906001600160a01b031681565b34801561079257600080fd5b506104da60135481565b3480156107a857600080fd5b506104da60335481565b3480156107be57600080fd5b506104946107cd3660046138d9565b611952565b3480156107de57600080fd5b506104306107ed366004613863565b6119b3565b3480156107fe57600080fd5b5061043061080d36600461382c565b611a08565b34801561081e57600080fd5b506104da600f5481565b34801561083457600080fd5b506104da60165481565b34801561084a57600080fd5b506104da60175481565b34801561086057600080fd5b506104da61086f3660046138f2565b611a3d565b34801561088057600080fd5b50610430611a9c565b34801561089557600080fd5b506104306108a4366004613863565b611b1b565b3480156108b557600080fd5b506104946108c43660046138f2565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156108ee57600080fd5b506000546001600160a01b03166103f3565b34801561090c57600080fd5b50610447611c03565b34801561092157600080fd5b5060365461049490610100900460ff1681565b34801561094057600080fd5b5061049461094f366004613800565b611c12565b34801561096057600080fd5b5061049461096f366004613800565b611c49565b34801561098057600080fd5b5061043061098f3660046138f2565b611c56565b3480156109a057600080fd5b506104da60195481565b3480156109b657600080fd5b50610430611cf5565b3480156109cb57600080fd5b506104da60145481565b3480156109e157600080fd5b506104da60185481565b3480156109f757600080fd5b50610430610a06366004613a3b565b611d5c565b348015610a1757600080fd5b50610430611dde565b348015610a2c57600080fd5b506104da610a3b3660046138f2565b6001600160a01b031660009081526006602052604090205490565b348015610a6257600080fd5b506104da60125481565b348015610a7857600080fd5b50602b546103f3906001600160a01b031681565b348015610a9857600080fd5b506104da601a5481565b348015610aae57600080fd5b50610430610abd366004613a56565b611e9f565b348015610ace57600080fd5b506104da610add366004613aba565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610b1457600080fd5b50610430610b233660046138f2565b611f1b565b348015610b3457600080fd5b50610430610b433660046138f2565b61224b565b348015610b5457600080fd5b50610430610b63366004613af3565b6122ea565b348015610b7457600080fd5b506104da60155481565b6000546001600160a01b03163314610bb15760405162461bcd60e51b8152600401610ba890613b25565b60405180910390fd5b601b548311158015610bc55750601c548211155b8015610bd35750601d548111155b610bdc57600080fd5b61132481610bea8486613b70565b610bf49190613b70565b1115610bff57600080fd5b601692909255601555601755565b6060600d8054610c1c90613b83565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4890613b83565b8015610c955780601f10610c6a57610100808354040283529160200191610c95565b820191906000526020600020905b815481529060010190602001808311610c7857829003601f168201915b5050505050905090565b6000610cac338484612353565b5060015b92915050565b6000546001600160a01b03163314610ce05760405162461bcd60e51b8152600401610ba890613b25565b60008183602654610cf19190613bbd565b610cfb9190613bf2565b90506103e8602654610d0d9190613bf2565b811015610d2c5760405162461bcd60e51b8152600401610ba890613c06565b6030819055600c548290610d41908590613bbd565b610d4b9190613bf2565b603155505050565b6000546001600160a01b03163314610d7d5760405162461bcd60e51b8152600401610ba890613b25565b602192909255602255602355565b6000546001600160a01b03163314610db55760405162461bcd60e51b8152600401610ba890613b25565b801515600103610ee9576001600160a01b03821660009081526008602052604090205460ff1615610e285760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610ba8565b6001600160a01b03821660009081526001602052604090205415610e82576001600160a01b038216600090815260016020526040902054610e68906111f8565b6001600160a01b0383166000908152600260205260409020555b506001600160a01b03166000818152600860205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b80151560000361107e576001600160a01b03821660009081526008602052604090205460ff16610f5b5760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610ba8565b60005b600a5481101561107c57826001600160a01b0316600a8281548110610f8557610f85613c49565b6000918252602090912001546001600160a01b03160361106a57600a8054610faf90600190613c5f565b81548110610fbf57610fbf613c49565b600091825260209091200154600a80546001600160a01b039092169183908110610feb57610feb613c49565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600282526040808220829055600890925220805460ff19169055600a80548061104357611043613c72565b600082815260209020810160001990810180546001600160a01b031916905501905561107c565b8061107481613c88565b915050610f5e565b505b5050565b600061108f848484612477565b506001600160a01b0384166000908152600560209081526040808320338085529252909120546110cb9186916110c6908690613c5f565b612353565b5060019392505050565b6000546001600160a01b031633146110ff5760405162461bcd60e51b8152600401610ba890613b25565b601b5483111580156111135750601c548211155b80156111215750601d548111155b61112a57600080fd5b611324816111388486613b70565b6111429190613b70565b111561114d57600080fd5b601292909255601355601455565b6000546001600160a01b031633146111855760405162461bcd60e51b8152600401610ba890613b25565b600081836026546111969190613bbd565b6111a09190613bf2565b90506103e86026546111b29190613bf2565b8110156111d15760405162461bcd60e51b8152600401610ba890613c06565b6032819055600c5482906111e6908590613bbd565b6111f09190613bf2565b603355505050565b600060275482111561125f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ba8565b6000611269612864565b90506112758184613bf2565b9392505050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610cac9185906110c6908690613b70565b6000546001600160a01b031633146112dd5760405162461bcd60e51b8152600401610ba890613b25565b601b5483111580156112f15750601c548211155b80156112ff5750601d548111155b61130857600080fd5b611324816113168486613b70565b6113209190613b70565b111561132b57600080fd5b601892909255601955601a55565b6000546001600160a01b031633146113635760405162461bcd60e51b8152600401610ba890613b25565b603c5460ff161561137357600080fd5b602f80546001600160a01b03199081166001600160a01b03878116918217909355602e8054909216868416178255600090815260076020526040808220805460ff19908116600190811790925593549094168252902080549091169091179055600d6113df8382613cef565b50600e6113ec8282613cef565b50640ba43b7400600c556024805460ff1916601290811790915560255560255461141790600a613e93565b600c546114249190613bbd565b602681905561143590600019613e9f565b61144190600019613c5f565b602755602b54602980546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190613eb3565b6001600160a01b031663c9c65396602960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611525573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115499190613eb3565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015611595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b99190613eb3565b602a80546001600160a01b0319166001600160a01b039283169081179091556000908152600360209081526040808320805460ff19166001179055308352600582528083206029549094168352929052206000199055602654620186a090611623906103e8613bbd565b61162d9190613bf2565b603055600c54620186a090611644906101f4613bbd565b61164e9190613bf2565b6031556026546103e89061166390600a613bbd565b61166d9190613bf2565b603255600c546103e89061168290600a613bbd565b61168c9190613bf2565b603355602654612710906116a1906005613bbd565b6116ab9190613bf2565b6034556026546103e8906116c0906005613bbd565b6116ca9190613bf2565b603555602b546116e5906001600160a01b0316600019610c9f565b50603c805460ff1916600190811790915560275490600061170e6000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000205561173a6000546001600160a01b031690565b602d546026546040519081526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360295461179d9030906001600160a01b0316600019612353565b50505050565b6000546001600160a01b031633146117cd5760405162461bcd60e51b8152600401610ba890613b25565b6001600160a01b0381166117f35760405162461bcd60e51b8152600401610ba890613ed0565b602c546001600160a01b03908116908216036118215760405162461bcd60e51b8152600401610ba890613ed0565b6000805461183a916001600160a01b03909116906119b3565b6118458160016119b3565b611850816001610d8b565b600054602e546001600160a01b0391821691160361188457602e80546001600160a01b0319166001600160a01b0383161790555b600054611899906001600160a01b0316611a3d565b600080546001600160a01b0390811682526005602090815260408084208684168552909152822092909255805490916118d29116611a3d565b11156118f9576000546118f7906001600160a01b0316826118f282611a3d565b612477565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610cb082600019610c9f565b600080602554600a6119649190613e93565b61196e9084613bbd565b3360009081526006602052604090205490915061198b8482613b70565b336000818152600660205260409020919091556119a89083612887565b506001949350505050565b6000546001600160a01b031633146119dd5760405162461bcd60e51b8152600401610ba890613b25565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a325760405162461bcd60e51b8152600401610ba890613b25565b601e91909155601f55565b6001600160a01b03811660009081526008602052604081205460ff1615611a7a57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610cb0906111f8565b6000546001600160a01b03163314611ac65760405162461bcd60e51b8152600401610ba890613b25565b60008054611adf916001600160a01b03909116906119b3565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314611b455760405162461bcd60e51b8152600401610ba890613b25565b801515600003611b7157506001600160a01b03166000908152600360205260409020805460ff19169055565b60045415611bd85762093a8060045442611b8b9190613c5f565b11611bd85760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610ba8565b6001600160a01b0382166000908152600360205260409020805460ff19166001179055426004555050565b6060600e8054610c1c90613b83565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610cac9185906110c6908690613c5f565b60006110cb338484612477565b6000546001600160a01b03163314611c805760405162461bcd60e51b8152600401610ba890613b25565b602e546001600160a01b03808316911603611cd35760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610ba8565b602e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611d1f5760405162461bcd60e51b8152600401610ba890613b25565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611d59573d6000803e3d6000fd5b50565b6000546001600160a01b03163314611d865760405162461bcd60e51b8152600401610ba890613b25565b602f8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611dd390831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611e085760405162461bcd60e51b8152600401610ba890613b25565b60365460ff1615611e5b5760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720697320616c726561647920656e61626c65642100000000006044820152606401610ba8565b611e66306001610d8b565b602a54611e7d906001600160a01b03166001610d8b565b6036805460ff19166001179055602f805460ff60a81b1916600160a81b179055565b602e546001600160a01b0316336001600160a01b031614611f025760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c792044414f2043616e205570646174652074686520546f6b656e0000006044820152606401610ba8565b600d611f0e8382613cef565b50600e61107c8282613cef565b6000546001600160a01b03163314611f455760405162461bcd60e51b8152600401610ba890613b25565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fae9190613eb3565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f9190613eb3565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561206a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208e9190613eb3565b90506001600160a01b03811661220757816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121009190613eb3565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121719190613eb3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156121be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e29190613eb3565b602a80546001600160a01b0319166001600160a01b0392909216919091179055612223565b602a80546001600160a01b0319166001600160a01b0383161790555b602980546001600160a01b0319166001600160a01b03841617905561107c3084600019612353565b6000546001600160a01b031633146122755760405162461bcd60e51b8152600401610ba890613b25565b602f546001600160a01b038083169116036122c85760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610ba8565b602f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146123145760405162461bcd60e51b8152600401610ba890613b25565b82846026546123239190613bbd565b61232d9190613bf2565b6034556026548190612340908490613bbd565b61234a9190613bf2565b60355550505050565b6001600160a01b0383166123b55760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ba8565b6001600160a01b0382166124165760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ba8565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661249f5760405162461bcd60e51b8152600401610ba890613f2d565b6001600160a01b0383166125015760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f74207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ba8565b600082116125635760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ba8565b61256d84846129d2565b1561278c5760365460ff166125bf5760405162461bcd60e51b815260206004820152601860248201527754726164696e67206e6f742079657420656e61626c65642160401b6044820152606401610ba8565b60395460ff1615612683576001600160a01b03841660009081526003602052604090205460ff1615612639576125f6436001613b70565b6001600160a01b0384166000908152603a60205260409020540361261957600080fd5b6001600160a01b0383166000908152603a60205260409020439055612683565b612644436001613b70565b6001600160a01b0385166000908152603a60205260409020540361266757600080fd5b6001600160a01b0384166000908152603a602052604090204390555b6030548211156126df5760405162461bcd60e51b815260206004820152602160248201527f5472616e73666572206578636565647320746865206d61785478416d6f756e746044820152601760f91b6064820152608401610ba8565b602b546001600160a01b0384811691161480159061271657506001600160a01b03831660009081526003602052604090205460ff16155b1561278c576032548261272885611a3d565b6127329190613b70565b111561278c5760405162461bcd60e51b815260206004820152602360248201527f5472616e73666572206578636565647320746865206d617857616c6c657453696044820152623d329760e91b6064820152608401610ba8565b6001600160a01b03841660009081526007602052604090205460019060ff16806127ce57506001600160a01b03841660009081526007602052604090205460ff165b156127d7575060005b6001600160a01b03841660009081526003602052604090205460ff161561284f57602f54600160a01b900460ff1615801561281b5750602f54600160a81b900460ff165b1561284f57600061282b30611a3d565b9050603454811061284d57603554811061284457506035545b61284d81612ad9565b505b61285b85858584612e7d565b95945050505050565b60008060006128716131fe565b90925090506128808183613bf2565b9250505090565b6000806001600160a01b0384166128b05760405162461bcd60e51b8152600401610ba890613f2d565b6000831161290e5760405162461bcd60e51b815260206004820152602560248201527f4275726e20616d6f756e74206d7573742062652067726561746572207468616e604482015264207a65726f60d81b6064820152608401610ba8565b61291884826129d2565b1561296a5760365460ff1661296a5760405162461bcd60e51b815260206004820152601860248201527754726164696e67206e6f742079657420656e61626c65642160401b6044820152606401610ba8565b6001600160a01b03841660009081526007602052604090205460019060ff16806129ac57506001600160a01b03821660009081526007602052604090205460ff165b156129b5575060005b836026546129c39190613c5f565b60265561285b85838684612e7d565b600080546001600160a01b038481169116148015906129ff57506000546001600160a01b03838116911614155b8015612a2457506001600160a01b0382166000908152600b602052604090205460ff16155b8015612a4957506001600160a01b0383166000908152600b602052604090205460ff16155b8015612a635750602c546001600160a01b03838116911614155b8015612a7757506001600160a01b03821615155b8015612a8c57506001600160a01b0383163014155b8015612ab157506001600160a01b03821660009081526007602052604090205460ff16155b8015611275575050506001600160a01b031660009081526007602052604090205460ff161590565b602f805460ff60a01b1916600160a01b179055601f54601e54612afc9190613b70565b15612e6d5760006002601f54601e54612b159190613b70565b601e54612b229085613bbd565b612b2c9190613bf2565b612b369190613bf2565b90506000612b448284613c5f565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612b7e57612b7e613c49565b6001600160a01b03928316602091820292909201810191909152602954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfb9190613eb3565b81600181518110612c0e57612c0e613c49565b6001600160a01b03928316602091820292909201015260295460405163791ac94760e01b815291169063791ac94790612c54908590600090869030904290600401613f72565b600060405180830381600087803b158015612c6e57600080fd5b505af1158015612c82573d6000803e3d6000fd5b5050505060006002601f54601e54612c9a9190613b70565b601e54612ca79047613bbd565b612cb19190613bf2565b612cbb9190613bf2565b90508315612d9d57602954602e5460405163f305d71960e01b81523060048201526024810187905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612d33573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d589190613fe3565b505060408051868152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b6000612da98587613c5f565b1115612e68576021546023544791600091612dc49084613bf2565b612dce9190613bbd565b9050600060225460235484612de39190613bf2565b612ded9190613bbd565b602e546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612e28573d6000803e3d6000fd5b50602f546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612e63573d6000803e3d6000fd5b505050505b505050505b50602f805460ff60a01b19169055565b603654600090610100900460ff16612f1157612e998585613381565b603654610100900460ff16158015612eb65750612eb685856129d2565b15612f115760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610ba8565b6000612f1f8686868661348f565b60808101516001600160a01b038816600090815260016020526040902054919250612f4991613c5f565b6001600160a01b0380881660009081526001602052604080822093909355606084015191881681529190912054612f809190613b70565b6001600160a01b0380871660009081526001602090815260408083209490945591891681526008909152205460ff168015612fd457506001600160a01b03851660009081526008602052604090205460ff16155b1561301b576001600160a01b038616600090815260026020526040902054612ffd908590613c5f565b6001600160a01b03871660009081526002602052604090205561315b565b6001600160a01b03861660009081526008602052604090205460ff1615801561305c57506001600160a01b03851660009081526008602052604090205460ff165b156130a45780516001600160a01b0386166000908152600260205260409020546130869190613b70565b6001600160a01b03861660009081526002602052604090205561315b565b6001600160a01b03861660009081526008602052604090205460ff1680156130e457506001600160a01b03851660009081526008602052604090205460ff165b1561315b576001600160a01b03861660009081526002602052604090205461310d908590613c5f565b6001600160a01b03808816600090815260026020526040808220939093558351918816815291909120546131419190613b70565b6001600160a01b0386166000908152600260205260409020555b6040810151156131735761317386826040015161367f565b60008160a00151118061318a575060008160200151115b156131a1576131a18160a00151826020015161374b565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83600001516040516131ea91815260200190565b60405180910390a350600195945050505050565b6027546026546000918291825b600a54811015613350578260016000600a848154811061322d5761322d613c49565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061329857508160026000600a848154811061327157613271613c49565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156132ae57602754602654945094505050509091565b60016000600a83815481106132c5576132c5613c49565b60009182526020808320909101546001600160a01b031683528201929092526040019020546132f49084613c5f565b925060026000600a838154811061330d5761330d613c49565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461333c9083613c5f565b91508061334881613c88565b91505061320b565b506026546027546133619190613bf2565b821015613378576027546026549350935050509091565b90939092509050565b603654610100900460ff16156133d95760405162461bcd60e51b815260206004820152601b60248201527f4c697175696469747920697320616c72656164792061646465642e00000000006044820152606401610ba8565b6133e382826129d2565b1580156133fd5750602a546001600160a01b038281169116145b1561107e576001600160a01b0382166000908152600b602052604090819020805460ff191660019081179091556036805461ff00191661010017905542603855602f805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599161348391901515815260200190565b60405180910390a15050565b6134c86040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6135016040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600061350b612864565b90506135178186613bbd565b60808301528315613629576001600160a01b03861660009081526003602052604090205460ff161561355a57601654600f556015546010556017546011556135a5565b6001600160a01b03871660009081526003602052604090205460ff161561359257601254600f556013546010556014546011556135a5565b601854600f55601954601055601a546011555b602054600f546135b59087613bbd565b6135bf9190613bf2565b602080840191909152546011546010546135d99190613b70565b6135e39087613bbd565b6135ed9190613bf2565b6040830181905260208301516136039190613b70565b61360d9086613c5f565b8252602082015161361f908290613bbd565b60a0830152613642565b6000602083018190526040830181905285835260a08301525b8082604001516136529190613bbd565b8260a001516136619190613b70565b82608001516136709190613c5f565b60608301525095945050505050565b6000613689612864565b905060006136978284613bbd565b306000908152600160205260409020549091506136b5908290613b70565b3060009081526001602090815260408083209390935560089052205460ff161561370557306000908152600260205260409020546136f4908490613b70565b306000908152600260205260409020555b60405183815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b816027546137599190613c5f565b60275560285461376a908290613b70565b6028555050565b60008060006060848603121561378657600080fd5b505081359360208301359350604090920135919050565b600060208083528351808285015260005b818110156137ca578581018301518582016040015282016137ae565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d5957600080fd5b6000806040838503121561381357600080fd5b823561381e816137eb565b946020939093013593505050565b6000806040838503121561383f57600080fd5b50508035926020909101359150565b8035801515811461385e57600080fd5b919050565b6000806040838503121561387657600080fd5b8235613881816137eb565b915061388f6020840161384e565b90509250929050565b6000806000606084860312156138ad57600080fd5b83356138b8816137eb565b925060208401356138c8816137eb565b929592945050506040919091013590565b6000602082840312156138eb57600080fd5b5035919050565b60006020828403121561390457600080fd5b8135611275816137eb565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261393657600080fd5b813567ffffffffffffffff808211156139515761395161390f565b604051601f8301601f19908116603f011681019082821181831017156139795761397961390f565b8160405283815286602085880101111561399257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080608085870312156139c857600080fd5b84356139d3816137eb565b935060208501356139e3816137eb565b9250604085013567ffffffffffffffff80821115613a0057600080fd5b613a0c88838901613925565b93506060870135915080821115613a2257600080fd5b50613a2f87828801613925565b91505092959194509250565b600060208284031215613a4d57600080fd5b6112758261384e565b60008060408385031215613a6957600080fd5b823567ffffffffffffffff80821115613a8157600080fd5b613a8d86838701613925565b93506020850135915080821115613aa357600080fd5b50613ab085828601613925565b9150509250929050565b60008060408385031215613acd57600080fd5b8235613ad8816137eb565b91506020830135613ae8816137eb565b809150509250929050565b60008060008060808587031215613b0957600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610cb057610cb0613b5a565b600181811c90821680613b9757607f821691505b602082108103613bb757634e487b7160e01b600052602260045260246000fd5b50919050565b6000816000190483118215151615613bd757613bd7613b5a565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613c0157613c01613bdc565b500490565b60208082526023908201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604082015262363c9760e91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b81810381811115610cb057610cb0613b5a565b634e487b7160e01b600052603160045260246000fd5b600060018201613c9a57613c9a613b5a565b5060010190565b601f82111561107c57600081815260208120601f850160051c81016020861015613cc85750805b601f850160051c820191505b81811015613ce757828155600101613cd4565b505050505050565b815167ffffffffffffffff811115613d0957613d0961390f565b613d1d81613d178454613b83565b84613ca1565b602080601f831160018114613d525760008415613d3a5750858301515b600019600386901b1c1916600185901b178555613ce7565b600085815260208120601f198616915b82811015613d8157888601518255948401946001909101908401613d62565b5085821015613d9f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b80851115613dea578160001904821115613dd057613dd0613b5a565b80851615613ddd57918102915b93841c9390800290613db4565b509250929050565b600082613e0157506001610cb0565b81613e0e57506000610cb0565b8160018114613e245760028114613e2e57613e4a565b6001915050610cb0565b60ff841115613e3f57613e3f613b5a565b50506001821b610cb0565b5060208310610133831016604e8410600b8410161715613e6d575081810a610cb0565b613e778383613daf565b8060001904821115613e8b57613e8b613b5a565b029392505050565b60006112758383613df2565b600082613eae57613eae613bdc565b500690565b600060208284031215613ec557600080fd5b8151611275816137eb565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b60208082526025908201527f43616e6e6f74207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613fc25784516001600160a01b031683529383019391830191600101613f9d565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613ff857600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212200abe63972131306ef2628dcca44ab49e1b3778bbd1754288094b5b901001136d64736f6c63430008100033
Deployed Bytecode
0x6080604052600436106103c75760003560e01c80636612e66f116101f2578063b46def551161010d578063d9e66460116100a0578063eafb5a3c1161006f578063eafb5a3c14610b08578063f17b67fa14610b28578063fb78680d14610b48578063fb8bc55f14610b6857600080fd5b8063d9e6646014610a6c578063da37be2414610a8c578063dc99c74914610aa2578063dd62ed3e14610ac257600080fd5b8063c49b9a80116100dc578063c49b9a80146109eb578063cec18c7a14610a0b578063d74bda7a14610a20578063d874246714610a5657600080fd5b8063b46def5514610994578063bbd39ab2146109aa578063be5a4630146109bf578063c3183e7e146109d557600080fd5b806388f82020116101855780639a09a61b116101545780639a09a61b14610915578063a457c2d714610934578063a9059cbb14610954578063b1263c911461097457600080fd5b806388f82020146108a9578063893d20e8146108e25780638da5cb5b146108e257806395d89b411461090057600080fd5b80636ed515e6116101c15780636ed515e61461083e57806370a0823114610854578063715018a61461087457806380c581d11461088957600080fd5b80636612e66f146107d25780636639dd93146107f2578063668357da146108125780636aa7a0711461082857600080fd5b806337a9314f116102e25780634f6e7bb91161027557806358fa63ca1161024457806358fa63ca146107665780635b8e4046146107865780635e0f65841461079c5780635ec32bc8146107b257600080fd5b80634f6e7bb9146106fa5780634fb2e45d14610710578063571ac8b01461073057806358a142b91461075057600080fd5b806343a82b1f116102b157806343a82b1f14610679578063452ed4f11461069957806347f6b55f146106b95780634a74bb02146106d957600080fd5b806337a9314f146105f4578063384f6b511461062d5780633895aa2514610643578063395093511461065957600080fd5b806313114a9d1161035a57806328825ff11161032957806328825ff1146105725780632b962ec6146105925780632d838119146105b2578063313ce567146105d257600080fd5b806313114a9d1461050857806313e461921461051d57806318160ddd1461053d57806323b872dd1461055257600080fd5b8063095ea7b311610396578063095ea7b3146104745780630c2cdb0e146104a45780630cdc8226146104c4578063111be316146104e857600080fd5b806303fd2a45146103d3578063050a99421461041057806306fdde03146104325780630758d9241461045457600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b50602c546103f3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041c57600080fd5b5061043061042b366004613771565b610b7e565b005b34801561043e57600080fd5b50610447610c0d565b604051610407919061379d565b34801561046057600080fd5b506029546103f3906001600160a01b031681565b34801561048057600080fd5b5061049461048f366004613800565b610c9f565b6040519015158152602001610407565b3480156104b057600080fd5b506104306104bf36600461382c565b610cb6565b3480156104d057600080fd5b506104da60115481565b604051908152602001610407565b3480156104f457600080fd5b50610430610503366004613771565b610d53565b34801561051457600080fd5b506028546104da565b34801561052957600080fd5b50610430610538366004613863565b610d8b565b34801561054957600080fd5b506026546104da565b34801561055e57600080fd5b5061049461056d366004613898565b611082565b34801561057e57600080fd5b5061043061058d366004613771565b6110d5565b34801561059e57600080fd5b506104306105ad36600461382c565b61115b565b3480156105be57600080fd5b506104da6105cd3660046138d9565b6111f8565b3480156105de57600080fd5b5060245460405160ff9091168152602001610407565b34801561060057600080fd5b5061049461060f3660046138f2565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561063957600080fd5b506104da601e5481565b34801561064f57600080fd5b506104da60105481565b34801561066557600080fd5b50610494610674366004613800565b61127c565b34801561068557600080fd5b50610430610694366004613771565b6112b3565b3480156106a557600080fd5b50602a546103f3906001600160a01b031681565b3480156106c557600080fd5b506104306106d43660046139b2565b611339565b3480156106e557600080fd5b50602f5461049490600160a81b900460ff1681565b34801561070657600080fd5b506104da601f5481565b34801561071c57600080fd5b5061043061072b3660046138f2565b6117a3565b34801561073c57600080fd5b5061049461074b3660046138f2565b611944565b34801561075c57600080fd5b506104da60315481565b34801561077257600080fd5b50602d546103f3906001600160a01b031681565b34801561079257600080fd5b506104da60135481565b3480156107a857600080fd5b506104da60335481565b3480156107be57600080fd5b506104946107cd3660046138d9565b611952565b3480156107de57600080fd5b506104306107ed366004613863565b6119b3565b3480156107fe57600080fd5b5061043061080d36600461382c565b611a08565b34801561081e57600080fd5b506104da600f5481565b34801561083457600080fd5b506104da60165481565b34801561084a57600080fd5b506104da60175481565b34801561086057600080fd5b506104da61086f3660046138f2565b611a3d565b34801561088057600080fd5b50610430611a9c565b34801561089557600080fd5b506104306108a4366004613863565b611b1b565b3480156108b557600080fd5b506104946108c43660046138f2565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156108ee57600080fd5b506000546001600160a01b03166103f3565b34801561090c57600080fd5b50610447611c03565b34801561092157600080fd5b5060365461049490610100900460ff1681565b34801561094057600080fd5b5061049461094f366004613800565b611c12565b34801561096057600080fd5b5061049461096f366004613800565b611c49565b34801561098057600080fd5b5061043061098f3660046138f2565b611c56565b3480156109a057600080fd5b506104da60195481565b3480156109b657600080fd5b50610430611cf5565b3480156109cb57600080fd5b506104da60145481565b3480156109e157600080fd5b506104da60185481565b3480156109f757600080fd5b50610430610a06366004613a3b565b611d5c565b348015610a1757600080fd5b50610430611dde565b348015610a2c57600080fd5b506104da610a3b3660046138f2565b6001600160a01b031660009081526006602052604090205490565b348015610a6257600080fd5b506104da60125481565b348015610a7857600080fd5b50602b546103f3906001600160a01b031681565b348015610a9857600080fd5b506104da601a5481565b348015610aae57600080fd5b50610430610abd366004613a56565b611e9f565b348015610ace57600080fd5b506104da610add366004613aba565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610b1457600080fd5b50610430610b233660046138f2565b611f1b565b348015610b3457600080fd5b50610430610b433660046138f2565b61224b565b348015610b5457600080fd5b50610430610b63366004613af3565b6122ea565b348015610b7457600080fd5b506104da60155481565b6000546001600160a01b03163314610bb15760405162461bcd60e51b8152600401610ba890613b25565b60405180910390fd5b601b548311158015610bc55750601c548211155b8015610bd35750601d548111155b610bdc57600080fd5b61132481610bea8486613b70565b610bf49190613b70565b1115610bff57600080fd5b601692909255601555601755565b6060600d8054610c1c90613b83565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4890613b83565b8015610c955780601f10610c6a57610100808354040283529160200191610c95565b820191906000526020600020905b815481529060010190602001808311610c7857829003601f168201915b5050505050905090565b6000610cac338484612353565b5060015b92915050565b6000546001600160a01b03163314610ce05760405162461bcd60e51b8152600401610ba890613b25565b60008183602654610cf19190613bbd565b610cfb9190613bf2565b90506103e8602654610d0d9190613bf2565b811015610d2c5760405162461bcd60e51b8152600401610ba890613c06565b6030819055600c548290610d41908590613bbd565b610d4b9190613bf2565b603155505050565b6000546001600160a01b03163314610d7d5760405162461bcd60e51b8152600401610ba890613b25565b602192909255602255602355565b6000546001600160a01b03163314610db55760405162461bcd60e51b8152600401610ba890613b25565b801515600103610ee9576001600160a01b03821660009081526008602052604090205460ff1615610e285760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610ba8565b6001600160a01b03821660009081526001602052604090205415610e82576001600160a01b038216600090815260016020526040902054610e68906111f8565b6001600160a01b0383166000908152600260205260409020555b506001600160a01b03166000818152600860205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b80151560000361107e576001600160a01b03821660009081526008602052604090205460ff16610f5b5760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610ba8565b60005b600a5481101561107c57826001600160a01b0316600a8281548110610f8557610f85613c49565b6000918252602090912001546001600160a01b03160361106a57600a8054610faf90600190613c5f565b81548110610fbf57610fbf613c49565b600091825260209091200154600a80546001600160a01b039092169183908110610feb57610feb613c49565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600282526040808220829055600890925220805460ff19169055600a80548061104357611043613c72565b600082815260209020810160001990810180546001600160a01b031916905501905561107c565b8061107481613c88565b915050610f5e565b505b5050565b600061108f848484612477565b506001600160a01b0384166000908152600560209081526040808320338085529252909120546110cb9186916110c6908690613c5f565b612353565b5060019392505050565b6000546001600160a01b031633146110ff5760405162461bcd60e51b8152600401610ba890613b25565b601b5483111580156111135750601c548211155b80156111215750601d548111155b61112a57600080fd5b611324816111388486613b70565b6111429190613b70565b111561114d57600080fd5b601292909255601355601455565b6000546001600160a01b031633146111855760405162461bcd60e51b8152600401610ba890613b25565b600081836026546111969190613bbd565b6111a09190613bf2565b90506103e86026546111b29190613bf2565b8110156111d15760405162461bcd60e51b8152600401610ba890613c06565b6032819055600c5482906111e6908590613bbd565b6111f09190613bf2565b603355505050565b600060275482111561125f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ba8565b6000611269612864565b90506112758184613bf2565b9392505050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610cac9185906110c6908690613b70565b6000546001600160a01b031633146112dd5760405162461bcd60e51b8152600401610ba890613b25565b601b5483111580156112f15750601c548211155b80156112ff5750601d548111155b61130857600080fd5b611324816113168486613b70565b6113209190613b70565b111561132b57600080fd5b601892909255601955601a55565b6000546001600160a01b031633146113635760405162461bcd60e51b8152600401610ba890613b25565b603c5460ff161561137357600080fd5b602f80546001600160a01b03199081166001600160a01b03878116918217909355602e8054909216868416178255600090815260076020526040808220805460ff19908116600190811790925593549094168252902080549091169091179055600d6113df8382613cef565b50600e6113ec8282613cef565b50640ba43b7400600c556024805460ff1916601290811790915560255560255461141790600a613e93565b600c546114249190613bbd565b602681905561143590600019613e9f565b61144190600019613c5f565b602755602b54602980546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190613eb3565b6001600160a01b031663c9c65396602960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611525573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115499190613eb3565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015611595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b99190613eb3565b602a80546001600160a01b0319166001600160a01b039283169081179091556000908152600360209081526040808320805460ff19166001179055308352600582528083206029549094168352929052206000199055602654620186a090611623906103e8613bbd565b61162d9190613bf2565b603055600c54620186a090611644906101f4613bbd565b61164e9190613bf2565b6031556026546103e89061166390600a613bbd565b61166d9190613bf2565b603255600c546103e89061168290600a613bbd565b61168c9190613bf2565b603355602654612710906116a1906005613bbd565b6116ab9190613bf2565b6034556026546103e8906116c0906005613bbd565b6116ca9190613bf2565b603555602b546116e5906001600160a01b0316600019610c9f565b50603c805460ff1916600190811790915560275490600061170e6000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000205561173a6000546001600160a01b031690565b602d546026546040519081526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a360295461179d9030906001600160a01b0316600019612353565b50505050565b6000546001600160a01b031633146117cd5760405162461bcd60e51b8152600401610ba890613b25565b6001600160a01b0381166117f35760405162461bcd60e51b8152600401610ba890613ed0565b602c546001600160a01b03908116908216036118215760405162461bcd60e51b8152600401610ba890613ed0565b6000805461183a916001600160a01b03909116906119b3565b6118458160016119b3565b611850816001610d8b565b600054602e546001600160a01b0391821691160361188457602e80546001600160a01b0319166001600160a01b0383161790555b600054611899906001600160a01b0316611a3d565b600080546001600160a01b0390811682526005602090815260408084208684168552909152822092909255805490916118d29116611a3d565b11156118f9576000546118f7906001600160a01b0316826118f282611a3d565b612477565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610cb082600019610c9f565b600080602554600a6119649190613e93565b61196e9084613bbd565b3360009081526006602052604090205490915061198b8482613b70565b336000818152600660205260409020919091556119a89083612887565b506001949350505050565b6000546001600160a01b031633146119dd5760405162461bcd60e51b8152600401610ba890613b25565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a325760405162461bcd60e51b8152600401610ba890613b25565b601e91909155601f55565b6001600160a01b03811660009081526008602052604081205460ff1615611a7a57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610cb0906111f8565b6000546001600160a01b03163314611ac65760405162461bcd60e51b8152600401610ba890613b25565b60008054611adf916001600160a01b03909116906119b3565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314611b455760405162461bcd60e51b8152600401610ba890613b25565b801515600003611b7157506001600160a01b03166000908152600360205260409020805460ff19169055565b60045415611bd85762093a8060045442611b8b9190613c5f565b11611bd85760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610ba8565b6001600160a01b0382166000908152600360205260409020805460ff19166001179055426004555050565b6060600e8054610c1c90613b83565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610cac9185906110c6908690613c5f565b60006110cb338484612477565b6000546001600160a01b03163314611c805760405162461bcd60e51b8152600401610ba890613b25565b602e546001600160a01b03808316911603611cd35760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610ba8565b602e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611d1f5760405162461bcd60e51b8152600401610ba890613b25565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611d59573d6000803e3d6000fd5b50565b6000546001600160a01b03163314611d865760405162461bcd60e51b8152600401610ba890613b25565b602f8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611dd390831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611e085760405162461bcd60e51b8152600401610ba890613b25565b60365460ff1615611e5b5760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720697320616c726561647920656e61626c65642100000000006044820152606401610ba8565b611e66306001610d8b565b602a54611e7d906001600160a01b03166001610d8b565b6036805460ff19166001179055602f805460ff60a81b1916600160a81b179055565b602e546001600160a01b0316336001600160a01b031614611f025760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c792044414f2043616e205570646174652074686520546f6b656e0000006044820152606401610ba8565b600d611f0e8382613cef565b50600e61107c8282613cef565b6000546001600160a01b03163314611f455760405162461bcd60e51b8152600401610ba890613b25565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fae9190613eb3565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f9190613eb3565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561206a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208e9190613eb3565b90506001600160a01b03811661220757816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121009190613eb3565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121719190613eb3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156121be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e29190613eb3565b602a80546001600160a01b0319166001600160a01b0392909216919091179055612223565b602a80546001600160a01b0319166001600160a01b0383161790555b602980546001600160a01b0319166001600160a01b03841617905561107c3084600019612353565b6000546001600160a01b031633146122755760405162461bcd60e51b8152600401610ba890613b25565b602f546001600160a01b038083169116036122c85760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610ba8565b602f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146123145760405162461bcd60e51b8152600401610ba890613b25565b82846026546123239190613bbd565b61232d9190613bf2565b6034556026548190612340908490613bbd565b61234a9190613bf2565b60355550505050565b6001600160a01b0383166123b55760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ba8565b6001600160a01b0382166124165760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ba8565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661249f5760405162461bcd60e51b8152600401610ba890613f2d565b6001600160a01b0383166125015760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f74207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ba8565b600082116125635760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ba8565b61256d84846129d2565b1561278c5760365460ff166125bf5760405162461bcd60e51b815260206004820152601860248201527754726164696e67206e6f742079657420656e61626c65642160401b6044820152606401610ba8565b60395460ff1615612683576001600160a01b03841660009081526003602052604090205460ff1615612639576125f6436001613b70565b6001600160a01b0384166000908152603a60205260409020540361261957600080fd5b6001600160a01b0383166000908152603a60205260409020439055612683565b612644436001613b70565b6001600160a01b0385166000908152603a60205260409020540361266757600080fd5b6001600160a01b0384166000908152603a602052604090204390555b6030548211156126df5760405162461bcd60e51b815260206004820152602160248201527f5472616e73666572206578636565647320746865206d61785478416d6f756e746044820152601760f91b6064820152608401610ba8565b602b546001600160a01b0384811691161480159061271657506001600160a01b03831660009081526003602052604090205460ff16155b1561278c576032548261272885611a3d565b6127329190613b70565b111561278c5760405162461bcd60e51b815260206004820152602360248201527f5472616e73666572206578636565647320746865206d617857616c6c657453696044820152623d329760e91b6064820152608401610ba8565b6001600160a01b03841660009081526007602052604090205460019060ff16806127ce57506001600160a01b03841660009081526007602052604090205460ff165b156127d7575060005b6001600160a01b03841660009081526003602052604090205460ff161561284f57602f54600160a01b900460ff1615801561281b5750602f54600160a81b900460ff165b1561284f57600061282b30611a3d565b9050603454811061284d57603554811061284457506035545b61284d81612ad9565b505b61285b85858584612e7d565b95945050505050565b60008060006128716131fe565b90925090506128808183613bf2565b9250505090565b6000806001600160a01b0384166128b05760405162461bcd60e51b8152600401610ba890613f2d565b6000831161290e5760405162461bcd60e51b815260206004820152602560248201527f4275726e20616d6f756e74206d7573742062652067726561746572207468616e604482015264207a65726f60d81b6064820152608401610ba8565b61291884826129d2565b1561296a5760365460ff1661296a5760405162461bcd60e51b815260206004820152601860248201527754726164696e67206e6f742079657420656e61626c65642160401b6044820152606401610ba8565b6001600160a01b03841660009081526007602052604090205460019060ff16806129ac57506001600160a01b03821660009081526007602052604090205460ff165b156129b5575060005b836026546129c39190613c5f565b60265561285b85838684612e7d565b600080546001600160a01b038481169116148015906129ff57506000546001600160a01b03838116911614155b8015612a2457506001600160a01b0382166000908152600b602052604090205460ff16155b8015612a4957506001600160a01b0383166000908152600b602052604090205460ff16155b8015612a635750602c546001600160a01b03838116911614155b8015612a7757506001600160a01b03821615155b8015612a8c57506001600160a01b0383163014155b8015612ab157506001600160a01b03821660009081526007602052604090205460ff16155b8015611275575050506001600160a01b031660009081526007602052604090205460ff161590565b602f805460ff60a01b1916600160a01b179055601f54601e54612afc9190613b70565b15612e6d5760006002601f54601e54612b159190613b70565b601e54612b229085613bbd565b612b2c9190613bf2565b612b369190613bf2565b90506000612b448284613c5f565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612b7e57612b7e613c49565b6001600160a01b03928316602091820292909201810191909152602954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfb9190613eb3565b81600181518110612c0e57612c0e613c49565b6001600160a01b03928316602091820292909201015260295460405163791ac94760e01b815291169063791ac94790612c54908590600090869030904290600401613f72565b600060405180830381600087803b158015612c6e57600080fd5b505af1158015612c82573d6000803e3d6000fd5b5050505060006002601f54601e54612c9a9190613b70565b601e54612ca79047613bbd565b612cb19190613bf2565b612cbb9190613bf2565b90508315612d9d57602954602e5460405163f305d71960e01b81523060048201526024810187905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612d33573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d589190613fe3565b505060408051868152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b6000612da98587613c5f565b1115612e68576021546023544791600091612dc49084613bf2565b612dce9190613bbd565b9050600060225460235484612de39190613bf2565b612ded9190613bbd565b602e546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612e28573d6000803e3d6000fd5b50602f546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612e63573d6000803e3d6000fd5b505050505b505050505b50602f805460ff60a01b19169055565b603654600090610100900460ff16612f1157612e998585613381565b603654610100900460ff16158015612eb65750612eb685856129d2565b15612f115760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610ba8565b6000612f1f8686868661348f565b60808101516001600160a01b038816600090815260016020526040902054919250612f4991613c5f565b6001600160a01b0380881660009081526001602052604080822093909355606084015191881681529190912054612f809190613b70565b6001600160a01b0380871660009081526001602090815260408083209490945591891681526008909152205460ff168015612fd457506001600160a01b03851660009081526008602052604090205460ff16155b1561301b576001600160a01b038616600090815260026020526040902054612ffd908590613c5f565b6001600160a01b03871660009081526002602052604090205561315b565b6001600160a01b03861660009081526008602052604090205460ff1615801561305c57506001600160a01b03851660009081526008602052604090205460ff165b156130a45780516001600160a01b0386166000908152600260205260409020546130869190613b70565b6001600160a01b03861660009081526002602052604090205561315b565b6001600160a01b03861660009081526008602052604090205460ff1680156130e457506001600160a01b03851660009081526008602052604090205460ff165b1561315b576001600160a01b03861660009081526002602052604090205461310d908590613c5f565b6001600160a01b03808816600090815260026020526040808220939093558351918816815291909120546131419190613b70565b6001600160a01b0386166000908152600260205260409020555b6040810151156131735761317386826040015161367f565b60008160a00151118061318a575060008160200151115b156131a1576131a18160a00151826020015161374b565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83600001516040516131ea91815260200190565b60405180910390a350600195945050505050565b6027546026546000918291825b600a54811015613350578260016000600a848154811061322d5761322d613c49565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061329857508160026000600a848154811061327157613271613c49565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156132ae57602754602654945094505050509091565b60016000600a83815481106132c5576132c5613c49565b60009182526020808320909101546001600160a01b031683528201929092526040019020546132f49084613c5f565b925060026000600a838154811061330d5761330d613c49565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461333c9083613c5f565b91508061334881613c88565b91505061320b565b506026546027546133619190613bf2565b821015613378576027546026549350935050509091565b90939092509050565b603654610100900460ff16156133d95760405162461bcd60e51b815260206004820152601b60248201527f4c697175696469747920697320616c72656164792061646465642e00000000006044820152606401610ba8565b6133e382826129d2565b1580156133fd5750602a546001600160a01b038281169116145b1561107e576001600160a01b0382166000908152600b602052604090819020805460ff191660019081179091556036805461ff00191661010017905542603855602f805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599161348391901515815260200190565b60405180910390a15050565b6134c86040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6135016040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600061350b612864565b90506135178186613bbd565b60808301528315613629576001600160a01b03861660009081526003602052604090205460ff161561355a57601654600f556015546010556017546011556135a5565b6001600160a01b03871660009081526003602052604090205460ff161561359257601254600f556013546010556014546011556135a5565b601854600f55601954601055601a546011555b602054600f546135b59087613bbd565b6135bf9190613bf2565b602080840191909152546011546010546135d99190613b70565b6135e39087613bbd565b6135ed9190613bf2565b6040830181905260208301516136039190613b70565b61360d9086613c5f565b8252602082015161361f908290613bbd565b60a0830152613642565b6000602083018190526040830181905285835260a08301525b8082604001516136529190613bbd565b8260a001516136619190613b70565b82608001516136709190613c5f565b60608301525095945050505050565b6000613689612864565b905060006136978284613bbd565b306000908152600160205260409020549091506136b5908290613b70565b3060009081526001602090815260408083209390935560089052205460ff161561370557306000908152600260205260409020546136f4908490613b70565b306000908152600260205260409020555b60405183815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b816027546137599190613c5f565b60275560285461376a908290613b70565b6028555050565b60008060006060848603121561378657600080fd5b505081359360208301359350604090920135919050565b600060208083528351808285015260005b818110156137ca578581018301518582016040015282016137ae565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d5957600080fd5b6000806040838503121561381357600080fd5b823561381e816137eb565b946020939093013593505050565b6000806040838503121561383f57600080fd5b50508035926020909101359150565b8035801515811461385e57600080fd5b919050565b6000806040838503121561387657600080fd5b8235613881816137eb565b915061388f6020840161384e565b90509250929050565b6000806000606084860312156138ad57600080fd5b83356138b8816137eb565b925060208401356138c8816137eb565b929592945050506040919091013590565b6000602082840312156138eb57600080fd5b5035919050565b60006020828403121561390457600080fd5b8135611275816137eb565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261393657600080fd5b813567ffffffffffffffff808211156139515761395161390f565b604051601f8301601f19908116603f011681019082821181831017156139795761397961390f565b8160405283815286602085880101111561399257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080608085870312156139c857600080fd5b84356139d3816137eb565b935060208501356139e3816137eb565b9250604085013567ffffffffffffffff80821115613a0057600080fd5b613a0c88838901613925565b93506060870135915080821115613a2257600080fd5b50613a2f87828801613925565b91505092959194509250565b600060208284031215613a4d57600080fd5b6112758261384e565b60008060408385031215613a6957600080fd5b823567ffffffffffffffff80821115613a8157600080fd5b613a8d86838701613925565b93506020850135915080821115613aa357600080fd5b50613ab085828601613925565b9150509250929050565b60008060408385031215613acd57600080fd5b8235613ad8816137eb565b91506020830135613ae8816137eb565b809150509250929050565b60008060008060808587031215613b0957600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610cb057610cb0613b5a565b600181811c90821680613b9757607f821691505b602082108103613bb757634e487b7160e01b600052602260045260246000fd5b50919050565b6000816000190483118215151615613bd757613bd7613b5a565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613c0157613c01613bdc565b500490565b60208082526023908201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604082015262363c9760e91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b81810381811115610cb057610cb0613b5a565b634e487b7160e01b600052603160045260246000fd5b600060018201613c9a57613c9a613b5a565b5060010190565b601f82111561107c57600081815260208120601f850160051c81016020861015613cc85750805b601f850160051c820191505b81811015613ce757828155600101613cd4565b505050505050565b815167ffffffffffffffff811115613d0957613d0961390f565b613d1d81613d178454613b83565b84613ca1565b602080601f831160018114613d525760008415613d3a5750858301515b600019600386901b1c1916600185901b178555613ce7565b600085815260208120601f198616915b82811015613d8157888601518255948401946001909101908401613d62565b5085821015613d9f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b80851115613dea578160001904821115613dd057613dd0613b5a565b80851615613ddd57918102915b93841c9390800290613db4565b509250929050565b600082613e0157506001610cb0565b81613e0e57506000610cb0565b8160018114613e245760028114613e2e57613e4a565b6001915050610cb0565b60ff841115613e3f57613e3f613b5a565b50506001821b610cb0565b5060208310610133831016604e8410600b8410161715613e6d575081810a610cb0565b613e778383613daf565b8060001904821115613e8b57613e8b613b5a565b029392505050565b60006112758383613df2565b600082613eae57613eae613bdc565b500690565b600060208284031215613ec557600080fd5b8151611275816137eb565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b60208082526025908201527f43616e6e6f74207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613fc25784516001600160a01b031683529383019391830191600101613f9d565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613ff857600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212200abe63972131306ef2628dcca44ab49e1b3778bbd1754288094b5b901001136d64736f6c63430008100033
Deployed Bytecode Sourcemap
6053:23323:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7733:64;;;;;;;;;;-1:-1:-1;7733:64:0;;;;-1:-1:-1;;;;;7733:64:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;7733:64:0;;;;;;;;16285:373;;;;;;;;;;-1:-1:-1;16285:373:0;;;;;:::i;:::-;;:::i;:::-;;12690:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7624:35::-;;;;;;;;;;-1:-1:-1;7624:35:0;;;;-1:-1:-1;;;;;7624:35:0;;;13747:161;;;;;;;;;;-1:-1:-1;13747:161:0;;;;;:::i;:::-;;:::i;:::-;;;1951:14:1;;1944:22;1926:41;;1914:2;1899:18;13747:161:0;1786:187:1;17350:283:0;;;;;;;;;;-1:-1:-1;17350:283:0;;;;;:::i;:::-;;:::i;6803:25::-;;;;;;;;;;;;;;;;;;;2377::1;;;2365:2;2350:18;6803:25:0;2231:177:1;17047:139:0;;;;;;;;;;-1:-1:-1;17047:139:0;;;;;:::i;:::-;;:::i;19746:87::-;;;;;;;;;;-1:-1:-1;19815:10:0;;19746:87;;18876:862;;;;;;;;;;-1:-1:-1;18876:862:0;;;;;:::i;:::-;;:::i;12446:83::-;;;;;;;;;;-1:-1:-1;12519:7:0;;12446:83;;14044:252;;;;;;;;;;-1:-1:-1;14044:252:0;;;;;:::i;:::-;;:::i;15904:373::-;;;;;;;;;;-1:-1:-1;15904:373:0;;;;;:::i;:::-;;:::i;17641:248::-;;;;;;;;;;-1:-1:-1;17641:248:0;;;;;:::i;:::-;;:::i;20098:250::-;;;;;;;;;;-1:-1:-1;20098:250:0;;;;;:::i;:::-;;:::i;12536:71::-;;;;;;;;;;-1:-1:-1;12595:9:0;;12536:71;;12595:9;;;;3686:36:1;;3674:2;3659:18;12536:71:0;3544:184:1;15799:97:0;;;;;;;;;;-1:-1:-1;15799:97:0;;;;;:::i;:::-;-1:-1:-1;;;;;15874:14:0;15850:4;15874:14;;;:5;:14;;;;;;;;;15799:97;7201:36;;;;;;;;;;;;;;;;6776:25;;;;;;;;;;;;;;;;14304:208;;;;;;;;;;-1:-1:-1;14304:208:0;;;;;:::i;:::-;;:::i;16666:373::-;;;;;;;;;;-1:-1:-1;16666:373:0;;;;;:::i;:::-;;:::i;7667:21::-;;;;;;;;;;-1:-1:-1;7667:21:0;;;;-1:-1:-1;;;;;7667:21:0;;;9919:1455;;;;;;;;;;-1:-1:-1;9919:1455:0;;;;;:::i;:::-;;:::i;7986:41::-;;;;;;;;;;-1:-1:-1;7986:41:0;;;;-1:-1:-1;;;7986:41:0;;;;;;7244:24;;;;;;;;;;;;;;;;11469:767;;;;;;;;;;-1:-1:-1;11469:767:0;;;;;:::i;:::-;;:::i;13916:120::-;;;;;;;;;;-1:-1:-1;13916:120:0;;;;;:::i;:::-;;:::i;8063:20::-;;;;;;;;;;;;;;;;7805:64;;;;;;;;;;-1:-1:-1;7805:64:0;;;;-1:-1:-1;;;;;7805:64:0;;;6865:27;;;;;;;;;;;;;;;;8118:20;;;;;;;;;;;;;;;;13453:286;;;;;;;;;;-1:-1:-1;13453:286:0;;;;;:::i;:::-;;:::i;18749:119::-;;;;;;;;;;-1:-1:-1;18749:119:0;;;;;:::i;:::-;;:::i;17194:148::-;;;;;;;;;;-1:-1:-1;17194:148:0;;;;;:::i;:::-;;:::i;6749:25::-;;;;;;;;;;;;;;;;6956:26;;;;;;;;;;;;;;;;6984;;;;;;;;;;;;;;;;12976:184;;;;;;;;;;-1:-1:-1;12976:184:0;;;;;:::i;:::-;;:::i;12244:194::-;;;;;;;;;;;;;:::i;15292:379::-;;;;;;;;;;-1:-1:-1;15292:379:0;;;;;:::i;:::-;;:::i;15679:112::-;;;;;;;;;;-1:-1:-1;15679:112:0;;;;;:::i;:::-;-1:-1:-1;;;;;15771:12:0;15747:4;15771:12;;;:3;:12;;;;;;;;;15679:112;12765:71;;;;;;;;;;-1:-1:-1;12808:7:0;11447:6;-1:-1:-1;;;;;11447:6:0;12765:71;;12613:70;;;;;;;;;;;;;:::i;8237:36::-;;;;;;;;;;-1:-1:-1;8237:36:0;;;;;;;;;;;14520:218;;;;;;;;;;-1:-1:-1;14520:218:0;;;;;:::i;:::-;;:::i;13285:160::-;;;;;;;;;;-1:-1:-1;13285:160:0;;;;;:::i;:::-;;:::i;18398:166::-;;;;;;;;;;-1:-1:-1;18398:166:0;;;;;:::i;:::-;;:::i;7044:24::-;;;;;;;;;;;;;;;;28844:114;;;;;;;;;;;;;:::i;6894:27::-;;;;;;;;;;;;;;;;7018:24;;;;;;;;;;;;;;;;18570:171;;;;;;;;;;-1:-1:-1;18570:171:0;;;;;:::i;:::-;;:::i;24867:259::-;;;;;;;;;;;;;:::i;13168:109::-;;;;;;;;;;-1:-1:-1;13168:109:0;;;;;:::i;:::-;-1:-1:-1;;;;;13256:12:0;13228:7;13256:12;;;:3;:12;;;;;;;13168:109;6836:27;;;;;;;;;;;;;;;;7696:29;;;;;;;;;;-1:-1:-1;7696:29:0;;;;-1:-1:-1;;;;;7696:29:0;;;7070:24;;;;;;;;;;;;;;;;26529:185;;;;;;;;;;-1:-1:-1;26529:185:0;;;;;:::i;:::-;;:::i;12842:126::-;;;;;;;;;;-1:-1:-1;12842:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;12944:12:0;;;12926:7;12944:12;;;:4;:12;;;;;;;;:21;;;;;;;;;;;;;12842:126;14746:538;;;;;;;;;;-1:-1:-1;14746:538:0;;;;;:::i;:::-;;:::i;18194:196::-;;;;;;;;;;-1:-1:-1;18194:196:0;;;;;:::i;:::-;;:::i;17897:289::-;;;;;;;;;;-1:-1:-1;17897:289:0;;;;;:::i;:::-;;:::i;6928:26::-;;;;;;;;;;;;;;;;16285:373;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;;;;;;;;;16404:6:::1;;16393:7;:17;;:57;;;;;16444:6;;16431:9;:19;;16393:57;:97;;;;;16484:6;;16471:9;:19;;16393:97;16385:124;;;::::0;::::1;;16563:4;16550:9:::0;16528:19:::1;16538:9:::0;16528:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;16520:48;;;::::0;::::1;;16579:5;:15:::0;;;;16605:5:::1;:17:::0;16633:5:::1;:17:::0;16285:373::o;12690:69::-;12729:13;12753:3;12746:10;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12690:69;:::o;13747:161::-;13822:4;13839:39;194:10;13862:7;13871:6;13839:8;:39::i;:::-;-1:-1:-1;13896:4:0;13747:161;;;;;:::o;17350:283::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;17430:13:::1;17468:7;17457;17447;;:17;;;;:::i;:::-;17446:29;;;;:::i;:::-;17430:45;;17514:4;17504:7;;:14;;;;:::i;:::-;17494:5;:25;;17486:73;;;;-1:-1:-1::0;;;17486:73:0::1;;;;;;;:::i;:::-;17570:4;:12:::0;;;17602:2:::1;::::0;17618:7;;17602:12:::1;::::0;17607:7;;17602:12:::1;:::i;:::-;17601:24;;;;:::i;:::-;17593:5;:32:::0;-1:-1:-1;;;17350:283:0:o;17047:139::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;17132:3:::1;:8:::0;;;;17151:3:::1;:8:::0;17170:3:::1;:8:::0;17047:139::o;18876:862::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;18970:15;::::1;;18981:4;18970:15:::0;18966:765:::1;;-1:-1:-1::0;;;;;19011:12:0;::::1;;::::0;;;:3:::1;:12;::::0;;;;;::::1;;19010:13;19002:54;;;::::0;-1:-1:-1;;;19002:54:0;;9502:2:1;19002:54:0::1;::::0;::::1;9484:21:1::0;9541:2;9521:18;;;9514:30;9580;9560:18;;;9553:58;9628:18;;19002:54:0::1;9300:352:1::0;19002:54:0::1;-1:-1:-1::0;;;;;19074:13:0;::::1;19090:1;19074:13:::0;;;:4:::1;:13;::::0;;;;;:17;19071:107:::1;;-1:-1:-1::0;;;;;19148:13:0;::::1;;::::0;;;:4:::1;:13;::::0;;;;;19128:34:::1;::::0;:19:::1;:34::i;:::-;-1:-1:-1::0;;;;;19112:13:0;::::1;;::::0;;;:4:::1;:13;::::0;;;;:50;19071:107:::1;-1:-1:-1::0;;;;;;19192:12:0::1;;::::0;;;:3:::1;:12;::::0;;;;:19;;-1:-1:-1;;19192:19:0::1;19207:4;19192:19:::0;;::::1;::::0;;;19226:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;19226:23:0::1;::::0;;::::1;::::0;;18876:862::o;18966:765::-:1;19271:16:::0;::::1;;19282:5;19271:16:::0;19267:464:::1;;-1:-1:-1::0;;;;;19312:12:0;::::1;;::::0;;;:3:::1;:12;::::0;;;;;::::1;;19304:53;;;::::0;-1:-1:-1;;;19304:53:0;;9859:2:1;19304:53:0::1;::::0;::::1;9841:21:1::0;9898:2;9878:18;;;9871:30;9937;9917:18;;;9910:58;9985:18;;19304:53:0::1;9657:352:1::0;19304:53:0::1;19377:9;19372:348;19396:9;:16:::0;19392:20;::::1;19372:348;;;19458:7;-1:-1:-1::0;;;;;19442:23:0::1;:9;19452:1;19442:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;19442:12:0::1;:23:::0;19438:267:::1;;19505:9;19515:16:::0;;:20:::1;::::0;19534:1:::1;::::0;19515:20:::1;:::i;:::-;19505:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;19490:9:::1;:12:::0;;-1:-1:-1;;;;;19505:31:0;;::::1;::::0;19500:1;;19490:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;19490:46:0::1;-1:-1:-1::0;;;;;19490:46:0;;::::1;;::::0;;19559:13;;::::1;::::0;;:4:::1;:13:::0;;;;;;:17;;;19599:3:::1;:12:::0;;;;:20;;-1:-1:-1;;19599:20:0::1;::::0;;19642:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;19642:15:0;;;;;-1:-1:-1;;;;;;19642:15:0::1;::::0;;;;;19680:5:::1;;19438:267;19414:3:::0;::::1;::::0;::::1;:::i;:::-;;;;19372:348;;;;19267:464;18876:862:::0;;:::o;14044:252::-;14142:4;14159:29;14162:6;14170:9;14181:6;14159:2;:29::i;:::-;-1:-1:-1;;;;;;14230:12:0;;;;;;:4;:12;;;;;;;;194:10;14230:26;;;;;;;;;14199:67;;14208:6;;14230:35;;14259:6;;14230:35;:::i;:::-;14199:8;:67::i;:::-;-1:-1:-1;14284:4:0;14044:252;;;;;:::o;15904:373::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;16023:6:::1;;16012:7;:17;;:57;;;;;16063:6;;16050:9;:19;;16012:57;:97;;;;;16103:6;;16090:9;:19;;16012:97;16004:124;;;::::0;::::1;;16182:4;16169:9:::0;16147:19:::1;16157:9:::0;16147:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;16139:48;;;::::0;::::1;;16198:5;:15:::0;;;;16224:5:::1;:17:::0;16252:5:::1;:17:::0;15904:373::o;17641:248::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;17709:13:::1;17741:1;17736;17726:7;;:11;;;;:::i;:::-;17725:17;;;;:::i;:::-;17709:33;;17782:4;17772:7;;:14;;;;:::i;:::-;17762:5;:25;;17754:73;;;;-1:-1:-1::0;;;17754:73:0::1;;;;;;;:::i;:::-;17838:4;:12:::0;;;17870:2:::1;::::0;17880:1;;17870:6:::1;::::0;17875:1;;17870:6:::1;:::i;:::-;17869:12;;;;:::i;:::-;17861:5;:20:::0;-1:-1:-1;;;17641:248:0:o;20098:250::-;20164:7;20203;;20192;:18;;20184:73;;;;-1:-1:-1;;;20184:73:0;;10753:2:1;20184:73:0;;;10735:21:1;10792:2;10772:18;;;10765:30;10831:34;10811:18;;;10804:62;-1:-1:-1;;;10882:18:1;;;10875:40;10932:19;;20184:73:0;10551:406:1;20184:73:0;20268:19;20291:10;:8;:10::i;:::-;20268:33;-1:-1:-1;20319:21:0;20268:33;20319:7;:21;:::i;:::-;20312:28;20098:250;-1:-1:-1;;;20098:250:0:o;14304:208::-;194:10;14392:4;14441:18;;;:4;:18;;;;;;;;-1:-1:-1;;;;;14441:27:0;;;;;;;;;;14392:4;;14409:73;;14432:7;;14441:40;;14471:10;;14441:40;:::i;16666:373::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;16785:6:::1;;16774:7;:17;;:57;;;;;16825:6;;16812:9;:19;;16774:57;:97;;;;;16865:6;;16852:9;:19;;16774:97;16766:124;;;::::0;::::1;;16944:4;16931:9:::0;16909:19:::1;16919:9:::0;16909:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;16901:48;;;::::0;::::1;;16960:5;:15:::0;;;;16986:5:::1;:17:::0;17014:5:::1;:17:::0;16666:373::o;9919:1455::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;10082:3:::1;::::0;::::1;;10081:4;10073:13;;;::::0;::::1;;10099;:40:::0;;-1:-1:-1;;;;;;10099:40:0;;::::1;-1:-1:-1::0;;;;;10099:40:0;;::::1;::::0;;::::1;::::0;;;10150:3:::1;:20:::0;;;;::::1;::::0;;::::1;;::::0;;-1:-1:-1;10183:20:0;;;:5:::1;:20;::::0;;;;;:27;;-1:-1:-1;;10183:27:0;;::::1;-1:-1:-1::0;10183:27:0;;::::1;::::0;;;10227:3;;;;::::1;10221:10:::0;;;;:17;;;;::::1;::::0;;::::1;::::0;;10251:3:::1;:16;10257:10:::0;10251:3;:16:::1;:::i;:::-;-1:-1:-1::0;10278:2:0::1;:17;10283:12:::0;10278:2;:17:::1;:::i;:::-;-1:-1:-1::0;10311:14:0::1;10306:2;:19:::0;10374:9:::1;:14:::0;;-1:-1:-1;;10374:14:0::1;10386:2;10374:14:::0;;::::1;::::0;;;10403:12:::1;:24:::0;10554:12:::1;::::0;10550:16:::1;::::0;:2:::1;:16;:::i;:::-;10544:2;;:23;;;;:::i;:::-;10534:7;:33:::0;;;10596:13:::1;::::0;-1:-1:-1;;10596:13:0::1;:::i;:::-;10589:21;::::0;-1:-1:-1;;10589:21:0::1;:::i;:::-;10578:7;:33:::0;10655:14:::1;::::0;10624:9:::1;:46:::0;;-1:-1:-1;;;;;;10624:46:0::1;-1:-1:-1::0;;;;;10655:14:0;;::::1;10624:46:::0;;::::1;::::0;;10708:19:::1;::::0;;-1:-1:-1;;;10708:19:0;;;;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;10655:14;10708:19:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10690:49:0::1;;10740:9;;;;;;;;;-1:-1:-1::0;;;;;10740:9:0::1;-1:-1:-1::0;;;;;10740:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10690:82;::::0;-1:-1:-1;;;;;;10690:82:0::1;::::0;;;;;;-1:-1:-1;;;;;15143:15:1;;;10690:82:0::1;::::0;::::1;15125:34:1::0;10766:4:0::1;15175:18:1::0;;;15168:43;15060:18;;10690:82:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10681:6;:91:::0;;-1:-1:-1;;;;;;10681:91:0::1;-1:-1:-1::0;;;;;10681:91:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;10783:12:0;;;:4:::1;:12;::::0;;;;;;;:19;;-1:-1:-1;;10783:19:0::1;-1:-1:-1::0;10783:19:0::1;::::0;;10826:4:::1;10813:19:::0;;:4:::1;:19:::0;;;;;10841:9:::1;::::0;;;::::1;10813:39:::0;;;;;;-1:-1:-1;;10813:59:0;;10901:7:::1;::::0;10919:6:::1;::::0;10901:14:::1;::::0;10911:4:::1;10901:14;:::i;:::-;10900:25;;;;:::i;:::-;10893:4;:32:::0;10945:2:::1;::::0;10957:6:::1;::::0;10945:8:::1;::::0;10950:3:::1;10945:8;:::i;:::-;10944:19;;;;:::i;:::-;10936:5;:27:::0;10982:7:::1;::::0;10998:4:::1;::::0;10982:12:::1;::::0;10992:2:::1;10982:12;:::i;:::-;10981:21;;;;:::i;:::-;10974:4;:28:::0;11022:2:::1;::::0;11033:4:::1;::::0;11022:7:::1;::::0;11027:2:::1;11022:7;:::i;:::-;11021:16;;;;:::i;:::-;11013:5;:24:::0;11065:7:::1;::::0;11080:5:::1;::::0;11065:11:::1;::::0;11075:1:::1;11065:11;:::i;:::-;11064:21;;;;:::i;:::-;11048:13;:37:::0;11110:7:::1;::::0;11125:4:::1;::::0;11110:11:::1;::::0;11120:1:::1;11110:11;:::i;:::-;11109:20;;;;:::i;:::-;11096:10;:33:::0;11150:14:::1;::::0;11142:42:::1;::::0;-1:-1:-1;;;;;11150:14:0::1;-1:-1:-1::0;;11142:7:0::1;:42::i;:::-;-1:-1:-1::0;11197:3:0::1;:10:::0;;-1:-1:-1;;11197:10:0::1;11203:4;11197:10:::0;;::::1;::::0;;;11234:7:::1;::::0;;11197:3:::1;11223:7;11420::::0;11447:6;-1:-1:-1;;;;;11447:6:0;;11382:79;11223:7:::1;-1:-1:-1::0;;;;;11218:13:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11218:13:0;:23;11272:7:::1;11420::::0;11447:6;-1:-1:-1;;;;;11447:6:0;;11382:79;11272:7:::1;11266:4;::::0;11281:7:::1;::::0;11257:32:::1;::::0;2377:25:1;;;-1:-1:-1;;;;;11257:32:0;;::::1;::::0;11266:4;;::::1;::::0;11257:32:::1;::::0;2365:2:1;2350:18;11257:32:0::1;;;;;;;11334:9;::::0;11302:62:::1;::::0;11319:4:::1;::::0;-1:-1:-1;;;;;11334:9:0::1;-1:-1:-1::0;;11302:8:0::1;:62::i;:::-;9919:1455:::0;;;;:::o;11469:767::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11550:22:0;::::1;11542:96;;;;-1:-1:-1::0;;;11542:96:0::1;;;;;;;:::i;:::-;11669:4;::::0;-1:-1:-1;;;;;11669:4:0;;::::1;11657:16:::0;;::::1;::::0;11649:90:::1;;;;-1:-1:-1::0;;;11649:90:0::1;;;;;;;:::i;:::-;11769:6;::::0;;11750:33:::1;::::0;-1:-1:-1;;;;;11769:6:0;;::::1;::::0;11750:18:::1;:33::i;:::-;11794:34;11813:8;11823:4;11794:18;:34::i;:::-;11839:37;11861:8;11871:4;11839:21;:37::i;:::-;11916:6;::::0;11901:3:::1;::::0;-1:-1:-1;;;;;11916:6:0;;::::1;11901:3:::0;::::1;:22:::0;11897:64:::1;;11938:3;:23:::0;;-1:-1:-1;;;;;;11938:23:0::1;-1:-1:-1::0;;;;;11938:23:0;::::1;;::::0;;11897:64:::1;12017:6;::::0;12007:17:::1;::::0;-1:-1:-1;;;;;12017:6:0::1;12007:9;:17::i;:::-;11982:12;11987:6:::0;;-1:-1:-1;;;;;11987:6:0;;::::1;11982:12:::0;;:4:::1;:12;::::0;;;;;;;:22;;::::1;::::0;;;;;;;:42;;;;12048:6;;11982:12;;12038:17:::1;::::0;12048:6:::1;12038:9;:17::i;:::-;:21;12035:92;;;12079:6;::::0;12076:39:::1;::::0;-1:-1:-1;;;;;12079:6:0::1;12087:8:::0;12097:17:::1;12079:6:::0;12097:9:::1;:17::i;:::-;12076:2;:39::i;:::-;;12035:92;12147:6;:17:::0;;-1:-1:-1;;;;;;12147:17:0::1;-1:-1:-1::0;;;;;12147:17:0;::::1;::::0;;::::1;::::0;;12180:38:::1;::::0;12147:17;;;;12180:38:::1;::::0;12147:6;12180:38:::1;11469:767:::0;:::o;13916:120::-;13969:4;13993:35;14001:7;-1:-1:-1;;13993:7:0;:35::i;13453:286::-;13509:4;13526:16;13559:12;;13555:2;:16;;;;:::i;:::-;13545:27;;:6;:27;:::i;:::-;194:10;13583:18;13604:17;;;:3;:17;;;;;;13526:46;;-1:-1:-1;13652:19:0;13665:6;13604:17;13652:19;:::i;:::-;194:10;13632:17;;;;:3;:17;;;;;:39;;;;13682:27;;13700:8;13682:3;:27::i;:::-;-1:-1:-1;13727:4:0;;13453:286;-1:-1:-1;;;;13453:286:0:o;18749:119::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18836:14:0;;;::::1;;::::0;;;:5:::1;:14;::::0;;;;:24;;-1:-1:-1;;18836:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18749:119::o;17194:148::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;17281:15:::1;:27:::0;;;;17319:3:::1;:15:::0;17194:148::o;12976:184::-;-1:-1:-1;;;;;13066:12:0;;13042:7;13066:12;;;:3;:12;;;;;;;;13062:38;;;-1:-1:-1;;;;;;13087:13:0;;;;;:4;:13;;;;;;;12976:184::o;13062:38::-;-1:-1:-1;;;;;13138:13:0;;;;;;:4;:13;;;;;;13118:34;;:19;:34::i;12244:194::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;12330:6:::1;::::0;;12311:33:::1;::::0;-1:-1:-1;;;;;12330:6:0;;::::1;::::0;12311:18:::1;:33::i;:::-;12372:1;12355:19:::0;;-1:-1:-1;;;;;;12355:19:0::1;::::0;;12390:40:::1;::::0;12372:1;;12390:40:::1;::::0;12372:1;;12390:40:::1;12244:194::o:0;15292:379::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;15373:16;::::1;;15384:5;15373:16:::0;15369:295:::1;;-1:-1:-1::0;;;;;;15406:10:0::1;15419:5;15406:10:::0;;;:4:::1;:10;::::0;;;;:18;;-1:-1:-1;;15406:18:0::1;::::0;;18876:862::o;15369:295::-:1;15461:4;::::0;:9;15457:127:::1;;15524:7;15517:4;;15499:15;:22;;;;:::i;:::-;:32;15491:77;;;::::0;-1:-1:-1;;;15491:77:0;;15854:2:1;15491:77:0::1;::::0;::::1;15836:21:1::0;;;15873:18;;;15866:30;15932:34;15912:18;;;15905:62;15984:18;;15491:77:0::1;15652:356:1::0;15491:77:0::1;-1:-1:-1::0;;;;;15598:10:0;::::1;;::::0;;;:4:::1;:10;::::0;;;;:17;;-1:-1:-1;;15598:17:0::1;15611:4;15598:17;::::0;;15637:15:::1;15630:4;:22:::0;15292:379;;:::o;12613:70::-;12654:13;12678:2;12671:9;;;;;:::i;14520:218::-;194:10;14613:4;14662:18;;;:4;:18;;;;;;;;-1:-1:-1;;;;;14662:27:0;;;;;;;;;;14613:4;;14630:78;;14653:7;;14662:45;;14692:15;;14662:45;:::i;13285:160::-;13363:4;13380:35;194:10;13397:9;13408:6;13380:2;:35::i;18398:166::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;18481:3:::1;::::0;-1:-1:-1;;;;;18481:16:0;;::::1;:3:::0;::::1;:16:::0;18473:48:::1;;;::::0;-1:-1:-1;;;18473:48:0;;16215:2:1;18473:48:0::1;::::0;::::1;16197:21:1::0;16254:2;16234:18;;;16227:30;-1:-1:-1;;;16273:18:1;;;16266:49;16332:18;;18473:48:0::1;16013:343:1::0;18473:48:0::1;18532:3;:24:::0;;-1:-1:-1;;;;;;18532:24:0::1;-1:-1:-1::0;;;;;18532:24:0;;;::::1;::::0;;;::::1;::::0;;18398:166::o;28844:114::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;11420:7;11447:6;;28902:48:::1;::::0;-1:-1:-1;;;;;11447:6:0;;;;28928:21:::1;28902:48:::0;::::1;;;::::0;28928:21;;28902:48;11420:7;28902:48;28928:21;11447:6;28902:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;28844:114::o:0;18570:171::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;18647:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;18647:32:0::1;-1:-1:-1::0;;;;18647:32:0;;::::1;;::::0;;18695:38:::1;::::0;::::1;::::0;::::1;::::0;18671:8;1951:14:1;1944:22;1926:41;;1914:2;1899:18;;1786:187;18695:38:0::1;;;;;;;;18570:171:::0;:::o;24867:259::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;24924:2:::1;::::0;::::1;;24923:3;24915:43;;;::::0;-1:-1:-1;;;24915:43:0;;16563:2:1;24915:43:0::1;::::0;::::1;16545:21:1::0;16602:2;16582:18;;;16575:30;16641:29;16621:18;;;16614:57;16688:18;;24915:43:0::1;16361:351:1::0;24915:43:0::1;24969:42;24999:4;25006;24969:21;:42::i;:::-;25044:6;::::0;25022:35:::1;::::0;-1:-1:-1;;;;;25044:6:0::1;::::0;25022:21:::1;:35::i;:::-;25070:2;:9:::0;;-1:-1:-1;;25070:9:0::1;25075:4;25070:9;::::0;;25090:21:::1;:28:::0;;-1:-1:-1;;;;25090:28:0::1;-1:-1:-1::0;;;25090:28:0::1;::::0;;24867:259::o;26529:185::-;26626:3;;-1:-1:-1;;;;;26626:3:0;194:10;-1:-1:-1;;;;;26610:19:0;;26601:62;;;;-1:-1:-1;;;26601:62:0;;16919:2:1;26601:62:0;;;16901:21:1;16958:2;16938:18;;;16931:30;16997:31;16977:18;;;16970:59;17046:18;;26601:62:0;16717:353:1;26601:62:0;26678:3;:9;26684:3;26678;:9;:::i;:::-;-1:-1:-1;26698:2:0;:8;26703:3;26698:2;:8;:::i;14746:538::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;14819:29:::1;14870:9;14819:61;;14891:11;14923:10;-1:-1:-1::0;;;;;14923:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14905:47:0::1;;14961:4;14968:10;-1:-1:-1::0;;;;;14968:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14905:81;::::0;-1:-1:-1;;;;;;14905:81:0::1;::::0;;;;;;-1:-1:-1;;;;;15143:15:1;;;14905:81:0::1;::::0;::::1;15125:34:1::0;15195:15;;15175:18;;;15168:43;15060:18;;14905:81:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14891:95:::0;-1:-1:-1;;;;;;15001:17:0;::::1;14997:197;;15062:10;-1:-1:-1::0;;;;;15062:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15044:50:0::1;;15103:4;15110:10;-1:-1:-1::0;;;;;15110:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15044:84;::::0;-1:-1:-1;;;;;;15044:84:0::1;::::0;;;;;;-1:-1:-1;;;;;15143:15:1;;;15044:84:0::1;::::0;::::1;15125:34:1::0;15195:15;;15175:18;;;15168:43;15060:18;;15044:84:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15035:6;:93:::0;;-1:-1:-1;;;;;;15035:93:0::1;-1:-1:-1::0;;;;;15035:93:0;;;::::1;::::0;;;::::1;::::0;;14997:197:::1;;;15170:6;:12:::0;;-1:-1:-1;;;;;;15170:12:0::1;-1:-1:-1::0;;;;;15170:12:0;::::1;;::::0;;14997:197:::1;15204:9;:22:::0;;-1:-1:-1;;;;;;15204:22:0::1;-1:-1:-1::0;;;;;15204:22:0;::::1;;::::0;;15237:39:::1;15254:4;15261:9:::0;-1:-1:-1;;15237:8:0::1;:39::i;18194:196::-:0;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;18287:13:::1;::::0;-1:-1:-1;;;;;18287:26:0;;::::1;:13:::0;::::1;:26:::0;18279:58:::1;;;::::0;-1:-1:-1;;;18279:58:0;;16215:2:1;18279:58:0::1;::::0;::::1;16197:21:1::0;16254:2;16234:18;;;16227:30;-1:-1:-1;;;16273:18:1;;;16266:49;16332:18;;18279:58:0::1;16013:343:1::0;18279:58:0::1;18348:13;:34:::0;;-1:-1:-1;;;;;;18348:34:0::1;-1:-1:-1::0;;;;;18348:34:0;;;::::1;::::0;;;::::1;::::0;;18194:196::o;17897:289::-;9064:6;;-1:-1:-1;;;;;9064:6:0;194:10;9064:22;9056:67;;;;-1:-1:-1;;;9056:67:0;;;;;;;:::i;:::-;18097:16:::1;18077;18067:7;;:26;;;;:::i;:::-;18066:47;;;;:::i;:::-;18050:13;:63:::0;18138:7:::1;::::0;18165:13;;18138:23:::1;::::0;18148:13;;18138:23:::1;:::i;:::-;18137:41;;;;:::i;:::-;18124:10;:54:::0;-1:-1:-1;;;;17897:289:0:o;20360:335::-;-1:-1:-1;;;;;20455:20:0;;20447:69;;;;-1:-1:-1;;;20447:69:0;;17277:2:1;20447:69:0;;;17259:21:1;17316:2;17296:18;;;17289:30;17355:34;17335:18;;;17328:62;-1:-1:-1;;;17406:18:1;;;17399:34;17450:19;;20447:69:0;17075:400:1;20447:69:0;-1:-1:-1;;;;;20535:21:0;;20527:68;;;;-1:-1:-1;;;20527:68:0;;17682:2:1;20527:68:0;;;17664:21:1;17721:2;17701:18;;;17694:30;17760:34;17740:18;;;17733:62;-1:-1:-1;;;17811:18:1;;;17804:32;17853:19;;20527:68:0;17480:398:1;20527:68:0;-1:-1:-1;;;;;20608:12:0;;;;;;;:4;:12;;;;;;;;:21;;;;;;;;;;;;;:30;;;20654:33;;2377:25:1;;;20654:33:0;;2350:18:1;20654:33:0;;;;;;;20360:335;;;:::o;20703:1685::-;20775:4;-1:-1:-1;;;;;20800:18:0;;20792:68;;;;-1:-1:-1;;;20792:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20879:16:0;;20871:64;;;;-1:-1:-1;;;20871:64:0;;18491:2:1;20871:64:0;;;18473:21:1;18530:2;18510:18;;;18503:30;18569:34;18549:18;;;18542:62;-1:-1:-1;;;18620:18:1;;;18613:33;18663:19;;20871:64:0;18289:399:1;20871:64:0;20963:1;20954:6;:10;20946:64;;;;-1:-1:-1;;;20946:64:0;;18895:2:1;20946:64:0;;;18877:21:1;18934:2;18914:18;;;18907:30;18973:34;18953:18;;;18946:62;-1:-1:-1;;;19024:18:1;;;19017:39;19073:19;;20946:64:0;18693:405:1;20946:64:0;21024:20;21035:4;21041:2;21024:10;:20::i;:::-;21021:734;;;21065:2;;;;21061:77;;21088:34;;-1:-1:-1;;;21088:34:0;;19305:2:1;21088:34:0;;;19287:21:1;19344:2;19324:18;;;19317:30;-1:-1:-1;;;19363:18:1;;;19356:54;19427:18;;21088:34:0;19103:348:1;21061:77:0;21156:15;;;;21152:352;;;-1:-1:-1;;;;;21196:10:0;;;;;;:4;:10;;;;;;;;21192:297;;;21255:16;:12;21270:1;21255:16;:::i;:::-;-1:-1:-1;;;;;21238:13:0;;;;;;:9;:13;;;;;;:33;21230:42;;;;;;-1:-1:-1;;;;;21295:13:0;;;;;;:9;:13;;;;;21311:12;21295:28;;21192:297;;;21399:16;:12;21414:1;21399:16;:::i;:::-;-1:-1:-1;;;;;21380:15:0;;;;;;:9;:15;;;;;;:35;21372:44;;;;;;-1:-1:-1;;;;;21439:15:0;;;;;;:9;:15;;;;;21457:12;21439:30;;21192:297;21536:4;;21526:6;:14;;21518:60;;;;-1:-1:-1;;;21518:60:0;;19658:2:1;21518:60:0;;;19640:21:1;19697:2;19677:18;;;19670:30;19736:34;19716:18;;;19709:62;-1:-1:-1;;;19787:18:1;;;19780:31;19828:19;;21518:60:0;19456:397:1;21518:60:0;21602:14;;-1:-1:-1;;;;;21596:20:0;;;21602:14;;21596:20;;;;:33;;-1:-1:-1;;;;;;21621:8:0;;;;;;:4;:8;;;;;;;;21620:9;21596:33;21593:151;;;21684:4;;21674:6;21658:13;21668:2;21658:9;:13::i;:::-;:22;;;;:::i;:::-;:30;;21650:78;;;;-1:-1:-1;;;21650:78:0;;20060:2:1;21650:78:0;;;20042:21:1;20099:2;20079:18;;;20072:30;20138:34;20118:18;;;20111:62;-1:-1:-1;;;20189:18:1;;;20182:33;20232:19;;21650:78:0;19858:399:1;21650:78:0;-1:-1:-1;;;;;21798:11:0;;21765:12;21798:11;;;:5;:11;;;;;;21780:4;;21798:11;;;:24;;-1:-1:-1;;;;;;21813:9:0;;;;;;:5;:9;;;;;;;;21798:24;21795:70;;;-1:-1:-1;21848:5:0;21795:70;-1:-1:-1;;;;;21881:8:0;;;;;;:4;:8;;;;;;;;21877:454;;;21911:16;;-1:-1:-1;;;21911:16:0;;;;21910:17;:59;;;;-1:-1:-1;21948:21:0;;-1:-1:-1;;;21948:21:0;;;;21910:59;21906:408;;;22004:28;22035:24;22053:4;22035:9;:24::i;:::-;22004:55;;22106:13;;22082:20;:37;22078:221;;22171:10;;22147:20;:34;22144:77;;-1:-1:-1;22208:10:0;;22144:77;22243:36;22258:20;22243:14;:36::i;:::-;21985:329;21906:408;22349:31;22354:4;22360:2;22364:6;22372:7;22349:4;:31::i;:::-;22342:38;20703:1685;-1:-1:-1;;;;;20703:1685:0:o;27977:161::-;28019:7;28040:15;28057;28076:19;:17;:19::i;:::-;28039:56;;-1:-1:-1;28039:56:0;-1:-1:-1;28113:17:0;28039:56;;28113:17;:::i;:::-;28106:24;;;;27977:161;:::o;22396:601::-;22457:4;;-1:-1:-1;;;;;22516:18:0;;22508:68;;;;-1:-1:-1;;;22508:68:0;;;;;;;:::i;:::-;22604:1;22595:6;:10;22587:60;;;;-1:-1:-1;;;22587:60:0;;20464:2:1;22587:60:0;;;20446:21:1;20503:2;20483:18;;;20476:30;20542:34;20522:18;;;20515:62;-1:-1:-1;;;20593:18:1;;;20586:35;20638:19;;22587:60:0;20262:401:1;22587:60:0;22661:20;22672:4;22678:2;22661:10;:20::i;:::-;22658:128;;;22702:2;;;;22698:77;;22725:34;;-1:-1:-1;;;22725:34:0;;19305:2:1;22725:34:0;;;19287:21:1;19344:2;19324:18;;;19317:30;-1:-1:-1;;;19363:18:1;;;19356:54;19427:18;;22725:34:0;19103:348:1;22698:77:0;-1:-1:-1;;;;;22829:11:0;;22796:12;22829:11;;;:5;:11;;;;;;22811:4;;22829:11;;;:24;;-1:-1:-1;;;;;;22844:9:0;;;;;;:5;:9;;;;;;;;22829:24;22826:70;;;-1:-1:-1;22879:5:0;22826:70;22931:6;22920:7;;:18;;;;:::i;:::-;22910:7;:28;22956:31;22961:4;22967:2;22971:6;22979:7;22956:4;:31::i;19841:249::-;19910:4;11447:6;;-1:-1:-1;;;;;19934:15:0;;;11447:6;;19934:15;;;;:33;;-1:-1:-1;11420:7:0;11447:6;-1:-1:-1;;;;;19954:13:0;;;11447:6;;19954:13;;19934:33;:45;;;;-1:-1:-1;;;;;;19972:7:0;;;;;;:3;:7;;;;;;;;19971:8;19934:45;:59;;;;-1:-1:-1;;;;;;19984:9:0;;;;;;:3;:9;;;;;;;;19983:10;19934:59;:73;;;;-1:-1:-1;20003:4:0;;-1:-1:-1;;;;;19997:10:0;;;20003:4;;19997:10;;19934:73;:93;;;;-1:-1:-1;;;;;;20011:16:0;;;;19934:93;:118;;;;-1:-1:-1;;;;;;20031:21:0;;20047:4;20031:21;;19934:118;:132;;;;-1:-1:-1;;;;;;20057:9:0;;;;;;:5;:9;;;;;;;;20056:10;19934:132;:148;;;;-1:-1:-1;;;;;;;;20071:11:0;;;;;:5;:11;;;;;;;;20070:12;;19841:249::o;23005:1421::-;8938:16;:23;;-1:-1:-1;;;;8938:23:0;-1:-1:-1;;;8938:23:0;;;23113:3:::1;::::0;23095:15:::1;::::0;:21:::1;::::0;23113:3;23095:21:::1;:::i;:::-;23091:52:::0;23136:7:::1;23091:52;23153:17;23244:1;23236:3;;23218:15;;:21;;;;:::i;:::-;23198:15;::::0;23175:38:::1;::::0;:20;:38:::1;:::i;:::-;23174:66;;;;:::i;:::-;23173:72;;;;:::i;:::-;23153:92:::0;-1:-1:-1;23258:20:0::1;23281:32;23153:92:::0;23281:20;:32:::1;:::i;:::-;23350:16;::::0;;23364:1:::1;23350:16:::0;;;;;::::1;::::0;;23258:55;;-1:-1:-1;23326:21:0::1;::::0;23350:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23350:16:0::1;23326:40;;23395:4;23377;23382:1;23377:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23377:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;23421:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;23421:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;23377:7;;23421:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23411:4;23416:1;23411:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23411:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;23450:9:::1;::::0;:191:::1;::::0;-1:-1:-1;;;23450:191:0;;:9;::::1;::::0;:60:::1;::::0;:191:::1;::::0;23525:12;;23450:9:::1;::::0;23568:4;;23595::::1;::::0;23615:15:::1;::::0;23450:191:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23656:24;23755:1;23747:3;;23729:15;;:21;;;;:::i;:::-;23709:15;::::0;23685:39:::1;::::0;:21:::1;:39;:::i;:::-;23684:67;;;;:::i;:::-;23683:73;;;;:::i;:::-;23656:100:::0;-1:-1:-1;23773:13:0;;23769:343:::1;;23803:9;::::0;23974:3:::1;::::0;23803:223:::1;::::0;-1:-1:-1;;;23803:223:0;;23880:4:::1;23803:223;::::0;::::1;22002:34:1::0;22052:18;;;22045:34;;;23803:9:0::1;22095:18:1::0;;;22088:34;;;22138:18;;;22131:34;-1:-1:-1;;;;;23974:3:0;;::::1;22181:19:1::0;;;22174:44;23996:15:0::1;22234:19:1::0;;;22227:35;23803:9:0;::::1;::::0;:25:::1;::::0;23836:16;;21936:19:1;;23803:223:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;24046:54:0::1;::::0;;22786:25:1;;;22842:2;22827:18;;22820:34;;;22870:18;;;22863:34;;;24046:54:0::1;::::0;-1:-1:-1;22774:2:1;22759:18;24046:54:0::1;;;;;;;23769:343;24161:1;24126:32;24149:9:::0;24126:20;:32:::1;:::i;:::-;:36;24122:297;;;24277:3;::::0;24271::::1;::::0;24206:21:::1;::::0;24181::::1;::::0;24256:19:::1;::::0;24206:21;24256:19:::1;:::i;:::-;:25;;;;:::i;:::-;24243:38;;24296:10;24330:3;;24324;;24309:13;:19;;;;:::i;:::-;:25;;;;:::i;:::-;24336:3;::::0;:16:::1;::::0;24296:38;;-1:-1:-1;;;;;;24336:3:0::1;::::0;:16;::::1;;;::::0;24296:38;;24336:3:::1;:16:::0;:3;:16;24296:38;24336:3;:16;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;24368:13:0::1;::::0;:26:::1;::::0;-1:-1:-1;;;;;24368:13:0;;::::1;::::0;:26;::::1;;;::::0;24391:2;;24368:13:::1;:26:::0;:13;:26;24391:2;24368:13;:26;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24164:255;;;24122:297;23080:1346;;;;8972:1;-1:-1:-1::0;8984:16:0;:24;;-1:-1:-1;;;;8984:24:0;;;23005:1421::o;25340:1181::-;25455:16;;25429:4;;25455:16;;;;;25450:237;;25492:28;25511:4;25517:2;25492:18;:28::i;:::-;25544:16;;;;;;;25543:17;:41;;;;;25564:20;25575:4;25581:2;25564:10;:20::i;:::-;25539:137;;;25609:47;;-1:-1:-1;;;25609:47:0;;23110:2:1;25609:47:0;;;23092:21:1;23149:2;23129:18;;;23122:30;23188:34;23168:18;;;23161:62;-1:-1:-1;;;23239:18:1;;;23232:35;23284:19;;25609:47:0;22908:401:1;25539:137:0;25707:25;25735:38;25746:4;25752:2;25756:7;25765;25735:10;:38::i;:::-;25812:14;;;;-1:-1:-1;;;;;25799:10:0;;;;;;:4;:10;;;;;;25707:66;;-1:-1:-1;25799:27:0;;;:::i;:::-;-1:-1:-1;;;;;25786:10:0;;;;;;;:4;:10;;;;;;:40;;;;25859:22;;;;25848:8;;;;;;;;;;:33;;25859:22;25848:33;:::i;:::-;-1:-1:-1;;;;;25837:8:0;;;;;;;:4;:8;;;;;;;;:44;;;;25898:9;;;;;:3;:9;;;;;;;:21;;;;-1:-1:-1;;;;;;25912:7:0;;;;;;:3;:7;;;;;;;;25911:8;25898:21;25894:344;;;-1:-1:-1;;;;;25949:10:0;;;;;;:4;:10;;;;;;:20;;25962:7;;25949:20;:::i;:::-;-1:-1:-1;;;;;25936:10:0;;;;;;:4;:10;;;;;:33;25894:344;;;-1:-1:-1;;;;;25992:9:0;;;;;;:3;:9;;;;;;;;25991:10;:21;;;;-1:-1:-1;;;;;;26005:7:0;;;;;;:3;:7;;;;;;;;25991:21;25987:251;;;26051:22;;-1:-1:-1;;;;;26040:8:0;;26051:22;26040:8;;;:4;:8;;;;;;:33;;26051:22;26040:33;:::i;:::-;-1:-1:-1;;;;;26029:8:0;;;;;;:4;:8;;;;;:44;25987:251;;;-1:-1:-1;;;;;26097:9:0;;;;;;:3;:9;;;;;;;;:20;;;;-1:-1:-1;;;;;;26110:7:0;;;;;;:3;:7;;;;;;;;26097:20;26093:145;;;-1:-1:-1;;;;;26147:10:0;;;;;;:4;:10;;;;;;:20;;26160:7;;26147:20;:::i;:::-;-1:-1:-1;;;;;26134:10:0;;;;;;;:4;:10;;;;;;:33;;;;26204:22;;26193:8;;;;;;;;;;:33;;26204:22;26193:33;:::i;:::-;-1:-1:-1;;;;;26182:8:0;;;;;;:4;:8;;;;;:44;26093:145;26254:17;;;;:21;26250:79;;26290:39;26305:4;26311:6;:17;;;26290:14;:39::i;:::-;26358:1;26344:6;:11;;;:15;:34;;;;26377:1;26363:6;:11;;;:15;26344:34;26340:91;;;26393:38;26406:6;:11;;;26419:6;:11;;;26393:12;:38::i;:::-;26464:2;-1:-1:-1;;;;;26449:42:0;26458:4;-1:-1:-1;;;;;26449:42:0;;26468:6;:22;;;26449:42;;;;2377:25:1;;2365:2;2350:18;;2231:177;26449:42:0;;;;;;;;-1:-1:-1;26509:4:0;;25340:1181;-1:-1:-1;;;;;25340:1181:0:o;28146:535::-;28244:7;;28280;;28197;;;;;28298:271;28322:9;:16;28318:20;;28298:271;;;28385:7;28364:4;:18;28369:9;28379:1;28369:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28369:12:0;28364:18;;;;;;;;;;;;;:28;;:60;;;28417:7;28396:4;:18;28401:9;28411:1;28401:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28401:12:0;28396:18;;;;;;;;;;;;;:28;28364:60;28360:91;;;28434:7;;28443;;28426:25;;;;;;;28146:535;;:::o;28360:91::-;28486:4;:18;28491:9;28501:1;28491:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28491:12:0;28486:18;;;;;;;;;;;;;28476:28;;:7;:28;:::i;:::-;28466:38;;28539:4;:18;28544:9;28554:1;28544:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28544:12:0;28539:18;;;;;;;;;;;;;28529:28;;:7;:28;:::i;:::-;28519:38;-1:-1:-1;28340:3:0;;;;:::i;:::-;;;;28298:271;;;;28603:7;;28593;;:17;;;;:::i;:::-;28583:7;:27;28579:58;;;28620:7;;28629;;28612:25;;;;;;28146:535;;:::o;28579:58::-;28656:7;;28665;;-1:-1:-1;28146:535:0;-1:-1:-1;28146:535:0:o;24442:417::-;24525:16;;;;;;;24524:17;24516:57;;;;-1:-1:-1;;;24516:57:0;;23516:2:1;24516:57:0;;;23498:21:1;23555:2;23535:18;;;23528:30;23594:29;23574:18;;;23567:57;23641:18;;24516:57:0;23314:351:1;24516:57:0;24589:20;24600:4;24606:2;24589:10;:20::i;:::-;24588:21;:37;;;;-1:-1:-1;24619:6:0;;-1:-1:-1;;;;;24613:12:0;;;24619:6;;24613:12;24588:37;24584:268;;;-1:-1:-1;;;;;24642:9:0;;;;;;:3;:9;;;;;;;:16;;-1:-1:-1;;24642:16:0;24654:4;24642:16;;;;;;24673;:23;;-1:-1:-1;;24673:23:0;24642:16;24673:23;;;24726:15;24711:12;:30;24758:21;:28;;-1:-1:-1;;;;24758:28:0;-1:-1:-1;;;24758:28:0;;;24806:34;;;;;;1951:14:1;;1944:22;1926:41;;1914:2;1899:18;;1786:187;24806:34:0;;;;;;;;24442:417;;:::o;26722:1247::-;26817:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26817:18:0;26848:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26848:25:0;26884:19;26906:10;:8;:10::i;:::-;26884:32;-1:-1:-1;26946:21:0;26884:32;26946:7;:21;:::i;:::-;26929:14;;;:38;26980:854;;;;-1:-1:-1;;;;;27011:8:0;;;;;;:4;:8;;;;;;;;27007:369;;;27047:5;;27040:4;:12;27078:5;;27071:4;:12;27109:5;;27102:4;:12;27007:369;;;-1:-1:-1;;;;;27140:10:0;;;;;;:4;:10;;;;;;;;27136:240;;;27178:5;;27171:4;:12;27209:5;;27202:4;:12;27240:5;;27233:4;:12;27136:240;;;27293:5;;27286:4;:12;27324:5;;27317:4;:12;27355:5;;27348:4;:12;27136:240;27425:16;;27417:4;;27407:14;;:7;:14;:::i;:::-;27406:35;;;;:::i;:::-;27392:11;;;;:49;;;;27504:16;27495:4;;27488;;:11;;27495:4;27488:11;:::i;:::-;27477:23;;:7;:23;:::i;:::-;27476:44;;;;:::i;:::-;27456:17;;;:64;;;27571:11;;;;:31;;27456:64;27571:31;:::i;:::-;27560:43;;:7;:43;:::i;:::-;27535:68;;27634:11;;;;:25;;27648:11;;27634:25;:::i;:::-;27620:11;;;:39;26980:854;;;27706:1;27692:11;;;:15;;;27722:17;;;:21;;;27758:32;;;27807:11;;;:15;26980:854;27924:11;27904:6;:17;;;:31;;;;:::i;:::-;27889:6;:11;;;:47;;;;:::i;:::-;27871:6;:14;;;:66;;;;:::i;:::-;27846:22;;;:91;-1:-1:-1;27846:22:0;26722:1247;-1:-1:-1;;;;;26722:1247:0:o;28970:403::-;29050:19;29073:10;:8;:10::i;:::-;29050:33;-1:-1:-1;29094:18:0;29115:24;29050:33;29115:10;:24;:::i;:::-;29185:4;29172:19;;;;:4;:19;;;;;;29094:45;;-1:-1:-1;29172:32:0;;29094:45;;29172:32;:::i;:::-;29163:4;29150:19;;;;:4;:19;;;;;;;;:54;;;;29218:3;:18;;;;;;29215:90;;;29286:4;29273:19;;;;:4;:19;;;;;;:32;;29295:10;;29273:32;:::i;:::-;29264:4;29251:19;;;;:4;:19;;;;;:54;29215:90;29321:43;;2377:25:1;;;29346:4:0;;-1:-1:-1;;;;;29321:43:0;;;;;2365:2:1;2350:18;29321:43:0;;;;;;;29039:334;;28970:403;;:::o;28693:143::-;28783:4;28773:7;;:14;;;;:::i;:::-;28763:7;:24;28811:10;;:17;;28824:4;;28811:17;:::i;:::-;28798:10;:30;-1:-1:-1;;28693:143:0:o;222:316:1:-;299:6;307;315;368:2;356:9;347:7;343:23;339:32;336:52;;;384:1;381;374:12;336:52;-1:-1:-1;;407:23:1;;;477:2;462:18;;449:32;;-1:-1:-1;528:2:1;513:18;;;500:32;;222:316;-1:-1:-1;222:316:1:o;543:548::-;655:4;684:2;713;702:9;695:21;745:6;739:13;788:6;783:2;772:9;768:18;761:34;813:1;823:140;837:6;834:1;831:13;823:140;;;932:14;;;928:23;;922:30;898:17;;;917:2;894:26;887:66;852:10;;823:140;;;827:3;1012:1;1007:2;998:6;987:9;983:22;979:31;972:42;1082:2;1075;1071:7;1066:2;1058:6;1054:15;1050:29;1039:9;1035:45;1031:54;1023:62;;;;543:548;;;;:::o;1330:131::-;-1:-1:-1;;;;;1405:31:1;;1395:42;;1385:70;;1451:1;1448;1441:12;1466:315;1534:6;1542;1595:2;1583:9;1574:7;1570:23;1566:32;1563:52;;;1611:1;1608;1601:12;1563:52;1650:9;1637:23;1669:31;1694:5;1669:31;:::i;:::-;1719:5;1771:2;1756:18;;;;1743:32;;-1:-1:-1;;;1466:315:1:o;1978:248::-;2046:6;2054;2107:2;2095:9;2086:7;2082:23;2078:32;2075:52;;;2123:1;2120;2113:12;2075:52;-1:-1:-1;;2146:23:1;;;2216:2;2201:18;;;2188:32;;-1:-1:-1;1978:248:1:o;2413:160::-;2478:20;;2534:13;;2527:21;2517:32;;2507:60;;2563:1;2560;2553:12;2507:60;2413:160;;;:::o;2578:315::-;2643:6;2651;2704:2;2692:9;2683:7;2679:23;2675:32;2672:52;;;2720:1;2717;2710:12;2672:52;2759:9;2746:23;2778:31;2803:5;2778:31;:::i;:::-;2828:5;-1:-1:-1;2852:35:1;2883:2;2868:18;;2852:35;:::i;:::-;2842:45;;2578:315;;;;;:::o;2898:456::-;2975:6;2983;2991;3044:2;3032:9;3023:7;3019:23;3015:32;3012:52;;;3060:1;3057;3050:12;3012:52;3099:9;3086:23;3118:31;3143:5;3118:31;:::i;:::-;3168:5;-1:-1:-1;3225:2:1;3210:18;;3197:32;3238:33;3197:32;3238:33;:::i;:::-;2898:456;;3290:7;;-1:-1:-1;;;3344:2:1;3329:18;;;;3316:32;;2898:456::o;3359:180::-;3418:6;3471:2;3459:9;3450:7;3446:23;3442:32;3439:52;;;3487:1;3484;3477:12;3439:52;-1:-1:-1;3510:23:1;;3359:180;-1:-1:-1;3359:180:1:o;3733:247::-;3792:6;3845:2;3833:9;3824:7;3820:23;3816:32;3813:52;;;3861:1;3858;3851:12;3813:52;3900:9;3887:23;3919:31;3944:5;3919:31;:::i;3985:127::-;4046:10;4041:3;4037:20;4034:1;4027:31;4077:4;4074:1;4067:15;4101:4;4098:1;4091:15;4117:719;4160:5;4213:3;4206:4;4198:6;4194:17;4190:27;4180:55;;4231:1;4228;4221:12;4180:55;4267:6;4254:20;4293:18;4330:2;4326;4323:10;4320:36;;;4336:18;;:::i;:::-;4411:2;4405:9;4379:2;4465:13;;-1:-1:-1;;4461:22:1;;;4485:2;4457:31;4453:40;4441:53;;;4509:18;;;4529:22;;;4506:46;4503:72;;;4555:18;;:::i;:::-;4595:10;4591:2;4584:22;4630:2;4622:6;4615:18;4676:3;4669:4;4664:2;4656:6;4652:15;4648:26;4645:35;4642:55;;;4693:1;4690;4683:12;4642:55;4757:2;4750:4;4742:6;4738:17;4731:4;4723:6;4719:17;4706:54;4804:1;4797:4;4792:2;4784:6;4780:15;4776:26;4769:37;4824:6;4815:15;;;;;;4117:719;;;;:::o;4841:836::-;4963:6;4971;4979;4987;5040:3;5028:9;5019:7;5015:23;5011:33;5008:53;;;5057:1;5054;5047:12;5008:53;5096:9;5083:23;5115:31;5140:5;5115:31;:::i;:::-;5165:5;-1:-1:-1;5222:2:1;5207:18;;5194:32;5235:33;5194:32;5235:33;:::i;:::-;5287:7;-1:-1:-1;5345:2:1;5330:18;;5317:32;5368:18;5398:14;;;5395:34;;;5425:1;5422;5415:12;5395:34;5448:50;5490:7;5481:6;5470:9;5466:22;5448:50;:::i;:::-;5438:60;;5551:2;5540:9;5536:18;5523:32;5507:48;;5580:2;5570:8;5567:16;5564:36;;;5596:1;5593;5586:12;5564:36;;5619:52;5663:7;5652:8;5641:9;5637:24;5619:52;:::i;:::-;5609:62;;;4841:836;;;;;;;:::o;5942:180::-;5998:6;6051:2;6039:9;6030:7;6026:23;6022:32;6019:52;;;6067:1;6064;6057:12;6019:52;6090:26;6106:9;6090:26;:::i;6127:543::-;6215:6;6223;6276:2;6264:9;6255:7;6251:23;6247:32;6244:52;;;6292:1;6289;6282:12;6244:52;6332:9;6319:23;6361:18;6402:2;6394:6;6391:14;6388:34;;;6418:1;6415;6408:12;6388:34;6441:50;6483:7;6474:6;6463:9;6459:22;6441:50;:::i;:::-;6431:60;;6544:2;6533:9;6529:18;6516:32;6500:48;;6573:2;6563:8;6560:16;6557:36;;;6589:1;6586;6579:12;6557:36;;6612:52;6656:7;6645:8;6634:9;6630:24;6612:52;:::i;:::-;6602:62;;;6127:543;;;;;:::o;6675:388::-;6743:6;6751;6804:2;6792:9;6783:7;6779:23;6775:32;6772:52;;;6820:1;6817;6810:12;6772:52;6859:9;6846:23;6878:31;6903:5;6878:31;:::i;:::-;6928:5;-1:-1:-1;6985:2:1;6970:18;;6957:32;6998:33;6957:32;6998:33;:::i;:::-;7050:7;7040:17;;;6675:388;;;;;:::o;7068:385::-;7154:6;7162;7170;7178;7231:3;7219:9;7210:7;7206:23;7202:33;7199:53;;;7248:1;7245;7238:12;7199:53;-1:-1:-1;;7271:23:1;;;7341:2;7326:18;;7313:32;;-1:-1:-1;7392:2:1;7377:18;;7364:32;;7443:2;7428:18;7415:32;;-1:-1:-1;7068:385:1;-1:-1:-1;7068:385:1:o;7458:356::-;7660:2;7642:21;;;7679:18;;;7672:30;7738:34;7733:2;7718:18;;7711:62;7805:2;7790:18;;7458:356::o;7819:127::-;7880:10;7875:3;7871:20;7868:1;7861:31;7911:4;7908:1;7901:15;7935:4;7932:1;7925:15;7951:125;8016:9;;;8037:10;;;8034:36;;;8050:18;;:::i;8081:380::-;8160:1;8156:12;;;;8203;;;8224:61;;8278:4;8270:6;8266:17;8256:27;;8224:61;8331:2;8323:6;8320:14;8300:18;8297:38;8294:161;;8377:10;8372:3;8368:20;8365:1;8358:31;8412:4;8409:1;8402:15;8440:4;8437:1;8430:15;8294:161;;8081:380;;;:::o;8466:168::-;8506:7;8572:1;8568;8564:6;8560:14;8557:1;8554:21;8549:1;8542:9;8535:17;8531:45;8528:71;;;8579:18;;:::i;:::-;-1:-1:-1;8619:9:1;;8466:168::o;8639:127::-;8700:10;8695:3;8691:20;8688:1;8681:31;8731:4;8728:1;8721:15;8755:4;8752:1;8745:15;8771:120;8811:1;8837;8827:35;;8842:18;;:::i;:::-;-1:-1:-1;8876:9:1;;8771:120::o;8896:399::-;9098:2;9080:21;;;9137:2;9117:18;;;9110:30;9176:34;9171:2;9156:18;;9149:62;-1:-1:-1;;;9242:2:1;9227:18;;9220:33;9285:3;9270:19;;8896:399::o;10014:127::-;10075:10;10070:3;10066:20;10063:1;10056:31;10106:4;10103:1;10096:15;10130:4;10127:1;10120:15;10146:128;10213:9;;;10234:11;;;10231:37;;;10248:18;;:::i;10279:127::-;10340:10;10335:3;10331:20;10328:1;10321:31;10371:4;10368:1;10361:15;10395:4;10392:1;10385:15;10411:135;10450:3;10471:17;;;10468:43;;10491:18;;:::i;:::-;-1:-1:-1;10538:1:1;10527:13;;10411:135::o;11088:545::-;11190:2;11185:3;11182:11;11179:448;;;11226:1;11251:5;11247:2;11240:17;11296:4;11292:2;11282:19;11366:2;11354:10;11350:19;11347:1;11343:27;11337:4;11333:38;11402:4;11390:10;11387:20;11384:47;;;-1:-1:-1;11425:4:1;11384:47;11480:2;11475:3;11471:12;11468:1;11464:20;11458:4;11454:31;11444:41;;11535:82;11553:2;11546:5;11543:13;11535:82;;;11598:17;;;11579:1;11568:13;11535:82;;;11539:3;;;11088:545;;;:::o;11809:1352::-;11935:3;11929:10;11962:18;11954:6;11951:30;11948:56;;;11984:18;;:::i;:::-;12013:97;12103:6;12063:38;12095:4;12089:11;12063:38;:::i;:::-;12057:4;12013:97;:::i;:::-;12165:4;;12229:2;12218:14;;12246:1;12241:663;;;;12948:1;12965:6;12962:89;;;-1:-1:-1;13017:19:1;;;13011:26;12962:89;-1:-1:-1;;11766:1:1;11762:11;;;11758:24;11754:29;11744:40;11790:1;11786:11;;;11741:57;13064:81;;12211:944;;12241:663;11035:1;11028:14;;;11072:4;11059:18;;-1:-1:-1;;12277:20:1;;;12395:236;12409:7;12406:1;12403:14;12395:236;;;12498:19;;;12492:26;12477:42;;12590:27;;;;12558:1;12546:14;;;;12425:19;;12395:236;;;12399:3;12659:6;12650:7;12647:19;12644:201;;;12720:19;;;12714:26;-1:-1:-1;;12803:1:1;12799:14;;;12815:3;12795:24;12791:37;12787:42;12772:58;12757:74;;12644:201;-1:-1:-1;;;;;12891:1:1;12875:14;;;12871:22;12858:36;;-1:-1:-1;11809:1352:1:o;13166:422::-;13255:1;13298:5;13255:1;13312:270;13333:7;13323:8;13320:21;13312:270;;;13392:4;13388:1;13384:6;13380:17;13374:4;13371:27;13368:53;;;13401:18;;:::i;:::-;13451:7;13441:8;13437:22;13434:55;;;13471:16;;;;13434:55;13550:22;;;;13510:15;;;;13312:270;;;13316:3;13166:422;;;;;:::o;13593:806::-;13642:5;13672:8;13662:80;;-1:-1:-1;13713:1:1;13727:5;;13662:80;13761:4;13751:76;;-1:-1:-1;13798:1:1;13812:5;;13751:76;13843:4;13861:1;13856:59;;;;13929:1;13924:130;;;;13836:218;;13856:59;13886:1;13877:10;;13900:5;;;13924:130;13961:3;13951:8;13948:17;13945:43;;;13968:18;;:::i;:::-;-1:-1:-1;;14024:1:1;14010:16;;14039:5;;13836:218;;14138:2;14128:8;14125:16;14119:3;14113:4;14110:13;14106:36;14100:2;14090:8;14087:16;14082:2;14076:4;14073:12;14069:35;14066:77;14063:159;;;-1:-1:-1;14175:19:1;;;14207:5;;14063:159;14254:34;14279:8;14273:4;14254:34;:::i;:::-;14324:6;14320:1;14316:6;14312:19;14303:7;14300:32;14297:58;;;14335:18;;:::i;:::-;14373:20;;13593:806;-1:-1:-1;;;13593:806:1:o;14404:131::-;14464:5;14493:36;14520:8;14514:4;14493:36;:::i;14540:112::-;14572:1;14598;14588:35;;14603:18;;:::i;:::-;-1:-1:-1;14637:9:1;;14540:112::o;14657:251::-;14727:6;14780:2;14768:9;14759:7;14755:23;14751:32;14748:52;;;14796:1;14793;14786:12;14748:52;14828:9;14822:16;14847:31;14872:5;14847:31;:::i;15222:425::-;15424:2;15406:21;;;15463:2;15443:18;;;15436:30;15502:34;15497:2;15482:18;;15475:62;15573:31;15568:2;15553:18;;15546:59;15637:3;15622:19;;15222:425::o;17883:401::-;18085:2;18067:21;;;18124:2;18104:18;;;18097:30;18163:34;18158:2;18143:18;;18136:62;-1:-1:-1;;;18229:2:1;18214:18;;18207:35;18274:3;18259:19;;17883:401::o;20668:980::-;20930:4;20978:3;20967:9;20963:19;21009:6;20998:9;20991:25;21035:2;21073:6;21068:2;21057:9;21053:18;21046:34;21116:3;21111:2;21100:9;21096:18;21089:31;21140:6;21175;21169:13;21206:6;21198;21191:22;21244:3;21233:9;21229:19;21222:26;;21283:2;21275:6;21271:15;21257:29;;21304:1;21314:195;21328:6;21325:1;21322:13;21314:195;;;21393:13;;-1:-1:-1;;;;;21389:39:1;21377:52;;21484:15;;;;21449:12;;;;21425:1;21343:9;21314:195;;;-1:-1:-1;;;;;;;21565:32:1;;;;21560:2;21545:18;;21538:60;-1:-1:-1;;;21629:3:1;21614:19;21607:35;21526:3;20668:980;-1:-1:-1;;;20668:980:1:o;22273:306::-;22361:6;22369;22377;22430:2;22418:9;22409:7;22405:23;22401:32;22398:52;;;22446:1;22443;22436:12;22398:52;22475:9;22469:16;22459:26;;22525:2;22514:9;22510:18;22504:25;22494:35;;22569:2;22558:9;22554:18;22548:25;22538:35;;22273:306;;;;;:::o
Swarm Source
ipfs://0abe63972131306ef2628dcca44ab49e1b3778bbd1754288094b5b901001136d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,339.84 | 0.000000000000000037 | <$0.000001 |
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.