ERC-20
Charity
Overview
Max Total Supply
100,000,000 DDOGS
Holders
179 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
DazedDog
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-25 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); 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); } interface IUniswapERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; } interface IUniswapFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapRouter01 { function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function factory() external pure returns (address); function WETH() external pure returns (address); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getamountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getamountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getamountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getamountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapRouter02 is IUniswapRouter01 { 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; } abstract contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = msg.sender; _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library EnumerableSet { struct Set { bytes32[] _values; mapping (bytes32 => uint256) _indexes; } function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); set._indexes[value] = set._values.length; return true; } else { return false; } } function _remove(Set storage set, bytes32 value) private returns (bool) { uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; bytes32 lastvalue = set._values[lastIndex]; set._values[toDeleteIndex] = lastvalue; set._indexes[lastvalue] = valueIndex; set._values.pop(); delete set._indexes[value]; return true; } else { return false; } } function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } function _length(Set storage set) private view returns (uint256) { return set._values.length; } function _at(Set storage set, uint256 index) private view returns (bytes32) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } struct Bytes32Set { Set _inner; } function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _add(set._inner, value); } function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _remove(set._inner, value); } function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { return _contains(set._inner, value); } function length(Bytes32Set storage set) internal view returns (uint256) { return _length(set._inner); } function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { return _at(set._inner, index); } struct AddressSet { Set _inner; } function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(uint160(value)))); } function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(uint160(value)))); } function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(uint160(value)))); } function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint160(uint256(_at(set._inner, index)))); } struct UintSet { Set _inner; } function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } } contract DazedDog is IERC20, Ownable { using Address for address; using EnumerableSet for EnumerableSet.AddressSet; mapping (address => uint256) public _balances; mapping (address => mapping (address => uint256)) public _allowances; mapping (address => uint256) public _sellLock; EnumerableSet.AddressSet private _excluded; EnumerableSet.AddressSet private _excludedFromSellLock; mapping (address => bool) public _blacklist; bool isBlacklist = true; string public constant _name = 'Dazed Dogs Token'; string public constant _symbol = 'DDOGS'; uint8 public constant _decimals = 9; uint256 public constant InitialSupply= 100 * 10**6 * 10**_decimals; uint256 swapLimit = 5 * 10**5 * 10**_decimals; bool isSwapPegged = true; uint16 public BuyLimitDivider=50; // 2% uint8 public BalanceLimitDivider=25; // 4% uint16 public SellLimitDivider=125; // 0.75% uint16 public MaxSellLockTime= 10 seconds; mapping (address => bool) isAuthorized; address public constant UniswapRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address public constant Dead = 0x000000000000000000000000000000000000dEaD; address dev_multisig; address donations_multisig; uint256 public _circulatingSupply =InitialSupply; uint256 public balanceLimit = _circulatingSupply; uint256 public sellLimit = _circulatingSupply; uint256 public buyLimit = _circulatingSupply; uint8 public _buyTax; uint8 public _sellTax; uint8 public _transferTax; uint8 public _liquidityTax; uint8 public _marketingTax; uint8 public _developmentTax; uint8 public _donationTax; bool isTokenSwapManual = false; bool public bot_killer = true; bool public gasSaver = true; address public _UniswapPairAddress; IUniswapRouter02 public _UniswapRouter; modifier onlyAuthorized() { require(_isAuthorized(msg.sender), "Caller not in Authorized"); _; } function _isAuthorized(address addr) private view returns (bool){ return addr==owner()||isAuthorized[addr]; } uint public launch_time; constructor () { launch_time = block.timestamp; uint256 deployerBalance=_circulatingSupply*9/10; _balances[msg.sender] = deployerBalance; emit Transfer(address(0), msg.sender, deployerBalance); uint256 injectBalance=_circulatingSupply-deployerBalance; _balances[address(this)]=injectBalance; emit Transfer(address(0), address(this),injectBalance); _UniswapRouter = IUniswapRouter02(UniswapRouter); _UniswapPairAddress = IUniswapFactory(_UniswapRouter.factory()).createPair(address(this), _UniswapRouter.WETH()); balanceLimit=InitialSupply/BalanceLimitDivider; sellLimit=InitialSupply/SellLimitDivider; buyLimit=InitialSupply/BuyLimitDivider; sellLockTime=2 seconds; _buyTax=10; _sellTax=10; _transferTax=10; _liquidityTax=30; _marketingTax=20; _developmentTax=30; _donationTax=20; _excluded.add(msg.sender); _excludedFromSellLock.add(UniswapRouter); _excludedFromSellLock.add(_UniswapPairAddress); _excludedFromSellLock.add(address(this)); } function _transfer(address sender, address recipient, uint256 amount) private{ require(sender != address(0), "Transfer from zero"); require(recipient != address(0), "Transfer to zero"); if(isBlacklist) { require(!_blacklist[sender] && !_blacklist[recipient], "Blacklisted!"); } bool isExcluded = (_excluded.contains(sender) || _excluded.contains(recipient) || isAuthorized[sender] || isAuthorized[recipient]); bool isContractTransfer=(sender==address(this) || recipient==address(this)); bool isLiquidityTransfer = ((sender == _UniswapPairAddress && recipient == UniswapRouter) || (recipient == _UniswapPairAddress && sender == UniswapRouter)); if(isContractTransfer || isLiquidityTransfer || isExcluded){ _feelessTransfer(sender, recipient, amount); } else{ if (!tradingEnabled) { if (sender != owner() && recipient != owner()) { if (bot_killer) { emit Transfer(sender,recipient,0); return; } else { require(tradingEnabled,"trading not yet enabled"); } } } bool isBuy=sender==_UniswapPairAddress|| sender == UniswapRouter; bool isSell=recipient==_UniswapPairAddress|| recipient == UniswapRouter; /// Penalty for 3 days uint8 _previousSellTax = _sellTax; if((block.timestamp - launch_time) < 1 days) { _sellTax = 25; } else if((block.timestamp - launch_time) < 2 days) { _sellTax = 20; } else if((block.timestamp - launch_time) < 3 days) { _sellTax = 15; } _taxedTransfer(sender,recipient,amount,isBuy,isSell); _sellTax = _previousSellTax; if(gasSaver) { delete isBuy; delete isSell; delete isContractTransfer; delete isExcluded; delete isLiquidityTransfer; } } } function _taxedTransfer(address sender, address recipient, uint256 amount,bool isBuy,bool isSell) private{ uint256 recipientBalance = _balances[recipient]; uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "Transfer exceeds balance"); swapLimit = sellLimit/2; uint8 tax; if(isSell){ if(!_excludedFromSellLock.contains(sender)){ require(_sellLock[sender]<=block.timestamp||sellLockDisabled,"Seller in sellLock"); _sellLock[sender]=block.timestamp+sellLockTime; } require(amount<=sellLimit,"Dump protection"); tax=_sellTax; } else if(isBuy){ require(recipientBalance+amount<=balanceLimit,"whale protection"); require(amount<=buyLimit, "whale protection"); tax=_buyTax; } else { require(recipientBalance+amount<=balanceLimit,"whale protection"); if(!_excludedFromSellLock.contains(sender)) require(_sellLock[sender]<=block.timestamp||sellLockDisabled,"Sender in Lock"); tax=_transferTax; } if((sender!=_UniswapPairAddress)&&(!manualConversion)&&(!_isSwappingContractModifier)) _swapContractToken(amount); uint256 contractToken=_calculateFee(amount, tax, _marketingTax+_liquidityTax+_developmentTax+_donationTax); uint256 taxedAmount=amount-(contractToken); _removeToken(sender,amount); _balances[address(this)] += contractToken; _addToken(recipient, taxedAmount); emit Transfer(sender,recipient,taxedAmount); } function _feelessTransfer(address sender, address recipient, uint256 amount) private{ uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "Transfer exceeds balance"); _removeToken(sender,amount); _addToken(recipient, amount); emit Transfer(sender,recipient,amount); } function _calculateFee(uint256 amount, uint8 tax, uint8 taxPercent) private pure returns (uint256) { return (amount*tax*taxPercent) / 10000; } function _addToken(address addr, uint256 amount) private { uint256 newAmount=_balances[addr]+amount; _balances[addr]=newAmount; } function _removeToken(address addr, uint256 amount) private { uint256 newAmount=_balances[addr]-amount; _balances[addr]=newAmount; } bool private _isTokenSwaping; uint256 public totalTokenSwapGenerated; uint256 public totalPayouts; uint8 public marketingShare=40; uint8 public developmentShare=30; uint8 public donationShare=30; uint256 public marketingBalance; uint256 public developmentBalance; uint256 public donationBalance; function _distributeFeesETH(uint256 ETHamount) private { uint256 marketingSplit = (ETHamount * marketingShare)/100; uint256 donationSplit = (ETHamount * donationShare)/100; uint256 developmentSplit = (ETHamount * developmentShare)/100; marketingBalance+=marketingSplit; donationBalance+=donationSplit; developmentBalance+=developmentSplit; } uint256 public totalLPETH; bool private _isSwappingContractModifier; modifier lockTheSwap { _isSwappingContractModifier = true; _; _isSwappingContractModifier = false; } function _swapContractToken(uint256 totalMax) private lockTheSwap{ uint256 contractBalance=_balances[address(this)]; uint16 totalTax=_liquidityTax+_marketingTax; uint256 tokenToSwap=swapLimit; if(tokenToSwap > totalMax) { if(isSwapPegged) { tokenToSwap = totalMax; } } if(contractBalance<tokenToSwap||totalTax==0){ return; } uint256 tokenForLiquidity=(tokenToSwap*_liquidityTax)/totalTax; uint256 tokenForMarketing= (tokenToSwap*_marketingTax)/totalTax; uint256 tokenFordonation= (tokenToSwap*_donationTax)/totalTax; uint256 tokenFordevelopment= (tokenToSwap*_developmentTax)/totalTax; uint256 liqToken=tokenForLiquidity/2; uint256 liqETHToken=tokenForLiquidity-liqToken; uint256 swapToken=liqETHToken+tokenForMarketing+tokenFordevelopment+tokenFordonation; uint256 initialETHBalance = address(this).balance; _swapTokenForETH(swapToken); uint256 newETH=(address(this).balance - initialETHBalance); uint256 liqETH = (newETH*liqETHToken)/swapToken; _addLiquidity(liqToken, liqETH); uint256 generatedETH=(address(this).balance - initialETHBalance); _distributeFeesETH(generatedETH); } function _swapTokenForETH(uint256 amount) private { _approve(address(this), address(_UniswapRouter), amount); address[] memory path = new address[](2); path[0] = address(this); path[1] = _UniswapRouter.WETH(); _UniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenamount, uint256 ETHamount) private { totalLPETH+=ETHamount; _approve(address(this), address(_UniswapRouter), tokenamount); _UniswapRouter.addLiquidityETH{value: ETHamount}( address(this), tokenamount, 0, 0, address(this), block.timestamp ); } /// @notice Utilities function ToolBox_destroy(uint256 amount) public onlyAuthorized { require(_balances[address(this)] >= amount); _balances[address(this)] -= amount; _circulatingSupply -= amount; emit Transfer(address(this), Dead, amount); } function ToolBox_getLimits() public view returns(uint256 balance, uint256 sell){ return(balanceLimit/10**_decimals, sellLimit/10**_decimals); } function ToolBox_getTaxes() public view returns(uint256 donationTax, uint256 developmentTax,uint256 liquidityTax,uint256 marketingTax, uint256 buyTax, uint256 sellTax, uint256 transferTax){ return (_donationTax, _developmentTax,_liquidityTax,_marketingTax,_buyTax,_sellTax,_transferTax); } function ToolBox_getAddressSellLockTimeInSeconds(address AddressToCheck) public view returns (uint256){ uint256 lockTime=_sellLock[AddressToCheck]; if(lockTime<=block.timestamp) { return 0; } return lockTime-block.timestamp; } function ToolBox_getSellLockTimeInSeconds() public view returns(uint256){ return sellLockTime; } bool public sellLockDisabled; uint256 public sellLockTime; bool public manualConversion; function ToolBox_SetPeggedSwap(bool isPegged) public onlyAuthorized { isSwapPegged = isPegged; } function ToolBox_SetMaxSwap(uint256 max) public onlyAuthorized { swapLimit = max; } function ToolBox_SetMaxLockTime(uint16 max) public onlyAuthorized { MaxSellLockTime = max; } /// @notice ACL Functions function SetAccess_SetDonationMultisig(address addy) public onlyAuthorized { donations_multisig = addy; } function SetAccess_SetDevMultisig(address addy) public onlyAuthorized { dev_multisig = addy; } function SetAccess_BlackListAddress(address addy, bool booly) public onlyAuthorized { _blacklist[addy] = booly; } function SetAccess_AddressStop() public onlyAuthorized { _sellLock[msg.sender]=block.timestamp+(365 days); } function SetAccess_FineAddress(address addy, uint256 amount) public onlyAuthorized { require(_balances[addy] >= amount, "Not enough tokens"); _balances[addy]-=(amount*10**_decimals); _balances[address(this)]+=(amount*10**_decimals); emit Transfer(addy, address(this), amount*10**_decimals); } function SetAccess_SetAuthorized(address addy, bool booly) public onlyAuthorized { isAuthorized[addy] = booly; } function SetAccess_SeizeAddress(address addy) public onlyAuthorized { uint256 seized = _balances[addy]; _balances[addy]=0; _balances[address(this)]+=seized; emit Transfer(addy, address(this), seized); } function SetAccess_ExcludeAccountFromFees(address account) public onlyAuthorized { _excluded.add(account); } function SetAccess_IncludeAccountToFees(address account) public onlyAuthorized { _excluded.remove(account); } function SetAccess_ExcludeAccountFromSellLock(address account) public onlyAuthorized { _excludedFromSellLock.add(account); } function SetAccess_IncludeAccountToSellLock(address account) public onlyAuthorized { _excludedFromSellLock.remove(account); } function Access_WithdrawMarketingETH() public onlyAuthorized{ uint256 amount=marketingBalance; marketingBalance=0; address sender = msg.sender; (bool sent,) =sender.call{value: (amount)}(""); require(sent,"withdraw failed"); } function Access_WithdrawdevelopmentETH() public onlyAuthorized{ require(msg.sender == dev_multisig, "Wrong actor"); uint256 amount=developmentBalance; developmentBalance=0; address sender = msg.sender; (bool sent,) =sender.call{value: (amount)}(""); require(sent,"withdraw failed"); } function Access_WithdrawdonationETH() public onlyAuthorized{ require(msg.sender == donations_multisig, "Wrong actor"); uint256 amount=donationBalance; donationBalance=0; address sender = msg.sender; (bool sent,) =sender.call{value: (amount)}(""); require(sent,"withdraw failed"); } function Access_Harakiri() public onlyAuthorized { selfdestruct(payable(msg.sender)); } function ToolBox_ActivateGasSaver(bool booly) public onlyAuthorized { gasSaver = booly; } function ToolBox_SwitchManualETHConversion(bool manual) public onlyAuthorized{ manualConversion=manual; } function ToolBox_DisableSellLock(bool disabled) public onlyAuthorized{ sellLockDisabled=disabled; } function ToolBox_SetSellLockTime(uint256 sellLockSeconds)public onlyAuthorized{ sellLockTime=sellLockSeconds; } function ToolBox_SetTaxes(uint8 donationTaxes, uint8 developmentTaxes, uint8 liquidityTaxes, uint8 marketingTaxes,uint8 buyTax, uint8 sellTax, uint8 transferTax) public onlyAuthorized{ uint8 totalTax=donationTaxes + developmentTaxes +liquidityTaxes+marketingTaxes; require(totalTax==100, "burn+liq+marketing needs to equal 100%"); _donationTax = donationTaxes; _developmentTax = developmentTaxes; _liquidityTax=liquidityTaxes; _marketingTax=marketingTaxes; _buyTax=buyTax; _sellTax=sellTax; _transferTax=transferTax; } function ToolBox_ChangeMarketingShare(uint8 newShare) public onlyAuthorized{ marketingShare=newShare; } function ToolBox_ChangedevelopmentShare(uint8 newShare) public onlyAuthorized{ developmentShare=newShare; } function ToolBox_ChangedonationShare(uint8 newShare) public onlyAuthorized{ donationShare=newShare; } function ToolBox_ManualGenerateTokenSwapBalance(uint256 _qty) public onlyAuthorized{ _swapContractToken(_qty * 10**9); } function ToolBox_UpdateLimits(uint256 newBalanceLimit, uint256 newSellLimit) public onlyAuthorized{ newBalanceLimit=newBalanceLimit*10**_decimals; newSellLimit=newSellLimit*10**_decimals; balanceLimit = newBalanceLimit; sellLimit = newSellLimit; } bool public tradingEnabled; address private _liquidityTokenAddress; function ControlPanel_EnableTrading(bool booly) public onlyAuthorized{ tradingEnabled = booly; } function ControlPanel_LiquidityTokenAddress(address liquidityTokenAddress) public onlyAuthorized{ _liquidityTokenAddress=liquidityTokenAddress; } function ToolBox_RescueTokens(address tknAddress) public onlyAuthorized { IERC20 token = IERC20(tknAddress); uint256 ourBalance = token.balanceOf(address(this)); require(ourBalance>0, "No tokens in our balance"); token.transfer(msg.sender, ourBalance); } function ToolBox_setBlacklistEnabled(bool isBlacklistEnabled) public onlyAuthorized { isBlacklist = isBlacklistEnabled; } function ToolBox_setContractTokenSwapManual(bool manual) public onlyAuthorized { isTokenSwapManual = manual; } function ToolBox_setBlacklistedAddress(address toBlacklist) public onlyAuthorized { _blacklist[toBlacklist] = true; } function ToolBox_removeBlacklistedAddress(address toRemove) public onlyAuthorized { _blacklist[toRemove] = false; } function ToolBox_AvoidLocks() public onlyAuthorized{ (bool sent,) =msg.sender.call{value: (address(this).balance)}(""); require(sent); } receive() external payable {} fallback() external payable {} function getOwner() external view override returns (address) { return owner(); } function name() external pure override returns (string memory) { return _name; } function symbol() external pure override returns (string memory) { return _symbol; } function decimals() external pure override returns (uint8) { return _decimals; } function totalSupply() external view override returns (uint256) { return _circulatingSupply; } function balanceOf(address account) external view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) external override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address _owner, address spender) external view override returns (uint256) { return _allowances[_owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "Approve from zero"); require(spender != address(0), "Approve to zero"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][msg.sender]; require(currentAllowance >= amount, "Transfer > allowance"); _approve(sender, msg.sender, currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) external returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) { uint256 currentAllowance = _allowances[msg.sender][spender]; require(currentAllowance >= subtractedValue, "<0 allowance"); _approve(msg.sender, spender, currentAllowance - subtractedValue); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"Access_Harakiri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Access_WithdrawMarketingETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Access_WithdrawdevelopmentETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Access_WithdrawdonationETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BalanceLimitDivider","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"ControlPanel_EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityTokenAddress","type":"address"}],"name":"ControlPanel_LiquidityTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Dead","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxSellLockTime","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SetAccess_AddressStop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"SetAccess_BlackListAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"SetAccess_ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"SetAccess_ExcludeAccountFromSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SetAccess_FineAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"SetAccess_IncludeAccountToFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"SetAccess_IncludeAccountToSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"SetAccess_SeizeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"SetAccess_SetAuthorized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"SetAccess_SetDevMultisig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"SetAccess_SetDonationMultisig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"ToolBox_ActivateGasSaver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ToolBox_AvoidLocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"ToolBox_ChangeMarketingShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"ToolBox_ChangedevelopmentShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"ToolBox_ChangedonationShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"disabled","type":"bool"}],"name":"ToolBox_DisableSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_qty","type":"uint256"}],"name":"ToolBox_ManualGenerateTokenSwapBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tknAddress","type":"address"}],"name":"ToolBox_RescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"max","type":"uint16"}],"name":"ToolBox_SetMaxLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ToolBox_SetMaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isPegged","type":"bool"}],"name":"ToolBox_SetPeggedSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellLockSeconds","type":"uint256"}],"name":"ToolBox_SetSellLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"donationTaxes","type":"uint8"},{"internalType":"uint8","name":"developmentTaxes","type":"uint8"},{"internalType":"uint8","name":"liquidityTaxes","type":"uint8"},{"internalType":"uint8","name":"marketingTaxes","type":"uint8"},{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint8","name":"transferTax","type":"uint8"}],"name":"ToolBox_SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"ToolBox_SwitchManualETHConversion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBalanceLimit","type":"uint256"},{"internalType":"uint256","name":"newSellLimit","type":"uint256"}],"name":"ToolBox_UpdateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ToolBox_destroy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"AddressToCheck","type":"address"}],"name":"ToolBox_getAddressSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ToolBox_getLimits","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ToolBox_getSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ToolBox_getTaxes","outputs":[{"internalType":"uint256","name":"donationTax","type":"uint256"},{"internalType":"uint256","name":"developmentTax","type":"uint256"},{"internalType":"uint256","name":"liquidityTax","type":"uint256"},{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"},{"internalType":"uint256","name":"transferTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"ToolBox_removeBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isBlacklistEnabled","type":"bool"}],"name":"ToolBox_setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toBlacklist","type":"address"}],"name":"ToolBox_setBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"ToolBox_setContractTokenSwapManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_UniswapPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_UniswapRouter","outputs":[{"internalType":"contract IUniswapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_donationTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_sellLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"balanceLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bot_killer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"donationBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"donationShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gasSaver","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"launch_time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualConversion","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalLPETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPayouts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokenSwapGenerated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526009805460ff191660011781556200001e90600a62000615565b6200002d906207a120620006d4565b600a908155600b80546001600160401b031916660a007d19003201179055620000599060099062000615565b62000069906305f5e100620006d4565b600f819055601081905560118190556012556013805462ffffff60381b191669010100000000000000001790556019805462ffffff1916621e1e28179055348015620000b457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35042601555600f54600090600a9062000110906009620006d4565b6200011c9190620005a9565b336000818152600160205260408082208490555192935090916000805160206200430f83398151915290620001549085815260200190565b60405180910390a3600081600f546200016e9190620006f6565b306000818152600160205260408082208490555192935090916000805160206200430f83398151915290620001a69085815260200190565b60405180910390a3601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200020e57600080fd5b505afa15801562000223573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000249919062000577565b6001600160a01b031663c9c6539630601460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a757600080fd5b505afa158015620002bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e2919062000577565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200032b57600080fd5b505af115801562000340573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000366919062000577565b601380546001600160a01b03929092166a010000000000000000000002600160501b600160f01b0319909216919091179055600b5460ff630100000090910416620003b46009600a62000615565b620003c4906305f5e100620006d4565b620003d09190620005a9565b601055600b54640100000000900461ffff16620003f06009600a62000615565b62000400906305f5e100620006d4565b6200040c9190620005a9565b601155600b54610100900461ffff16620004296009600a62000615565b62000439906305f5e100620006d4565b620004459190620005a9565b6012556002601f556013805466ffffffffffffff191666141e141e0a0a0a1790556200047f60043362000505602090811b6200247417901c565b50620004af737a250d5630b4cf539739df2c5dacb4c659f2488d60066200050560201b620024741790919060201c565b50620004e06013600a9054906101000a90046001600160a01b031660066200050560201b620024741790919060201c565b50620004fc3060066200050560201b620024741790919060201c565b50505062000726565b60006200051c836001600160a01b03841662000525565b90505b92915050565b60008181526001830160205260408120546200056e575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200051f565b5060006200051f565b6000602082840312156200058a57600080fd5b81516001600160a01b0381168114620005a257600080fd5b9392505050565b600082620005c757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200060d578160001904821115620005f157620005f162000710565b80851615620005ff57918102915b93841c9390800290620005d1565b509250929050565b60006200051c60ff84168360008262000631575060016200051f565b8162000640575060006200051f565b8160018114620006595760028114620006645762000684565b60019150506200051f565b60ff84111562000678576200067862000710565b50506001821b6200051f565b5060208310610133831016604e8410600b8410161715620006a9575081810a6200051f565b620006b58383620005cc565b8060001904821115620006cc57620006cc62000710565b029392505050565b6000816000190483118215151615620006f157620006f162000710565b500290565b6000828210156200070b576200070b62000710565b500390565b634e487b7160e01b600052601160045260246000fd5b613bd980620007366000396000f3fe60806040526004361061053f5760003560e01c8063762bb282116102ba578063b09f126611610171578063d84a7fe7116100de578063ed11f46a1161009a578063f61c0d3d11610077578063f61c0d3d146111a6578063f88b0e46146111bb578063fb272987146111d1578063fe3e3bb6146111fe57005b8063ed11f46a14611150578063f2fde38b14611166578063f30b7c371461118657005b8063d84a7fe714611075578063dad6809914611095578063dcdd7064146110b5578063dd62ed3e146110d5578063eadb97371461111b578063ebc8f8a91461113057005b8063ca9ec1991161012d578063ca9ec19914610fa4578063cb69d35414610fc3578063cd9cbd7f14610fe3578063d28d885214610ff8578063d4cf920614611034578063d65af4f21461105457005b8063b09f126614610ed6578063ba46855b14610f07578063bbca495f14610f27578063c4a5f01214610f47578063c7639d8014610f67578063c9ecbb5114610f8f57005b8063954ea66511610227578063a20623ce116101e3578063a9059cbb116101c0578063a9059cbb14610e55578063a9e499db14610e75578063ab0b364c14610e95578063b07d7d8914610eb657005b8063a20623ce14610def578063a253c06e14610e1f578063a457c2d714610e3557005b8063954ea66514610d2057806395d89b4114610d405780639962bede14610d6e5780639cee8a6214610d8e5780639d65f0df14610dae578063a1ef429714610dcf57005b80638816bcb6116102765780638816bcb614610c84578063887c60fb14610ca4578063893d20e814610cc35780638d48e2ae14610ce15780638da5cb5b14610cc35780638fe03ffa14610d0057005b8063762bb28214610be957806376bec98114610bff57806376d2a1b514610c1f57806379da8c4f14610c3f57806382c4767b14610c5457806386d0ada814610c6a57005b8063395093511161040e5780634f91e48c1161037b57806361923705116103375780636ebcf607116103145780636ebcf60714610b5c5780636f84395c14610b8957806370a0823114610b9e578063715018a614610bd457005b80636192370514610b0657806365c0fa0714610b2657806366ae34cb14610b4657005b80634f91e48c14610a5a5780635554b18114610a70578063589210d914610a9a57806358e5536514610ab057806359bb44af14610ac65780635f82231214610ae657005b806342a11095116103ca57806342a11095146109aa57806343665b91146109c45780634655a5e2146109e4578063481dbf2d14610a0457806348e907b714610a255780634ada218b14610a3b57005b806339509351146109095780633bc9a5ed146109295780633bf079b91461093e5780633cc39b7a1461095e5780634025f13f146109745780634089b1701461099457005b80631fb624da116104ac578063311a869711610468578063311a869714610866578063313ce5671461088757806332424aa31461089b578063340e5789146108b05780633478154b146108c6578063382e329a146108e857005b80631fb624da146107305780632222f2f41461075057806323b872dd146107c65780632a24e064146107e65780632d5caf21146108255780632d8828631461084557005b80630fd99e16116104fb5780630fd99e1614610671578063110a00c0146106a657806317391e49146106c657806318160ddd146106e65780631eb25d13146106fb5780631f8b845e1461071057005b8063020cc4c414610548578063024c2ddd1461056857806305462aae146105b357806306fdde03146105d357806309218ee714610615578063095ea7b31461064157005b3661054657005b005b34801561055457600080fd5b506105466105633660046136f3565b61121e565b34801561057457600080fd5b506105a061058336600461361f565b600260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b3480156105bf57600080fd5b506105466105ce3660046135e5565b61125f565b3480156105df57600080fd5b5060408051808201909152601081526f2230bd32b2102237b3b9902a37b5b2b760811b60208201525b6040516105aa9190613874565b34801561062157600080fd5b5060195461062f9060ff1681565b60405160ff90911681526020016105aa565b34801561064d57600080fd5b5061066161065c3660046136c7565b6112ae565b60405190151581526020016105aa565b34801561067d57600080fd5b50600b5461069390600160201b900461ffff1681565b60405161ffff90911681526020016105aa565b3480156106b257600080fd5b506105466106c13660046135e5565b6112c5565b3480156106d257600080fd5b5060135461062f9062010000900460ff1681565b3480156106f257600080fd5b50600f546105a0565b34801561070757600080fd5b506105a06112f9565b34801561071c57600080fd5b50600b5461069390610100900461ffff1681565b34801561073c57600080fd5b5061054661074b3660046135e5565b611316565b34801561075c57600080fd5b506013546040805160ff600160301b840481168252600160281b84048116602083015263010000008404811692820192909252600160201b83048216606082015281831660808201526101008304821660a0820152620100009092041660c082015260e0016105aa565b3480156107d257600080fd5b506106616107e1366004613658565b6113a9565b3480156107f257600080fd5b5060135461080d90600160501b90046001600160a01b031681565b6040516001600160a01b0390911681526020016105aa565b34801561083157600080fd5b506105466108403660046136c7565b611440565b34801561085157600080fd5b5060135461062f90600160201b900460ff1681565b34801561087257600080fd5b50600b5461062f906301000000900460ff1681565b34801561089357600080fd5b50600961062f565b3480156108a757600080fd5b5061062f600981565b3480156108bc57600080fd5b506105a0601b5481565b3480156108d257600080fd5b50600b5461069390600160301b900461ffff1681565b3480156108f457600080fd5b5060135461062f906301000000900460ff1681565b34801561091557600080fd5b506106616109243660046136c7565b61157e565b34801561093557600080fd5b506105466115b5565b34801561094a57600080fd5b506105466109593660046137ee565b611632565b34801561096a57600080fd5b506105a0601d5481565b34801561098057600080fd5b5061054661098f3660046135e5565b611771565b3480156109a057600080fd5b506105a060185481565b3480156109b657600080fd5b5060135461062f9060ff1681565b3480156109d057600080fd5b506105466109df3660046135e5565b6118ea565b3480156109f057600080fd5b506105a06109ff3660046135e5565b611931565b348015610a1057600080fd5b5060135461062f90600160281b900460ff1681565b348015610a3157600080fd5b506105a060175481565b348015610a4757600080fd5b5060205461066190610100900460ff1681565b348015610a6657600080fd5b506105a060115481565b348015610a7c57600080fd5b50610a8561196b565b604080519283526020830191909152016105aa565b348015610aa657600080fd5b506105a060125481565b348015610abc57600080fd5b506105a0601a5481565b348015610ad257600080fd5b50610546610ae13660046135e5565b6119a8565b348015610af257600080fd5b50610546610b01366004613751565b6119d8565b348015610b1257600080fd5b50610546610b213660046137d3565b611a02565b348015610b3257600080fd5b50610546610b41366004613699565b611a45565b348015610b5257600080fd5b506105a060155481565b348015610b6857600080fd5b506105a0610b773660046135e5565b60016020526000908152604090205481565b348015610b9557600080fd5b50601f546105a0565b348015610baa57600080fd5b506105a0610bb93660046135e5565b6001600160a01b031660009081526001602052604090205490565b348015610be057600080fd5b50610546611a95565b348015610bf557600080fd5b506105a060105481565b348015610c0b57600080fd5b50610546610c1a3660046136f3565b611b48565b348015610c2b57600080fd5b50610546610c3a3660046135e5565b611b87565b348015610c4b57600080fd5b50610546611bb7565b348015610c6057600080fd5b5061080d61dead81565b348015610c7657600080fd5b506020546106619060ff1681565b348015610c9057600080fd5b50610546610c9f3660046135e5565b611bfc565b348015610cb057600080fd5b50601e5461066190610100900460ff1681565b348015610ccf57600080fd5b506000546001600160a01b031661080d565b348015610ced57600080fd5b5060195461062f90610100900460ff1681565b348015610d0c57600080fd5b50610546610d1b3660046135e5565b611c42565b348015610d2c57600080fd5b5060145461080d906001600160a01b031681565b348015610d4c57600080fd5b5060408051808201909152600581526444444f475360d81b6020820152610608565b348015610d7a57600080fd5b50610546610d893660046137d3565b611c89565b348015610d9a57600080fd5b50610546610da9366004613699565b611cc4565b348015610dba57600080fd5b5060135461062f90600160301b900460ff1681565b348015610ddb57600080fd5b50610546610dea3660046136f3565b611d14565b348015610dfb57600080fd5b50610661610e0a3660046135e5565b60086020526000908152604090205460ff1681565b348015610e2b57600080fd5b506105a0600f5481565b348015610e4157600080fd5b50610661610e503660046136c7565b611d53565b348015610e6157600080fd5b50610661610e703660046136c7565b611dcf565b348015610e8157600080fd5b50610546610e9036600461372d565b611ddc565b348015610ea157600080fd5b5060135461066190600160481b900460ff1681565b348015610ec257600080fd5b50610546610ed1366004613751565b611e26565b348015610ee257600080fd5b506106086040518060400160405280600581526020016444444f475360d81b81525081565b348015610f1357600080fd5b50610546610f223660046136f3565b611e50565b348015610f3357600080fd5b5060195461062f9062010000900460ff1681565b348015610f5357600080fd5b50610546610f62366004613783565b611e9b565b348015610f7357600080fd5b5061080d737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610f9b57600080fd5b50610546611efa565b348015610fb057600080fd5b5060135461062f90610100900460ff1681565b348015610fcf57600080fd5b50610546610fde366004613751565b612007565b348015610fef57600080fd5b506105466120af565b34801561100457600080fd5b506106086040518060400160405280601081526020016f2230bd32b2102237b3b9902a37b5b2b760811b81525081565b34801561104057600080fd5b5061054661104f3660046136f3565b612136565b34801561106057600080fd5b5060135461066190600160401b900460ff1681565b34801561108157600080fd5b50610546611090366004613751565b61216e565b3480156110a157600080fd5b506105466110b03660046136f3565b6121a9565b3480156110c157600080fd5b506105466110d03660046137d3565b6121e1565b3480156110e157600080fd5b506105a06110f036600461361f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561112757600080fd5b50610546612222565b34801561113c57600080fd5b5061054661114b3660046136f3565b61224a565b34801561115c57600080fd5b506105a0601c5481565b34801561117257600080fd5b506105466111813660046135e5565b612293565b34801561119257600080fd5b506105466111a13660046135e5565b6123bc565b3480156111b257600080fd5b50610546612405565b3480156111c757600080fd5b506105a0601f5481565b3480156111dd57600080fd5b506105a06111ec3660046135e5565b60036020526000908152604090205481565b34801561120a57600080fd5b506105466112193660046135e5565b612444565b61122733612489565b61124c5760405162461bcd60e51b8152600401611243906138c9565b60405180910390fd5b6020805460ff1916911515919091179055565b61126833612489565b6112845760405162461bcd60e51b8152600401611243906138c9565b602080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60006112bb3384846124c0565b5060015b92915050565b6112ce33612489565b6112ea5760405162461bcd60e51b8152600401611243906138c9565b6112f5600482612474565b5050565b6113056009600a613a3d565b611313906305f5e100613ae8565b81565b61131f33612489565b61133b5760405162461bcd60e51b8152600401611243906138c9565b6001600160a01b03811660009081526001602052604080822080549083905530835290822080549192839261137190849061399b565b909155505060405181815230906001600160a01b03841690600080516020613b84833981519152906020015b60405180910390a35050565b60006113b68484846125b3565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156114215760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401611243565b61143585336114308685613b07565b6124c0565b506001949350505050565b61144933612489565b6114655760405162461bcd60e51b8152600401611243906138c9565b6001600160a01b0382166000908152600160205260409020548111156114c15760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b6044820152606401611243565b6114cd6009600a613a3d565b6114d79082613ae8565b6001600160a01b038316600090815260016020526040812080549091906114ff908490613b07565b9091555061151190506009600a613a3d565b61151b9082613ae8565b306000908152600160205260408120805490919061153a90849061399b565b909155503090506001600160a01b038316600080516020613b848339815191526115666009600a613a3d565b6115709085613ae8565b60405190815260200161139d565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916112bb91859061143090869061399b565b6115be33612489565b6115da5760405162461bcd60e51b8152600401611243906138c9565b604051600090339047908381818185875af1925050503d806000811461161c576040519150601f19603f3d011682016040523d82523d6000602084013e611621565b606091505b505090508061162f57600080fd5b50565b61163b33612489565b6116575760405162461bcd60e51b8152600401611243906138c9565b60008486611665898b6139b3565b61166f91906139b3565b61167991906139b3565b90508060ff166064146116dd5760405162461bcd60e51b815260206004820152602660248201527f6275726e2b6c69712b6d61726b6574696e67206e6565647320746f20657175616044820152656c203130302560d01b6064820152608401611243565b506013805460ff928316620100000262ff0000199484166101000261ffff19978516600160201b0264ff00000000199986166301000000029990991664ffff000000199a8616600160281b0265ff0000000000199c8716600160301b029c909c1666ffff000000000019909416939093179a909a179890981617959095179390931691909216179390931792909216179055565b61177a33612489565b6117965760405162461bcd60e51b8152600401611243906138c9565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b1580156117da57600080fd5b505afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611812919061376a565b9050600081116118645760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e636500000000000000006044820152606401611243565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b1580156118ac57600080fd5b505af11580156118c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e49190613710565b50505050565b6118f333612489565b61190f5760405162461bcd60e51b8152600401611243906138c9565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526003602052604081205442811161195a5750600092915050565b6119644282613b07565b9392505050565b60008061197a6009600a613a3d565b60105461198791906139d8565b6119936009600a613a3d565b6011546119a091906139d8565b915091509091565b6119b133612489565b6119cd5760405162461bcd60e51b8152600401611243906138c9565b6112f5600682612474565b6119e133612489565b6119fd5760405162461bcd60e51b8152600401611243906138c9565b601f55565b611a0b33612489565b611a275760405162461bcd60e51b8152600401611243906138c9565b6019805460ff909216620100000262ff000019909216919091179055565b611a4e33612489565b611a6a5760405162461bcd60e51b8152600401611243906138c9565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b33611aa86000546001600160a01b031690565b6001600160a01b031614611afe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611243565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b611b5133612489565b611b6d5760405162461bcd60e51b8152600401611243906138c9565b601e80549115156101000261ff0019909216919091179055565b611b9033612489565b611bac5760405162461bcd60e51b8152600401611243906138c9565b6112f5600682612a65565b611bc033612489565b611bdc5760405162461bcd60e51b8152600401611243906138c9565b611bea426301e1338061399b565b33600090815260036020526040902055565b611c0533612489565b611c215760405162461bcd60e51b8152600401611243906138c9565b6001600160a01b03166000908152600860205260409020805460ff19169055565b611c4b33612489565b611c675760405162461bcd60e51b8152600401611243906138c9565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b611c9233612489565b611cae5760405162461bcd60e51b8152600401611243906138c9565b6019805460ff191660ff92909216919091179055565b611ccd33612489565b611ce95760405162461bcd60e51b8152600401611243906138c9565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b611d1d33612489565b611d395760405162461bcd60e51b8152600401611243906138c9565b602080549115156101000261ff0019909216919091179055565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611db65760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401611243565b611dc533856114308685613b07565b5060019392505050565b60006112bb3384846125b3565b611de533612489565b611e015760405162461bcd60e51b8152600401611243906138c9565b600b805461ffff909216600160301b0267ffff00000000000019909216919091179055565b611e2f33612489565b611e4b5760405162461bcd60e51b8152600401611243906138c9565b600a55565b611e5933612489565b611e755760405162461bcd60e51b8152600401611243906138c9565b601380549115156701000000000000000267ff0000000000000019909216919091179055565b611ea433612489565b611ec05760405162461bcd60e51b8152600401611243906138c9565b611ecc6009600a613a3d565b611ed69083613ae8565b9150611ee46009600a613a3d565b611eee9082613ae8565b60109290925550601155565b611f0333612489565b611f1f5760405162461bcd60e51b8152600401611243906138c9565b600e546001600160a01b03163314611f675760405162461bcd60e51b815260206004820152600b60248201526a2bb937b7339030b1ba37b960a91b6044820152606401611243565b601c805460009182905560405190913391829084905b60006040518083038185875af1925050503d8060008114611fba576040519150601f19603f3d011682016040523d82523d6000602084013e611fbf565b606091505b50509050806120025760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b6044820152606401611243565b505050565b61201033612489565b61202c5760405162461bcd60e51b8152600401611243906138c9565b3060009081526001602052604090205481111561204857600080fd5b3060009081526001602052604081208054839290612067908490613b07565b9250508190555080600f60008282546120809190613b07565b909155505060405181815261dead903090600080516020613b848339815191529060200160405180910390a350565b6120b833612489565b6120d45760405162461bcd60e51b8152600401611243906138c9565b600d546001600160a01b0316331461211c5760405162461bcd60e51b815260206004820152600b60248201526a2bb937b7339030b1ba37b960a91b6044820152606401611243565b601b80546000918290556040519091339182908490611f7d565b61213f33612489565b61215b5760405162461bcd60e51b8152600401611243906138c9565b6009805460ff1916911515919091179055565b61217733612489565b6121935760405162461bcd60e51b8152600401611243906138c9565b61162f6121a482633b9aca00613ae8565b612a7a565b6121b233612489565b6121ce5760405162461bcd60e51b8152600401611243906138c9565b600b805460ff1916911515919091179055565b6121ea33612489565b6122065760405162461bcd60e51b8152600401611243906138c9565b6019805460ff9092166101000261ff0019909216919091179055565b61222b33612489565b6122475760405162461bcd60e51b8152600401611243906138c9565b33ff5b61225333612489565b61226f5760405162461bcd60e51b8152600401611243906138c9565b60138054911515600160481b0269ff00000000000000000019909216919091179055565b336122a66000546001600160a01b031690565b6001600160a01b0316146122fc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611243565b6001600160a01b0381166123615760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611243565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6123c533612489565b6123e15760405162461bcd60e51b8152600401611243906138c9565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b61240e33612489565b61242a5760405162461bcd60e51b8152600401611243906138c9565b601a80546000918290556040519091339182908490611f7d565b61244d33612489565b6124695760405162461bcd60e51b8152600401611243906138c9565b6112f5600482612a65565b6000611964836001600160a01b038416612c60565b600080546001600160a01b03838116911614806112bf5750506001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b03831661250a5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401611243565b6001600160a01b0382166125525760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401611243565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166125fe5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401611243565b6001600160a01b0382166126475760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401611243565b60095460ff16156126cf576001600160a01b03831660009081526008602052604090205460ff1615801561269457506001600160a01b03821660009081526008602052604090205460ff16155b6126cf5760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b6044820152606401611243565b60006126dc600485612caf565b806126ed57506126ed600484612caf565b8061271057506001600160a01b0384166000908152600c602052604090205460ff165b8061273357506001600160a01b0383166000908152600c602052604090205460ff165b905060006001600160a01b03851630148061275657506001600160a01b03841630145b6013549091506000906001600160a01b03878116600160501b9092041614801561279c57506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b806127e257506013546001600160a01b03868116600160501b909204161480156127e257506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b905081806127ed5750805b806127f55750825b1561280a57612805868686612cd1565b612a5d565b602054610100900460ff166128f7576000546001600160a01b0387811691161480159061284557506000546001600160a01b03868116911614155b156128f757601354600160401b900460ff16156128a057846001600160a01b0316866001600160a01b0316600080516020613b84833981519152600060405161289091815260200190565b60405180910390a3505050505050565b602054610100900460ff166128f75760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401611243565b6013546000906001600160a01b03888116600160501b90920416148061293957506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b6013549091506000906001600160a01b03888116600160501b90920416148061297e57506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b601354601554919250610100900460ff1690620151809061299f9042613b07565b10156129b9576013805461ff001916611900179055612a0d565b6202a300601554426129cb9190613b07565b10156129e5576013805461ff001916611400179055612a0d565b6203f480601554426129f79190613b07565b1015612a0d576013805461ff001916610f001790555b612a1a8989898686612d8a565b6013805460ff8084166101000261ff00199092169190911791829055600160481b9091041615612a595760009250600091506000945060009550600093505b5050505b505050505050565b6000611964836001600160a01b03841661314c565b601e805460ff191660019081179091553060009081526020919091526040812054601354909190612abf90600160201b810460ff9081169163010000009004166139b3565b60ff1690506000600a54905083811115612ae157600b5460ff1615612ae15750825b80831080612af1575061ffff8216155b15612afe57505050612c53565b60135460009061ffff841690612b1e906301000000900460ff1684613ae8565b612b2891906139d8565b60135490915060009061ffff851690612b4b90600160201b900460ff1685613ae8565b612b5591906139d8565b60135490915060009061ffff861690612b7890600160301b900460ff1686613ae8565b612b8291906139d8565b60135490915060009061ffff871690612ba590600160281b900460ff1687613ae8565b612baf91906139d8565b90506000612bbe6002866139d8565b90506000612bcc8287613b07565b905060008484612bdc888561399b565b612be6919061399b565b612bf0919061399b565b905047612bfc82613239565b6000612c088247613b07565b9050600083612c178684613ae8565b612c2191906139d8565b9050612c2d8682613399565b6000612c398447613b07565b9050612c4481613470565b50505050505050505050505050505b50601e805460ff19169055565b6000818152600183016020526040812054612ca7575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556112bf565b5060006112bf565b6001600160a01b03811660009081526001830160205260408120541515611964565b6001600160a01b03831660009081526001602052604090205481811015612d355760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401611243565b612d3f8483613532565b612d498383613577565b826001600160a01b0316846001600160a01b0316600080516020613b8483398151915284604051612d7c91815260200190565b60405180910390a350505050565b6001600160a01b0380851660009081526001602052604080822054928816825290205484811015612df85760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401611243565b6002601154612e0791906139d8565b600a5560008315612f0c57612e1d600689612caf565b612eb7576001600160a01b03881660009081526003602052604090205442101580612e4f5750601e54610100900460ff165b612e905760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b6044820152606401611243565b601f54612e9d904261399b565b6001600160a01b0389166000908152600360205260409020555b601154861115612efb5760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b6044820152606401611243565b50601354610100900460ff1661301e565b8415612f6b57601054612f1f878561399b565b1115612f3d5760405162461bcd60e51b815260040161124390613900565b601254861115612f5f5760405162461bcd60e51b815260040161124390613900565b5060135460ff1661301e565b601054612f78878561399b565b1115612f965760405162461bcd60e51b815260040161124390613900565b612fa1600689612caf565b613010576001600160a01b03881660009081526003602052604090205442101580612fd35750601e54610100900460ff165b6130105760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b6044820152606401611243565b5060135462010000900460ff165b6013546001600160a01b03898116600160501b9092041614801590613046575060205460ff16155b80156130555750601e5460ff16155b156130635761306386612a7a565b6013546000906130bc908890849060ff600160301b8204811691600160281b81048216916130a39163010000008104821691600160201b909104166139b3565b6130ad91906139b3565b6130b791906139b3565b61359b565b905060006130ca8289613b07565b90506130d68a89613532565b30600090815260016020526040812080548492906130f590849061399b565b9091555061310590508982613577565b886001600160a01b03168a6001600160a01b0316600080516020613b848339815191528360405161313891815260200190565b60405180910390a350505050505050505050565b6000818152600183016020526040812054801561322f576000613170600183613b07565b855490915060009061318490600190613b07565b9050600086600001828154811061319d5761319d613b4a565b90600052602060002001549050808760000184815481106131c0576131c0613b4a565b6000918252602080832090910192909255828152600189019091526040902084905586548790806131f3576131f3613b34565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506112bf565b60009150506112bf565b6014546132519030906001600160a01b0316836124c0565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061328657613286613b4a565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156132da57600080fd5b505afa1580156132ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133129190613602565b8160018151811061332557613325613b4a565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b815291169063791ac9479061336b90859060009086903090429060040161392a565b600060405180830381600087803b15801561338557600080fd5b505af1158015612a5d573d6000803e3d6000fd5b80601d60008282546133ab919061399b565b90915550506014546133c89030906001600160a01b0316846124c0565b60145460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561343057600080fd5b505af1158015613444573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061346991906137a5565b5050505050565b6019546000906064906134869060ff1684613ae8565b61349091906139d8565b6019549091506000906064906134af9062010000900460ff1685613ae8565b6134b991906139d8565b6019549091506000906064906134d790610100900460ff1686613ae8565b6134e191906139d8565b905082601a60008282546134f5919061399b565b9250508190555081601c600082825461350e919061399b565b9250508190555080601b6000828254613527919061399b565b909155505050505050565b6001600160a01b038216600090815260016020526040812054613556908390613b07565b6001600160a01b039093166000908152600160205260409020929092555050565b6001600160a01b03821660009081526001602052604081205461355690839061399b565b60006127108260ff168460ff16866135b39190613ae8565b6135bd9190613ae8565b6135c791906139d8565b949350505050565b803560ff811681146135e057600080fd5b919050565b6000602082840312156135f757600080fd5b813561196481613b60565b60006020828403121561361457600080fd5b815161196481613b60565b6000806040838503121561363257600080fd5b823561363d81613b60565b9150602083013561364d81613b60565b809150509250929050565b60008060006060848603121561366d57600080fd5b833561367881613b60565b9250602084013561368881613b60565b929592945050506040919091013590565b600080604083850312156136ac57600080fd5b82356136b781613b60565b9150602083013561364d81613b75565b600080604083850312156136da57600080fd5b82356136e581613b60565b946020939093013593505050565b60006020828403121561370557600080fd5b813561196481613b75565b60006020828403121561372257600080fd5b815161196481613b75565b60006020828403121561373f57600080fd5b813561ffff8116811461196457600080fd5b60006020828403121561376357600080fd5b5035919050565b60006020828403121561377c57600080fd5b5051919050565b6000806040838503121561379657600080fd5b50508035926020909101359150565b6000806000606084860312156137ba57600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156137e557600080fd5b611964826135cf565b600080600080600080600060e0888a03121561380957600080fd5b613812886135cf565b9650613820602089016135cf565b955061382e604089016135cf565b945061383c606089016135cf565b935061384a608089016135cf565b925061385860a089016135cf565b915061386660c089016135cf565b905092959891949750929550565b600060208083528351808285015260005b818110156138a157858101830151858201604001528201613885565b818111156138b3576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526018908201527f43616c6c6572206e6f7420696e20417574686f72697a65640000000000000000604082015260600190565b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561397a5784516001600160a01b031683529383019391830191600101613955565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156139ae576139ae613b1e565b500190565b600060ff821660ff84168060ff038211156139d0576139d0613b1e565b019392505050565b6000826139f557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115613a35578160001904821115613a1b57613a1b613b1e565b80851615613a2857918102915b93841c93908002906139ff565b509250929050565b600061196460ff841683600082613a56575060016112bf565b81613a63575060006112bf565b8160018114613a795760028114613a8357613a9f565b60019150506112bf565b60ff841115613a9457613a94613b1e565b50506001821b6112bf565b5060208310610133831016604e8410600b8410161715613ac2575081810a6112bf565b613acc83836139fa565b8060001904821115613ae057613ae0613b1e565b029392505050565b6000816000190483118215151615613b0257613b02613b1e565b500290565b600082821015613b1957613b19613b1e565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461162f57600080fd5b801515811461162f57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ad95fe0bf5960a3c3fc0dfe2629d12ee6cdd7f06b3a625815c3fab62687f630964736f6c63430008070033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
Deployed Bytecode
0x60806040526004361061053f5760003560e01c8063762bb282116102ba578063b09f126611610171578063d84a7fe7116100de578063ed11f46a1161009a578063f61c0d3d11610077578063f61c0d3d146111a6578063f88b0e46146111bb578063fb272987146111d1578063fe3e3bb6146111fe57005b8063ed11f46a14611150578063f2fde38b14611166578063f30b7c371461118657005b8063d84a7fe714611075578063dad6809914611095578063dcdd7064146110b5578063dd62ed3e146110d5578063eadb97371461111b578063ebc8f8a91461113057005b8063ca9ec1991161012d578063ca9ec19914610fa4578063cb69d35414610fc3578063cd9cbd7f14610fe3578063d28d885214610ff8578063d4cf920614611034578063d65af4f21461105457005b8063b09f126614610ed6578063ba46855b14610f07578063bbca495f14610f27578063c4a5f01214610f47578063c7639d8014610f67578063c9ecbb5114610f8f57005b8063954ea66511610227578063a20623ce116101e3578063a9059cbb116101c0578063a9059cbb14610e55578063a9e499db14610e75578063ab0b364c14610e95578063b07d7d8914610eb657005b8063a20623ce14610def578063a253c06e14610e1f578063a457c2d714610e3557005b8063954ea66514610d2057806395d89b4114610d405780639962bede14610d6e5780639cee8a6214610d8e5780639d65f0df14610dae578063a1ef429714610dcf57005b80638816bcb6116102765780638816bcb614610c84578063887c60fb14610ca4578063893d20e814610cc35780638d48e2ae14610ce15780638da5cb5b14610cc35780638fe03ffa14610d0057005b8063762bb28214610be957806376bec98114610bff57806376d2a1b514610c1f57806379da8c4f14610c3f57806382c4767b14610c5457806386d0ada814610c6a57005b8063395093511161040e5780634f91e48c1161037b57806361923705116103375780636ebcf607116103145780636ebcf60714610b5c5780636f84395c14610b8957806370a0823114610b9e578063715018a614610bd457005b80636192370514610b0657806365c0fa0714610b2657806366ae34cb14610b4657005b80634f91e48c14610a5a5780635554b18114610a70578063589210d914610a9a57806358e5536514610ab057806359bb44af14610ac65780635f82231214610ae657005b806342a11095116103ca57806342a11095146109aa57806343665b91146109c45780634655a5e2146109e4578063481dbf2d14610a0457806348e907b714610a255780634ada218b14610a3b57005b806339509351146109095780633bc9a5ed146109295780633bf079b91461093e5780633cc39b7a1461095e5780634025f13f146109745780634089b1701461099457005b80631fb624da116104ac578063311a869711610468578063311a869714610866578063313ce5671461088757806332424aa31461089b578063340e5789146108b05780633478154b146108c6578063382e329a146108e857005b80631fb624da146107305780632222f2f41461075057806323b872dd146107c65780632a24e064146107e65780632d5caf21146108255780632d8828631461084557005b80630fd99e16116104fb5780630fd99e1614610671578063110a00c0146106a657806317391e49146106c657806318160ddd146106e65780631eb25d13146106fb5780631f8b845e1461071057005b8063020cc4c414610548578063024c2ddd1461056857806305462aae146105b357806306fdde03146105d357806309218ee714610615578063095ea7b31461064157005b3661054657005b005b34801561055457600080fd5b506105466105633660046136f3565b61121e565b34801561057457600080fd5b506105a061058336600461361f565b600260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b3480156105bf57600080fd5b506105466105ce3660046135e5565b61125f565b3480156105df57600080fd5b5060408051808201909152601081526f2230bd32b2102237b3b9902a37b5b2b760811b60208201525b6040516105aa9190613874565b34801561062157600080fd5b5060195461062f9060ff1681565b60405160ff90911681526020016105aa565b34801561064d57600080fd5b5061066161065c3660046136c7565b6112ae565b60405190151581526020016105aa565b34801561067d57600080fd5b50600b5461069390600160201b900461ffff1681565b60405161ffff90911681526020016105aa565b3480156106b257600080fd5b506105466106c13660046135e5565b6112c5565b3480156106d257600080fd5b5060135461062f9062010000900460ff1681565b3480156106f257600080fd5b50600f546105a0565b34801561070757600080fd5b506105a06112f9565b34801561071c57600080fd5b50600b5461069390610100900461ffff1681565b34801561073c57600080fd5b5061054661074b3660046135e5565b611316565b34801561075c57600080fd5b506013546040805160ff600160301b840481168252600160281b84048116602083015263010000008404811692820192909252600160201b83048216606082015281831660808201526101008304821660a0820152620100009092041660c082015260e0016105aa565b3480156107d257600080fd5b506106616107e1366004613658565b6113a9565b3480156107f257600080fd5b5060135461080d90600160501b90046001600160a01b031681565b6040516001600160a01b0390911681526020016105aa565b34801561083157600080fd5b506105466108403660046136c7565b611440565b34801561085157600080fd5b5060135461062f90600160201b900460ff1681565b34801561087257600080fd5b50600b5461062f906301000000900460ff1681565b34801561089357600080fd5b50600961062f565b3480156108a757600080fd5b5061062f600981565b3480156108bc57600080fd5b506105a0601b5481565b3480156108d257600080fd5b50600b5461069390600160301b900461ffff1681565b3480156108f457600080fd5b5060135461062f906301000000900460ff1681565b34801561091557600080fd5b506106616109243660046136c7565b61157e565b34801561093557600080fd5b506105466115b5565b34801561094a57600080fd5b506105466109593660046137ee565b611632565b34801561096a57600080fd5b506105a0601d5481565b34801561098057600080fd5b5061054661098f3660046135e5565b611771565b3480156109a057600080fd5b506105a060185481565b3480156109b657600080fd5b5060135461062f9060ff1681565b3480156109d057600080fd5b506105466109df3660046135e5565b6118ea565b3480156109f057600080fd5b506105a06109ff3660046135e5565b611931565b348015610a1057600080fd5b5060135461062f90600160281b900460ff1681565b348015610a3157600080fd5b506105a060175481565b348015610a4757600080fd5b5060205461066190610100900460ff1681565b348015610a6657600080fd5b506105a060115481565b348015610a7c57600080fd5b50610a8561196b565b604080519283526020830191909152016105aa565b348015610aa657600080fd5b506105a060125481565b348015610abc57600080fd5b506105a0601a5481565b348015610ad257600080fd5b50610546610ae13660046135e5565b6119a8565b348015610af257600080fd5b50610546610b01366004613751565b6119d8565b348015610b1257600080fd5b50610546610b213660046137d3565b611a02565b348015610b3257600080fd5b50610546610b41366004613699565b611a45565b348015610b5257600080fd5b506105a060155481565b348015610b6857600080fd5b506105a0610b773660046135e5565b60016020526000908152604090205481565b348015610b9557600080fd5b50601f546105a0565b348015610baa57600080fd5b506105a0610bb93660046135e5565b6001600160a01b031660009081526001602052604090205490565b348015610be057600080fd5b50610546611a95565b348015610bf557600080fd5b506105a060105481565b348015610c0b57600080fd5b50610546610c1a3660046136f3565b611b48565b348015610c2b57600080fd5b50610546610c3a3660046135e5565b611b87565b348015610c4b57600080fd5b50610546611bb7565b348015610c6057600080fd5b5061080d61dead81565b348015610c7657600080fd5b506020546106619060ff1681565b348015610c9057600080fd5b50610546610c9f3660046135e5565b611bfc565b348015610cb057600080fd5b50601e5461066190610100900460ff1681565b348015610ccf57600080fd5b506000546001600160a01b031661080d565b348015610ced57600080fd5b5060195461062f90610100900460ff1681565b348015610d0c57600080fd5b50610546610d1b3660046135e5565b611c42565b348015610d2c57600080fd5b5060145461080d906001600160a01b031681565b348015610d4c57600080fd5b5060408051808201909152600581526444444f475360d81b6020820152610608565b348015610d7a57600080fd5b50610546610d893660046137d3565b611c89565b348015610d9a57600080fd5b50610546610da9366004613699565b611cc4565b348015610dba57600080fd5b5060135461062f90600160301b900460ff1681565b348015610ddb57600080fd5b50610546610dea3660046136f3565b611d14565b348015610dfb57600080fd5b50610661610e0a3660046135e5565b60086020526000908152604090205460ff1681565b348015610e2b57600080fd5b506105a0600f5481565b348015610e4157600080fd5b50610661610e503660046136c7565b611d53565b348015610e6157600080fd5b50610661610e703660046136c7565b611dcf565b348015610e8157600080fd5b50610546610e9036600461372d565b611ddc565b348015610ea157600080fd5b5060135461066190600160481b900460ff1681565b348015610ec257600080fd5b50610546610ed1366004613751565b611e26565b348015610ee257600080fd5b506106086040518060400160405280600581526020016444444f475360d81b81525081565b348015610f1357600080fd5b50610546610f223660046136f3565b611e50565b348015610f3357600080fd5b5060195461062f9062010000900460ff1681565b348015610f5357600080fd5b50610546610f62366004613783565b611e9b565b348015610f7357600080fd5b5061080d737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610f9b57600080fd5b50610546611efa565b348015610fb057600080fd5b5060135461062f90610100900460ff1681565b348015610fcf57600080fd5b50610546610fde366004613751565b612007565b348015610fef57600080fd5b506105466120af565b34801561100457600080fd5b506106086040518060400160405280601081526020016f2230bd32b2102237b3b9902a37b5b2b760811b81525081565b34801561104057600080fd5b5061054661104f3660046136f3565b612136565b34801561106057600080fd5b5060135461066190600160401b900460ff1681565b34801561108157600080fd5b50610546611090366004613751565b61216e565b3480156110a157600080fd5b506105466110b03660046136f3565b6121a9565b3480156110c157600080fd5b506105466110d03660046137d3565b6121e1565b3480156110e157600080fd5b506105a06110f036600461361f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561112757600080fd5b50610546612222565b34801561113c57600080fd5b5061054661114b3660046136f3565b61224a565b34801561115c57600080fd5b506105a0601c5481565b34801561117257600080fd5b506105466111813660046135e5565b612293565b34801561119257600080fd5b506105466111a13660046135e5565b6123bc565b3480156111b257600080fd5b50610546612405565b3480156111c757600080fd5b506105a0601f5481565b3480156111dd57600080fd5b506105a06111ec3660046135e5565b60036020526000908152604090205481565b34801561120a57600080fd5b506105466112193660046135e5565b612444565b61122733612489565b61124c5760405162461bcd60e51b8152600401611243906138c9565b60405180910390fd5b6020805460ff1916911515919091179055565b61126833612489565b6112845760405162461bcd60e51b8152600401611243906138c9565b602080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60006112bb3384846124c0565b5060015b92915050565b6112ce33612489565b6112ea5760405162461bcd60e51b8152600401611243906138c9565b6112f5600482612474565b5050565b6113056009600a613a3d565b611313906305f5e100613ae8565b81565b61131f33612489565b61133b5760405162461bcd60e51b8152600401611243906138c9565b6001600160a01b03811660009081526001602052604080822080549083905530835290822080549192839261137190849061399b565b909155505060405181815230906001600160a01b03841690600080516020613b84833981519152906020015b60405180910390a35050565b60006113b68484846125b3565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156114215760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401611243565b61143585336114308685613b07565b6124c0565b506001949350505050565b61144933612489565b6114655760405162461bcd60e51b8152600401611243906138c9565b6001600160a01b0382166000908152600160205260409020548111156114c15760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b6044820152606401611243565b6114cd6009600a613a3d565b6114d79082613ae8565b6001600160a01b038316600090815260016020526040812080549091906114ff908490613b07565b9091555061151190506009600a613a3d565b61151b9082613ae8565b306000908152600160205260408120805490919061153a90849061399b565b909155503090506001600160a01b038316600080516020613b848339815191526115666009600a613a3d565b6115709085613ae8565b60405190815260200161139d565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916112bb91859061143090869061399b565b6115be33612489565b6115da5760405162461bcd60e51b8152600401611243906138c9565b604051600090339047908381818185875af1925050503d806000811461161c576040519150601f19603f3d011682016040523d82523d6000602084013e611621565b606091505b505090508061162f57600080fd5b50565b61163b33612489565b6116575760405162461bcd60e51b8152600401611243906138c9565b60008486611665898b6139b3565b61166f91906139b3565b61167991906139b3565b90508060ff166064146116dd5760405162461bcd60e51b815260206004820152602660248201527f6275726e2b6c69712b6d61726b6574696e67206e6565647320746f20657175616044820152656c203130302560d01b6064820152608401611243565b506013805460ff928316620100000262ff0000199484166101000261ffff19978516600160201b0264ff00000000199986166301000000029990991664ffff000000199a8616600160281b0265ff0000000000199c8716600160301b029c909c1666ffff000000000019909416939093179a909a179890981617959095179390931691909216179390931792909216179055565b61177a33612489565b6117965760405162461bcd60e51b8152600401611243906138c9565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b1580156117da57600080fd5b505afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611812919061376a565b9050600081116118645760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e636500000000000000006044820152606401611243565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b1580156118ac57600080fd5b505af11580156118c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e49190613710565b50505050565b6118f333612489565b61190f5760405162461bcd60e51b8152600401611243906138c9565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526003602052604081205442811161195a5750600092915050565b6119644282613b07565b9392505050565b60008061197a6009600a613a3d565b60105461198791906139d8565b6119936009600a613a3d565b6011546119a091906139d8565b915091509091565b6119b133612489565b6119cd5760405162461bcd60e51b8152600401611243906138c9565b6112f5600682612474565b6119e133612489565b6119fd5760405162461bcd60e51b8152600401611243906138c9565b601f55565b611a0b33612489565b611a275760405162461bcd60e51b8152600401611243906138c9565b6019805460ff909216620100000262ff000019909216919091179055565b611a4e33612489565b611a6a5760405162461bcd60e51b8152600401611243906138c9565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b33611aa86000546001600160a01b031690565b6001600160a01b031614611afe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611243565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b611b5133612489565b611b6d5760405162461bcd60e51b8152600401611243906138c9565b601e80549115156101000261ff0019909216919091179055565b611b9033612489565b611bac5760405162461bcd60e51b8152600401611243906138c9565b6112f5600682612a65565b611bc033612489565b611bdc5760405162461bcd60e51b8152600401611243906138c9565b611bea426301e1338061399b565b33600090815260036020526040902055565b611c0533612489565b611c215760405162461bcd60e51b8152600401611243906138c9565b6001600160a01b03166000908152600860205260409020805460ff19169055565b611c4b33612489565b611c675760405162461bcd60e51b8152600401611243906138c9565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b611c9233612489565b611cae5760405162461bcd60e51b8152600401611243906138c9565b6019805460ff191660ff92909216919091179055565b611ccd33612489565b611ce95760405162461bcd60e51b8152600401611243906138c9565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b611d1d33612489565b611d395760405162461bcd60e51b8152600401611243906138c9565b602080549115156101000261ff0019909216919091179055565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611db65760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401611243565b611dc533856114308685613b07565b5060019392505050565b60006112bb3384846125b3565b611de533612489565b611e015760405162461bcd60e51b8152600401611243906138c9565b600b805461ffff909216600160301b0267ffff00000000000019909216919091179055565b611e2f33612489565b611e4b5760405162461bcd60e51b8152600401611243906138c9565b600a55565b611e5933612489565b611e755760405162461bcd60e51b8152600401611243906138c9565b601380549115156701000000000000000267ff0000000000000019909216919091179055565b611ea433612489565b611ec05760405162461bcd60e51b8152600401611243906138c9565b611ecc6009600a613a3d565b611ed69083613ae8565b9150611ee46009600a613a3d565b611eee9082613ae8565b60109290925550601155565b611f0333612489565b611f1f5760405162461bcd60e51b8152600401611243906138c9565b600e546001600160a01b03163314611f675760405162461bcd60e51b815260206004820152600b60248201526a2bb937b7339030b1ba37b960a91b6044820152606401611243565b601c805460009182905560405190913391829084905b60006040518083038185875af1925050503d8060008114611fba576040519150601f19603f3d011682016040523d82523d6000602084013e611fbf565b606091505b50509050806120025760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b6044820152606401611243565b505050565b61201033612489565b61202c5760405162461bcd60e51b8152600401611243906138c9565b3060009081526001602052604090205481111561204857600080fd5b3060009081526001602052604081208054839290612067908490613b07565b9250508190555080600f60008282546120809190613b07565b909155505060405181815261dead903090600080516020613b848339815191529060200160405180910390a350565b6120b833612489565b6120d45760405162461bcd60e51b8152600401611243906138c9565b600d546001600160a01b0316331461211c5760405162461bcd60e51b815260206004820152600b60248201526a2bb937b7339030b1ba37b960a91b6044820152606401611243565b601b80546000918290556040519091339182908490611f7d565b61213f33612489565b61215b5760405162461bcd60e51b8152600401611243906138c9565b6009805460ff1916911515919091179055565b61217733612489565b6121935760405162461bcd60e51b8152600401611243906138c9565b61162f6121a482633b9aca00613ae8565b612a7a565b6121b233612489565b6121ce5760405162461bcd60e51b8152600401611243906138c9565b600b805460ff1916911515919091179055565b6121ea33612489565b6122065760405162461bcd60e51b8152600401611243906138c9565b6019805460ff9092166101000261ff0019909216919091179055565b61222b33612489565b6122475760405162461bcd60e51b8152600401611243906138c9565b33ff5b61225333612489565b61226f5760405162461bcd60e51b8152600401611243906138c9565b60138054911515600160481b0269ff00000000000000000019909216919091179055565b336122a66000546001600160a01b031690565b6001600160a01b0316146122fc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611243565b6001600160a01b0381166123615760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611243565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6123c533612489565b6123e15760405162461bcd60e51b8152600401611243906138c9565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b61240e33612489565b61242a5760405162461bcd60e51b8152600401611243906138c9565b601a80546000918290556040519091339182908490611f7d565b61244d33612489565b6124695760405162461bcd60e51b8152600401611243906138c9565b6112f5600482612a65565b6000611964836001600160a01b038416612c60565b600080546001600160a01b03838116911614806112bf5750506001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b03831661250a5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401611243565b6001600160a01b0382166125525760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401611243565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166125fe5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401611243565b6001600160a01b0382166126475760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401611243565b60095460ff16156126cf576001600160a01b03831660009081526008602052604090205460ff1615801561269457506001600160a01b03821660009081526008602052604090205460ff16155b6126cf5760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b6044820152606401611243565b60006126dc600485612caf565b806126ed57506126ed600484612caf565b8061271057506001600160a01b0384166000908152600c602052604090205460ff165b8061273357506001600160a01b0383166000908152600c602052604090205460ff165b905060006001600160a01b03851630148061275657506001600160a01b03841630145b6013549091506000906001600160a01b03878116600160501b9092041614801561279c57506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b806127e257506013546001600160a01b03868116600160501b909204161480156127e257506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b905081806127ed5750805b806127f55750825b1561280a57612805868686612cd1565b612a5d565b602054610100900460ff166128f7576000546001600160a01b0387811691161480159061284557506000546001600160a01b03868116911614155b156128f757601354600160401b900460ff16156128a057846001600160a01b0316866001600160a01b0316600080516020613b84833981519152600060405161289091815260200190565b60405180910390a3505050505050565b602054610100900460ff166128f75760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401611243565b6013546000906001600160a01b03888116600160501b90920416148061293957506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b6013549091506000906001600160a01b03888116600160501b90920416148061297e57506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b601354601554919250610100900460ff1690620151809061299f9042613b07565b10156129b9576013805461ff001916611900179055612a0d565b6202a300601554426129cb9190613b07565b10156129e5576013805461ff001916611400179055612a0d565b6203f480601554426129f79190613b07565b1015612a0d576013805461ff001916610f001790555b612a1a8989898686612d8a565b6013805460ff8084166101000261ff00199092169190911791829055600160481b9091041615612a595760009250600091506000945060009550600093505b5050505b505050505050565b6000611964836001600160a01b03841661314c565b601e805460ff191660019081179091553060009081526020919091526040812054601354909190612abf90600160201b810460ff9081169163010000009004166139b3565b60ff1690506000600a54905083811115612ae157600b5460ff1615612ae15750825b80831080612af1575061ffff8216155b15612afe57505050612c53565b60135460009061ffff841690612b1e906301000000900460ff1684613ae8565b612b2891906139d8565b60135490915060009061ffff851690612b4b90600160201b900460ff1685613ae8565b612b5591906139d8565b60135490915060009061ffff861690612b7890600160301b900460ff1686613ae8565b612b8291906139d8565b60135490915060009061ffff871690612ba590600160281b900460ff1687613ae8565b612baf91906139d8565b90506000612bbe6002866139d8565b90506000612bcc8287613b07565b905060008484612bdc888561399b565b612be6919061399b565b612bf0919061399b565b905047612bfc82613239565b6000612c088247613b07565b9050600083612c178684613ae8565b612c2191906139d8565b9050612c2d8682613399565b6000612c398447613b07565b9050612c4481613470565b50505050505050505050505050505b50601e805460ff19169055565b6000818152600183016020526040812054612ca7575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556112bf565b5060006112bf565b6001600160a01b03811660009081526001830160205260408120541515611964565b6001600160a01b03831660009081526001602052604090205481811015612d355760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401611243565b612d3f8483613532565b612d498383613577565b826001600160a01b0316846001600160a01b0316600080516020613b8483398151915284604051612d7c91815260200190565b60405180910390a350505050565b6001600160a01b0380851660009081526001602052604080822054928816825290205484811015612df85760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401611243565b6002601154612e0791906139d8565b600a5560008315612f0c57612e1d600689612caf565b612eb7576001600160a01b03881660009081526003602052604090205442101580612e4f5750601e54610100900460ff165b612e905760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b6044820152606401611243565b601f54612e9d904261399b565b6001600160a01b0389166000908152600360205260409020555b601154861115612efb5760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b6044820152606401611243565b50601354610100900460ff1661301e565b8415612f6b57601054612f1f878561399b565b1115612f3d5760405162461bcd60e51b815260040161124390613900565b601254861115612f5f5760405162461bcd60e51b815260040161124390613900565b5060135460ff1661301e565b601054612f78878561399b565b1115612f965760405162461bcd60e51b815260040161124390613900565b612fa1600689612caf565b613010576001600160a01b03881660009081526003602052604090205442101580612fd35750601e54610100900460ff165b6130105760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b6044820152606401611243565b5060135462010000900460ff165b6013546001600160a01b03898116600160501b9092041614801590613046575060205460ff16155b80156130555750601e5460ff16155b156130635761306386612a7a565b6013546000906130bc908890849060ff600160301b8204811691600160281b81048216916130a39163010000008104821691600160201b909104166139b3565b6130ad91906139b3565b6130b791906139b3565b61359b565b905060006130ca8289613b07565b90506130d68a89613532565b30600090815260016020526040812080548492906130f590849061399b565b9091555061310590508982613577565b886001600160a01b03168a6001600160a01b0316600080516020613b848339815191528360405161313891815260200190565b60405180910390a350505050505050505050565b6000818152600183016020526040812054801561322f576000613170600183613b07565b855490915060009061318490600190613b07565b9050600086600001828154811061319d5761319d613b4a565b90600052602060002001549050808760000184815481106131c0576131c0613b4a565b6000918252602080832090910192909255828152600189019091526040902084905586548790806131f3576131f3613b34565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506112bf565b60009150506112bf565b6014546132519030906001600160a01b0316836124c0565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061328657613286613b4a565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156132da57600080fd5b505afa1580156132ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133129190613602565b8160018151811061332557613325613b4a565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b815291169063791ac9479061336b90859060009086903090429060040161392a565b600060405180830381600087803b15801561338557600080fd5b505af1158015612a5d573d6000803e3d6000fd5b80601d60008282546133ab919061399b565b90915550506014546133c89030906001600160a01b0316846124c0565b60145460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561343057600080fd5b505af1158015613444573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061346991906137a5565b5050505050565b6019546000906064906134869060ff1684613ae8565b61349091906139d8565b6019549091506000906064906134af9062010000900460ff1685613ae8565b6134b991906139d8565b6019549091506000906064906134d790610100900460ff1686613ae8565b6134e191906139d8565b905082601a60008282546134f5919061399b565b9250508190555081601c600082825461350e919061399b565b9250508190555080601b6000828254613527919061399b565b909155505050505050565b6001600160a01b038216600090815260016020526040812054613556908390613b07565b6001600160a01b039093166000908152600160205260409020929092555050565b6001600160a01b03821660009081526001602052604081205461355690839061399b565b60006127108260ff168460ff16866135b39190613ae8565b6135bd9190613ae8565b6135c791906139d8565b949350505050565b803560ff811681146135e057600080fd5b919050565b6000602082840312156135f757600080fd5b813561196481613b60565b60006020828403121561361457600080fd5b815161196481613b60565b6000806040838503121561363257600080fd5b823561363d81613b60565b9150602083013561364d81613b60565b809150509250929050565b60008060006060848603121561366d57600080fd5b833561367881613b60565b9250602084013561368881613b60565b929592945050506040919091013590565b600080604083850312156136ac57600080fd5b82356136b781613b60565b9150602083013561364d81613b75565b600080604083850312156136da57600080fd5b82356136e581613b60565b946020939093013593505050565b60006020828403121561370557600080fd5b813561196481613b75565b60006020828403121561372257600080fd5b815161196481613b75565b60006020828403121561373f57600080fd5b813561ffff8116811461196457600080fd5b60006020828403121561376357600080fd5b5035919050565b60006020828403121561377c57600080fd5b5051919050565b6000806040838503121561379657600080fd5b50508035926020909101359150565b6000806000606084860312156137ba57600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156137e557600080fd5b611964826135cf565b600080600080600080600060e0888a03121561380957600080fd5b613812886135cf565b9650613820602089016135cf565b955061382e604089016135cf565b945061383c606089016135cf565b935061384a608089016135cf565b925061385860a089016135cf565b915061386660c089016135cf565b905092959891949750929550565b600060208083528351808285015260005b818110156138a157858101830151858201604001528201613885565b818111156138b3576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526018908201527f43616c6c6572206e6f7420696e20417574686f72697a65640000000000000000604082015260600190565b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561397a5784516001600160a01b031683529383019391830191600101613955565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156139ae576139ae613b1e565b500190565b600060ff821660ff84168060ff038211156139d0576139d0613b1e565b019392505050565b6000826139f557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115613a35578160001904821115613a1b57613a1b613b1e565b80851615613a2857918102915b93841c93908002906139ff565b509250929050565b600061196460ff841683600082613a56575060016112bf565b81613a63575060006112bf565b8160018114613a795760028114613a8357613a9f565b60019150506112bf565b60ff841115613a9457613a94613b1e565b50506001821b6112bf565b5060208310610133831016604e8410600b8410161715613ac2575081810a6112bf565b613acc83836139fa565b8060001904821115613ae057613ae0613b1e565b029392505050565b6000816000190483118215151615613b0257613b02613b1e565b500290565b600082821015613b1957613b19613b1e565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461162f57600080fd5b801515811461162f57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ad95fe0bf5960a3c3fc0dfe2629d12ee6cdd7f06b3a625815c3fab62687f630964736f6c63430008070033
Deployed Bytecode Sourcemap
16010:22132:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32362:119;;;;;;;;;;-1:-1:-1;32362:119:0;;;;;:::i;:::-;;:::i;16196:68::-;;;;;;;;;;-1:-1:-1;16196:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6640:25:1;;;6628:2;6613:18;16196:68:0;;;;;;;;34430:159;;;;;;;;;;-1:-1:-1;34430:159:0;;;;;:::i;:::-;;:::i;35815:94::-;;;;;;;;;;-1:-1:-1;35896:5:0;;;;;;;;;;;;-1:-1:-1;;;35896:5:0;;;;35815:94;;;;;;;:::i;24548:30::-;;;;;;;;;;-1:-1:-1;24548:30:0;;;;;;;;;;;17083:4:1;17071:17;;;17053:36;;17041:2;17026:18;24548:30:0;16911:184:1;36700:161:0;;;;;;;;;;-1:-1:-1;36700:161:0;;;;;:::i;:::-;;:::i;:::-;;;6227:14:1;;6220:22;6202:41;;6190:2;6175:18;36700:161:0;6062:187:1;16943:35:0;;;;;;;;;;-1:-1:-1;16943:35:0;;;;-1:-1:-1;;;16943:35:0;;;;;;;;;14860:6:1;14848:19;;;14830:38;;14818:2;14803:18;16943:35:0;14686:188:1;30601:122:0;;;;;;;;;;-1:-1:-1;30601:122:0;;;;;:::i;:::-;;:::i;17624:25::-;;;;;;;;;;-1:-1:-1;17624:25:0;;;;;;;;;;;36125:108;;;;;;;;;;-1:-1:-1;36207:18:0;;36125:108;;16668:66;;;;;;;;;;;;;:::i;16835:33::-;;;;;;;;;;-1:-1:-1;16835:33:0;;;;;;;;;;;30350:243;;;;;;;;;;-1:-1:-1;30350:243:0;;;;;:::i;:::-;;:::i;28160:303::-;;;;;;;;;;-1:-1:-1;28367:12:0;;28160:303;;;28367:12;-1:-1:-1;;;28367:12:0;;;;16614:25:1;;-1:-1:-1;;;28381:15:0;;;;16670:2:1;16655:18;;16648:34;28397:13:0;;;;;16698:18:1;;;16691:34;;;;-1:-1:-1;;;28411:13:0;;;;16756:2:1;16741:18;;16734:34;28425:7:0;;;16799:3:1;16784:19;;16777:35;28367:12:0;28433:8;;;;16843:3:1;16828:19;;16821:35;28442:12:0;;;;;16887:3:1;16872:19;;16865:35;16601:3;16586:19;28160:303:0;16299:607:1;37174:392:0;;;;;;;;;;-1:-1:-1;37174:392:0;;;;;:::i;:::-;;:::i;17900:34::-;;;;;;;;;;-1:-1:-1;17900:34:0;;;;-1:-1:-1;;;17900:34:0;;-1:-1:-1;;;;;17900:34:0;;;;;;-1:-1:-1;;;;;5127:32:1;;;5109:51;;5097:2;5082:18;17900:34:0;4963:203:1;29875:333:0;;;;;;;;;;-1:-1:-1;29875:333:0;;;;;:::i;:::-;;:::i;17689:26::-;;;;;;;;;;-1:-1:-1;17689:26:0;;;;-1:-1:-1;;;17689:26:0;;;;;;16887:37;;;;;;;;;;-1:-1:-1;16887:37:0;;;;;;;;;;;36023:94;;;;;;;;;;-1:-1:-1;16660:1:0;36023:94;;16626:35;;;;;;;;;;;;16660:1;16626:35;;24704:33;;;;;;;;;;;;;;;;17000:42;;;;;;;;;;-1:-1:-1;17000:42:0;;;;-1:-1:-1;;;17000:42:0;;;;;;17656:26;;;;;;;;;;-1:-1:-1;17656:26:0;;;;;;;;;;;37582:205;;;;;;;;;;-1:-1:-1;37582:205:0;;;;;:::i;:::-;;:::i;35461:159::-;;;;;;;;;;;;;:::i;32757:606::-;;;;;;;;;;-1:-1:-1;32757:606:0;;;;;:::i;:::-;;:::i;25227:25::-;;;;;;;;;;;;;;;;34601:295;;;;;;;;;;-1:-1:-1;34601:295:0;;;;;:::i;:::-;;:::i;24506:27::-;;;;;;;;;;;;;;;;17569:20;;;;;;;;;;-1:-1:-1;17569:20:0;;;;;;;;29490:108;;;;;;;;;;-1:-1:-1;29490:108:0;;;;;:::i;:::-;;:::i;28475:289::-;;;;;;;;;;-1:-1:-1;28475:289:0;;;;;:::i;:::-;;:::i;17722:28::-;;;;;;;;;;-1:-1:-1;17722:28:0;;;;-1:-1:-1;;;17722:28:0;;;;;;24455:38;;;;;;;;;;;;;;;;34220:26;;;;;;;;;;-1:-1:-1;34220:26:0;;;;;;;;;;;17456:46;;;;;;;;;;;;;;;;27995:157;;;;;;;;;;;;;:::i;:::-;;;;16220:25:1;;;16276:2;16261:18;;16254:34;;;;16193:18;27995:157:0;16046:248:1;17509:45:0;;;;;;;;;;;;;;;;24666:31;;;;;;;;;;;;;;;;30864:138;;;;;;;;;;-1:-1:-1;30864:138:0;;;;;:::i;:::-;;:::i;32618:125::-;;;;;;;;;;-1:-1:-1;32618:125:0;;;;;:::i;:::-;;:::i;33633:115::-;;;;;;;;;;-1:-1:-1;33633:115:0;;;;;:::i;:::-;;:::i;29606:127::-;;;;;;;;;;-1:-1:-1;29606:127:0;;;;;:::i;:::-;;:::i;18259:23::-;;;;;;;;;;;;;;;;16144:45;;;;;;;;;;-1:-1:-1;16144:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;28770:110;;;;;;;;;;-1:-1:-1;28860:12:0;;28770:110;;36241:121;;;;;;;;;;-1:-1:-1;36241:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;36336:18:0;36309:7;36336:18;;;:9;:18;;;;;;;36241:121;8120:140;;;;;;;;;;;;;:::i;17400:49::-;;;;;;;;;;;;;;;;32493:113;;;;;;;;;;-1:-1:-1;32493:113:0;;;;;:::i;:::-;;:::i;31008:139::-;;;;;;;;;;-1:-1:-1;31008:139:0;;;;;:::i;:::-;;:::i;29745:122::-;;;;;;;;;;;;;:::i;17199:73::-;;;;;;;;;;;;17230:42;17199:73;;28957:28;;;;;;;;;;-1:-1:-1;28957:28:0;;;;;;;;35326:129;;;;;;;;;;-1:-1:-1;35326:129:0;;;;;:::i;:::-;;:::i;28888:28::-;;;;;;;;;;-1:-1:-1;28888:28:0;;;;;;;;;;;35713:94;;;;;;;;;;-1:-1:-1;35765:7:0;7960:6;-1:-1:-1;;;;;7960:6:0;35713:94;;24585:32;;;;;;;;;;-1:-1:-1;24585:32:0;;;;;;;;;;;29359:119;;;;;;;;;;-1:-1:-1;29359:119:0;;;;;:::i;:::-;;:::i;17941:39::-;;;;;;;;;;-1:-1:-1;17941:39:0;;;;-1:-1:-1;;;;;17941:39:0;;;35917:98;;;;;;;;;;-1:-1:-1;36000:7:0;;;;;;;;;;;;-1:-1:-1;;;36000:7:0;;;;35917:98;;33375:117;;;;;;;;;;-1:-1:-1;33375:117:0;;;;;:::i;:::-;;:::i;30216:126::-;;;;;;;;;;-1:-1:-1;30216:126:0;;;;;:::i;:::-;;:::i;17757:25::-;;;;;;;;;;-1:-1:-1;17757:25:0;;;;-1:-1:-1;;;17757:25:0;;;;;;34306:110;;;;;;;;;;-1:-1:-1;34306:110:0;;;;;:::i;:::-;;:::i;16435:43::-;;;;;;;;;;-1:-1:-1;16435:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17345:48;;;;;;;;;;;;;;;;37795:342;;;;;;;;;;-1:-1:-1;37795:342:0;;;;;:::i;:::-;;:::i;36370:167::-;;;;;;;;;;-1:-1:-1;36370:167:0;;;;;:::i;:::-;;:::i;29215:103::-;;;;;;;;;;-1:-1:-1;29215:103:0;;;;;:::i;:::-;;:::i;17864:27::-;;;;;;;;;;-1:-1:-1;17864:27:0;;;;-1:-1:-1;;;17864:27:0;;;;;;29110:97;;;;;;;;;;-1:-1:-1;29110:97:0;;;;;:::i;:::-;;:::i;16579:40::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16579:40:0;;;;;35055:124;;;;;;;;;;-1:-1:-1;35055:124:0;;;;;:::i;:::-;;:::i;24624:29::-;;;;;;;;;;-1:-1:-1;24624:29:0;;;;;;;;;;;33904:288;;;;;;;;;;-1:-1:-1;33904:288:0;;;;;:::i;:::-;;:::i;17112:80::-;;;;;;;;;;;;17150:42;17112:80;;31790:340;;;;;;;;;;;;;:::i;17596:21::-;;;;;;;;;;-1:-1:-1;17596:21:0;;;;;;;;;;;27721:262;;;;;;;;;;-1:-1:-1;27721:262:0;;;;;:::i;:::-;;:::i;31439:343::-;;;;;;;;;;;;;:::i;16523:49::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16523:49:0;;;;;34912:135;;;;;;;;;;-1:-1:-1;34912:135:0;;;;;:::i;:::-;;:::i;17828:29::-;;;;;;;;;;-1:-1:-1;17828:29:0;;;;-1:-1:-1;;;17828:29:0;;;;;;33756:134;;;;;;;;;;-1:-1:-1;33756:134:0;;;;;:::i;:::-;;:::i;28992:110::-;;;;;;;;;;-1:-1:-1;28992:110:0;;;;;:::i;:::-;;:::i;33504:121::-;;;;;;;;;;-1:-1:-1;33504:121:0;;;;;:::i;:::-;;:::i;36545:147::-;;;;;;;;;;-1:-1:-1;36545:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;36656:19:0;;;36629:7;36656:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;36545:147;32138:101;;;;;;;;;;;;;:::i;32247:103::-;;;;;;;;;;-1:-1:-1;32247:103:0;;;;;:::i;:::-;;:::i;24744:30::-;;;;;;;;;;;;;;;;8274:236;;;;;;;;;;-1:-1:-1;8274:236:0;;;;;:::i;:::-;;:::i;35187:131::-;;;;;;;;;;-1:-1:-1;35187:131:0;;;;;:::i;:::-;;:::i;31155:276::-;;;;;;;;;;;;;:::i;28923:27::-;;;;;;;;;;;;;;;;16271:45;;;;;;;;;;-1:-1:-1;16271:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;30729:123;;;;;;;;;;-1:-1:-1;30729:123:0;;;;;:::i;:::-;;:::i;32362:119::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;;;;;;;;;32450:16:::1;:23:::0;;-1:-1:-1;;32450:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32362:119::o;34430:159::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;34537:22:::1;:44:::0;;-1:-1:-1;;;;;34537:44:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;34537:44:0;;::::1;::::0;;;::::1;::::0;;34430:159::o;36700:161::-;36777:4;36794:37;36803:10;36815:7;36824:6;36794:8;:37::i;:::-;-1:-1:-1;36849:4:0;36700:161;;;;;:::o;30601:122::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;30693:22:::1;:9;30707:7:::0;30693:13:::1;:22::i;:::-;;30601:122:::0;:::o;16668:66::-;16721:13;16660:1;16721:2;:13;:::i;:::-;16707:27;;:11;:27;:::i;:::-;16668:66;:::o;30350:243::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30446:15:0;::::1;30429:14;30446:15:::0;;;:9:::1;:15;::::0;;;;;;;30472:17;;;;30518:4:::1;30500:24:::0;;;;;:32;;30446:15;;;;30500:32:::1;::::0;30446:15;;30500:32:::1;:::i;:::-;::::0;;;-1:-1:-1;;30548:37:0::1;::::0;6640:25:1;;;30571:4:0::1;::::0;-1:-1:-1;;;;;30548:37:0;::::1;::::0;-1:-1:-1;;;;;;;;;;;30548:37:0;6628:2:1;6613:18;30548:37:0::1;;;;;;;;30418:175;30350:243:::0;:::o;37174:392::-;37274:4;37291:36;37301:6;37309:9;37320:6;37291:9;:36::i;:::-;-1:-1:-1;;;;;37367:19:0;;37340:24;37367:19;;;:11;:19;;;;;;;;37387:10;37367:31;;;;;;;;37417:26;;;;37409:59;;;;-1:-1:-1;;;37409:59:0;;9631:2:1;37409:59:0;;;9613:21:1;9670:2;9650:18;;;9643:30;-1:-1:-1;;;9689:18:1;;;9682:50;9749:18;;37409:59:0;9429:344:1;37409:59:0;37481:55;37490:6;37498:10;37510:25;37529:6;37510:16;:25;:::i;:::-;37481:8;:55::i;:::-;-1:-1:-1;37554:4:0;;37174:392;-1:-1:-1;;;;37174:392:0:o;29875:333::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29977:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;:25;-1:-1:-1;29977:25:0::1;29969:55;;;::::0;-1:-1:-1;;;29969:55:0;;13510:2:1;29969:55:0::1;::::0;::::1;13492:21:1::0;13549:2;13529:18;;;13522:30;-1:-1:-1;;;13568:18:1;;;13561:47;13625:18;;29969:55:0::1;13308:341:1::0;29969:55:0::1;30060:13;16660:1;30060:2;:13;:::i;:::-;30053:20;::::0;:6;:20:::1;:::i;:::-;-1:-1:-1::0;;;;;30035:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;:39;;:15;;;:39:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;30119:13:0::1;::::0;-1:-1:-1;16660:1:0::1;30119:2;:13;:::i;:::-;30112:20;::::0;:6;:20:::1;:::i;:::-;30103:4;30085:24;::::0;;;:9:::1;:24;::::0;;;;:48;;:24;;;:48:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;30172:4:0::1;::::0;-1:-1:-1;;;;;;30149:51:0;::::1;-1:-1:-1::0;;;;;;;;;;;30186:13:0::1;16660:1;30186:2;:13;:::i;:::-;30179:20;::::0;:6;:20:::1;:::i;:::-;30149:51;::::0;6640:25:1;;;6628:2;6613:18;30149:51:0::1;6486:185:1::0;37582:205:0;37690:10;37664:4;37711:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;37711:32:0;;;;;;;;;;37664:4;;37681:76;;37702:7;;37711:45;;37746:10;;37711:45;:::i;35461:159::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;35537:51:::1;::::0;35524:9:::1;::::0;35537:10:::1;::::0;35561:21:::1;::::0;35524:9;35537:51;35524:9;35537:51;35561:21;35537:10;:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35523:65;;;35607:4;35599:13;;;::::0;::::1;;35512:108;35461:159::o:0;32757:606::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;32951:14:::1;33015::::0;33000;32966:32:::1;32982:16:::0;32966:13;:32:::1;:::i;:::-;:48;;;;:::i;:::-;:63;;;;:::i;:::-;32951:78;;33048:8;:13;;33058:3;33048:13;33040:64;;;::::0;-1:-1:-1;;;33040:64:0;;10324:2:1;33040:64:0::1;::::0;::::1;10306:21:1::0;10363:2;10343:18;;;10336:30;10402:34;10382:18;;;10375:62;-1:-1:-1;;;10453:18:1;;;10446:36;10499:19;;33040:64:0::1;10122:402:1::0;33040:64:0::1;-1:-1:-1::0;33115:12:0::1;:28:::0;;::::1;33331:24:::0;;::::1;::::0;::::1;-1:-1:-1::0;;33304:16:0;;::::1;33115:28;33304:16;-1:-1:-1::0;;33238:28:0;;::::1;-1:-1:-1::0;;;33238:28:0::1;-1:-1:-1::0;;33199:28:0;;::::1;::::0;::::1;33238::::0;;;;-1:-1:-1;;33154:34:0;;::::1;-1:-1:-1::0;;;33154:34:0::1;-1:-1:-1::0;;33115:28:0;;::::1;-1:-1:-1::0;;;33115:28:0::1;33154:34:::0;;;;-1:-1:-1;;33154:34:0;;;;;;;;;;::::1;33238:28:::0;;;;;;;;::::1;33304:16:::0;;;;33279:14;;;::::1;33304:16:::0;;;;::::1;33331:24:::0;;;::::1;;::::0;;32757:606::o;34601:295::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;34749:30:::1;::::0;-1:-1:-1;;;34749:30:0;;34773:4:::1;34749:30;::::0;::::1;5109:51:1::0;34706:10:0;;34684:12:::1;::::0;-1:-1:-1;;;;;34749:15:0;::::1;::::0;::::1;::::0;5082:18:1;;34749:30:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34728:51;;34809:1;34798:10;:12;34790:49;;;::::0;-1:-1:-1;;;34790:49:0;;12128:2:1;34790:49:0::1;::::0;::::1;12110:21:1::0;12167:2;12147:18;;;12140:30;12206:26;12186:18;;;12179:54;12250:18;;34790:49:0::1;11926:348:1::0;34790:49:0::1;34850:38;::::0;-1:-1:-1;;;34850:38:0;;34865:10:::1;34850:38;::::0;::::1;5345:51:1::0;5412:18;;;5405:34;;;-1:-1:-1;;;;;34850:14:0;::::1;::::0;::::1;::::0;5318:18:1;;34850:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34673:223;;34601:295:::0;:::o;29490:108::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;29571:12:::1;:19:::0;;-1:-1:-1;;;;;;29571:19:0::1;-1:-1:-1::0;;;;;29571:19:0;;;::::1;::::0;;;::::1;::::0;;29490:108::o;28475:289::-;-1:-1:-1;;;;;28605:25:0;;28569:7;28605:25;;;:9;:25;;;;;;28654:15;28644:25;;28641:74;;-1:-1:-1;28702:1:0;;28475:289;-1:-1:-1;;28475:289:0:o;28641:74::-;28732:24;28741:15;28732:8;:24;:::i;:::-;28725:31;28475:289;-1:-1:-1;;;28475:289:0:o;27995:157::-;28044:15;;28105:13;16660:1;28105:2;:13;:::i;:::-;28092:12;;:26;;;;:::i;:::-;28130:13;16660:1;28130:2;:13;:::i;:::-;28120:9;;:23;;;;:::i;:::-;28085:59;;;;27995:157;;:::o;30864:138::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;30960:34:::1;:21;30986:7:::0;30960:25:::1;:34::i;32618:125::-:0;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;32707:12:::1;:28:::0;32618:125::o;33633:115::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;33718:13:::1;:22:::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;33718:22:0;;::::1;::::0;;;::::1;::::0;;33633:115::o;29606:127::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29701:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:24;;-1:-1:-1;;29701:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29606:127::o;8120:140::-;8039:10;8028:7;7933;7960:6;-1:-1:-1;;;;;7960:6:0;;7895:79;8028:7;-1:-1:-1;;;;;8028:21:0;;8020:66;;;;-1:-1:-1;;;8020:66:0;;11415:2:1;8020:66:0;;;11397:21:1;;;11434:18;;;11427:30;11493:34;11473:18;;;11466:62;11545:18;;8020:66:0;11213:356:1;8020:66:0;8219:1:::1;8203:6:::0;;8182:40:::1;::::0;-1:-1:-1;;;;;8203:6:0;;::::1;::::0;8182:40:::1;::::0;8219:1;;8182:40:::1;8250:1;8233:19:::0;;-1:-1:-1;;;;;;8233:19:0::1;::::0;;8120:140::o;32493:113::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;32573:16:::1;:25:::0;;;::::1;;;;-1:-1:-1::0;;32573:25:0;;::::1;::::0;;;::::1;::::0;;32493:113::o;31008:139::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;31102:37:::1;:21;31131:7:::0;31102:28:::1;:37::i;29745:122::-:0;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;29833:26:::1;:15;29850:8;29833:26;:::i;:::-;29821:10;29811:21;::::0;;;:9:::1;:21;::::0;;;;:48;29745:122::o;35326:129::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35419:20:0::1;35442:5;35419:20:::0;;;:10:::1;:20;::::0;;;;:28;;-1:-1:-1;;35419:28:0::1;::::0;;35326:129::o;29359:119::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;29445:18:::1;:25:::0;;-1:-1:-1;;;;;;29445:25:0::1;-1:-1:-1::0;;;;;29445:25:0;;;::::1;::::0;;;::::1;::::0;;29359:119::o;33375:117::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;33461:14:::1;:23:::0;;-1:-1:-1;;33461:23:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;33375:117::o;30216:126::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30308:18:0;;;::::1;;::::0;;;:12:::1;:18;::::0;;;;:26;;-1:-1:-1;;30308:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30216:126::o;34306:110::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;34386:14:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;34386:22:0;;::::1;::::0;;;::::1;::::0;;34306:110::o;37795:342::-;37938:10;37882:4;37926:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;37926:32:0;;;;;;;;;;37977:35;;;;37969:60;;;;-1:-1:-1;;;37969:60:0;;14200:2:1;37969:60:0;;;14182:21:1;14239:2;14219:18;;;14212:30;-1:-1:-1;;;14258:18:1;;;14251:42;14310:18;;37969:60:0;13998:336:1;37969:60:0;38042:65;38051:10;38063:7;38072:34;38091:15;38072:16;:34;:::i;38042:65::-;-1:-1:-1;38125:4:0;;37795:342;-1:-1:-1;;;37795:342:0:o;36370:167::-;36450:4;36467:40;36477:10;36489:9;36500:6;36467:9;:40::i;29215:103::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;29289:15:::1;:21:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;29289:21:0::1;-1:-1:-1::0;;29289:21:0;;::::1;::::0;;;::::1;::::0;;29215:103::o;29110:97::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;29184:9:::1;:15:::0;29110:97::o;35055:124::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;35145:17:::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;35145:26:0;;::::1;::::0;;;::::1;::::0;;35055:124::o;33904:288::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;34045:13:::1;16660:1;34045:2;:13;:::i;:::-;34029:29;::::0;:15;:29:::1;:::i;:::-;34013:45:::0;-1:-1:-1;34095:13:0::1;16660:1;34095:2;:13;:::i;:::-;34082:26;::::0;:12;:26:::1;:::i;:::-;34119:12;:30:::0;;;;-1:-1:-1;34160:9:0::1;:24:::0;33904:288::o;31790:340::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;31882:18:::1;::::0;-1:-1:-1;;;;;31882:18:0::1;31868:10;:32;31860:56;;;::::0;-1:-1:-1;;;31860:56:0;;10731:2:1;31860:56:0::1;::::0;::::1;10713:21:1::0;10770:2;10750:18;;;10743:30;-1:-1:-1;;;10789:18:1;;;10782:41;10840:18;;31860:56:0::1;10529:335:1::0;31860:56:0::1;31942:15;::::0;;31927:14:::1;31968:17:::0;;;;32048:32:::1;::::0;31942:15;;32013:10:::1;::::0;;;31942:15;;32048:32:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32034:46;;;32099:4;32091:31;;;::::0;-1:-1:-1;;;32091:31:0;;13856:2:1;32091:31:0::1;::::0;::::1;13838:21:1::0;13895:2;13875:18;;;13868:30;-1:-1:-1;;;13914:18:1;;;13907:45;13969:18;;32091:31:0::1;13654:339:1::0;32091:31:0::1;31849:281;;;31790:340::o:0;27721:262::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;27821:4:::1;27803:24;::::0;;;:9:::1;:24;::::0;;;;;:34;-1:-1:-1;27803:34:0::1;27795:43;;;::::0;::::1;;27867:4;27849:24;::::0;;;:9:::1;:24;::::0;;;;:34;;27877:6;;27849:24;:34:::1;::::0;27877:6;;27849:34:::1;:::i;:::-;;;;;;;;27916:6;27894:18;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;27938:37:0::1;::::0;6640:25:1;;;17230:42:0::1;::::0;27955:4:::1;::::0;-1:-1:-1;;;;;;;;;;;27938:37:0;6628:2:1;6613:18;27938:37:0::1;;;;;;;27721:262:::0;:::o;31439:343::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;31534:12:::1;::::0;-1:-1:-1;;;;;31534:12:0::1;31520:10;:26;31512:50;;;::::0;-1:-1:-1;;;31512:50:0;;10731:2:1;31512:50:0::1;::::0;::::1;10713:21:1::0;10770:2;10750:18;;;10743:30;-1:-1:-1;;;10789:18:1;;;10782:41;10840:18;;31512:50:0::1;10529:335:1::0;31512:50:0::1;31588:18;::::0;;31573:14:::1;31617:20:::0;;;;31700:32:::1;::::0;31588:18;;31665:10:::1;::::0;;;31588:18;;31700:32:::1;4753:205:1::0;34912:135:0;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;35007:11:::1;:32:::0;;-1:-1:-1;;35007:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34912:135::o;33756:134::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;33850:32:::1;33869:12;:4:::0;33876:5:::1;33869:12;:::i;:::-;33850:18;:32::i;28992:110::-:0;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;29071:12:::1;:23:::0;;-1:-1:-1;;29071:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28992:110::o;33504:121::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;33592:16:::1;:25:::0;;::::1;::::0;;::::1;;;-1:-1:-1::0;;33592:25:0;;::::1;::::0;;;::::1;::::0;;33504:121::o;32138:101::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;32219:10:::1;32198:33;32247:103:::0;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;32326:8:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;32326:16:0::1;-1:-1:-1::0;;32326:16:0;;::::1;::::0;;;::::1;::::0;;32247:103::o;8274:236::-;8039:10;8028:7;7933;7960:6;-1:-1:-1;;;;;7960:6:0;;7895:79;8028:7;-1:-1:-1;;;;;8028:21:0;;8020:66;;;;-1:-1:-1;;;8020:66:0;;11415:2:1;8020:66:0;;;11397:21:1;;;11434:18;;;11427:30;11493:34;11473:18;;;11466:62;11545:18;;8020:66:0;11213:356:1;8020:66:0;-1:-1:-1;;;;;8355:22:0;::::1;8347:73;;;::::0;-1:-1:-1;;;8347:73:0;;8180:2:1;8347:73:0::1;::::0;::::1;8162:21:1::0;8219:2;8199:18;;;8192:30;8258:34;8238:18;;;8231:62;-1:-1:-1;;;8309:18:1;;;8302:36;8355:19;;8347:73:0::1;7978:402:1::0;8347:73:0::1;8457:6;::::0;;8436:38:::1;::::0;-1:-1:-1;;;;;8436:38:0;;::::1;::::0;8457:6;::::1;::::0;8436:38:::1;::::0;::::1;8485:6;:17:::0;;-1:-1:-1;;;;;;8485:17:0::1;-1:-1:-1::0;;;;;8485:17:0;;;::::1;::::0;;;::::1;::::0;;8274:236::o;35187:131::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35280:23:0::1;;::::0;;;:10:::1;:23;::::0;;;;:30;;-1:-1:-1;;35280:30:0::1;35306:4;35280:30;::::0;;35187:131::o;31155:276::-;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;31241:16:::1;::::0;;31226:14:::1;31268:18:::0;;;;31349:32:::1;::::0;31241:16;;31314:10:::1;::::0;;;31241:16;;31349:32:::1;4753:205:1::0;30729:123:0;18040:25;18054:10;18040:13;:25::i;:::-;18032:62;;;;-1:-1:-1;;;18032:62:0;;;;;;;:::i;:::-;30819:25:::1;:9;30836:7:::0;30819:16:::1;:25::i;14400:152::-:0;14470:4;14494:50;14499:3;-1:-1:-1;;;;;14519:23:0;;14494:4;:50::i;18132:123::-;18191:4;7960:6;;-1:-1:-1;;;;;18214:13:0;;;7960:6;;18214:13;;:33;;-1:-1:-1;;;;;;;18229:18:0;;;;;:12;:18;;;;;;;;;18132:123::o;36867:299::-;-1:-1:-1;;;;;36960:19:0;;36952:49;;;;-1:-1:-1;;;36952:49:0;;8940:2:1;36952:49:0;;;8922:21:1;8979:2;8959:18;;;8952:30;-1:-1:-1;;;8998:18:1;;;8991:47;9055:18;;36952:49:0;8738:341:1;36952:49:0;-1:-1:-1;;;;;37020:21:0;;37012:49;;;;-1:-1:-1;;;37012:49:0;;11071:2:1;37012:49:0;;;11053:21:1;11110:2;11090:18;;;11083:30;-1:-1:-1;;;11129:18:1;;;11122:45;11184:18;;37012:49:0;10869:339:1;37012:49:0;-1:-1:-1;;;;;37074:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;37126:32;;6640:25:1;;;37126:32:0;;6613:18:1;37126:32:0;;;;;;;36867:299;;;:::o;19482:2242::-;-1:-1:-1;;;;;19578:20:0;;19570:51;;;;-1:-1:-1;;;19570:51:0;;7480:2:1;19570:51:0;;;7462:21:1;7519:2;7499:18;;;7492:30;-1:-1:-1;;;7538:18:1;;;7531:48;7596:18;;19570:51:0;7278:342:1;19570:51:0;-1:-1:-1;;;;;19640:23:0;;19632:52;;;;-1:-1:-1;;;19632:52:0;;9286:2:1;19632:52:0;;;9268:21:1;9325:2;9305:18;;;9298:30;-1:-1:-1;;;9344:18:1;;;9337:46;9400:18;;19632:52:0;9084:340:1;19632:52:0;19698:11;;;;19695:113;;;-1:-1:-1;;;;;19735:18:0;;;;;;:10;:18;;;;;;;;19734:19;:45;;;;-1:-1:-1;;;;;;19758:21:0;;;;;;:10;:21;;;;;;;;19757:22;19734:45;19726:70;;;;-1:-1:-1;;;19726:70:0;;12481:2:1;19726:70:0;;;12463:21:1;12520:2;12500:18;;;12493:30;-1:-1:-1;;;12539:18:1;;;12532:42;12591:18;;19726:70:0;12279:336:1;19726:70:0;19820:15;19839:26;:9;19858:6;19839:18;:26::i;:::-;:59;;;-1:-1:-1;19869:29:0;:9;19888;19869:18;:29::i;:::-;19839:83;;;-1:-1:-1;;;;;;19902:20:0;;;;;;:12;:20;;;;;;;;19839:83;:110;;;-1:-1:-1;;;;;;19926:23:0;;;;;;:12;:23;;;;;;;;19839:110;19820:130;-1:-1:-1;19963:23:0;-1:-1:-1;;;;;19988:21:0;;20004:4;19988:21;;:49;;-1:-1:-1;;;;;;20013:24:0;;20032:4;20013:24;19988:49;20090:19;;19963:75;;-1:-1:-1;20051:24:0;;-1:-1:-1;;;;;20080:29:0;;;-1:-1:-1;;;20090:19:0;;;;20080:29;:59;;;;-1:-1:-1;;;;;;20113:26:0;;17150:42;20113:26;20080:59;20079:135;;;-1:-1:-1;20167:19:0;;-1:-1:-1;;;;;20154:32:0;;;-1:-1:-1;;;20167:19:0;;;;20154:32;:59;;;;-1:-1:-1;;;;;;20190:23:0;;17150:42;20190:23;20154:59;20051:164;;20229:18;:41;;;;20251:19;20229:41;:55;;;;20274:10;20229:55;20226:1491;;;20300:43;20317:6;20325:9;20336:6;20300:16;:43::i;:::-;20226:1491;;;20389:14;;;;;;;20384:404;;7933:7;7960:6;-1:-1:-1;;;;;20428:17:0;;;7960:6;;20428:17;;;;:41;;-1:-1:-1;7933:7:0;7960:6;-1:-1:-1;;;;;20449:20:0;;;7960:6;;20449:20;;20428:41;20424:349;;;20498:10;;-1:-1:-1;;;20498:10:0;;;;20494:260;;;20558:9;-1:-1:-1;;;;;20542:28:0;20551:6;-1:-1:-1;;;;;20542:28:0;-1:-1:-1;;;;;;;;;;;20568:1:0;20542:28;;;;6640:25:1;;6628:2;6613:18;;6486:185;20542:28:0;;;;;;;;20597:7;;;19482:2242;;;:::o;20494:260::-;20689:14;;;;;;;20681:49;;;;-1:-1:-1;;;20681:49:0;;11776:2:1;20681:49:0;;;11758:21:1;11815:2;11795:18;;;11788:30;11854:25;11834:18;;;11827:53;11897:18;;20681:49:0;11574:347:1;20681:49:0;20839:19;;20820:10;;-1:-1:-1;;;;;20831:27:0;;;-1:-1:-1;;;20839:19:0;;;;20831:27;;:53;;-1:-1:-1;;;;;;20861:23:0;;17150:42;20861:23;20831:53;20922:19;;20820:64;;-1:-1:-1;20899:11:0;;-1:-1:-1;;;;;20911:30:0;;;-1:-1:-1;;;20922:19:0;;;;20911:30;;:59;;-1:-1:-1;;;;;;20944:26:0;;17150:42;20944:26;20911:59;21048:8;;21093:11;;20899:71;;-1:-1:-1;21048:8:0;;;;;;21108:6;;21075:29;;:15;:29;:::i;:::-;21074:40;21071:291;;;21135:8;:13;;-1:-1:-1;;21135:13:0;;;;;21071:291;;;21207:6;21192:11;;21174:15;:29;;;;:::i;:::-;21173:40;21170:192;;;21234:8;:13;;-1:-1:-1;;21234:13:0;;;;;21170:192;;;21306:6;21291:11;;21273:15;:29;;;;:::i;:::-;21272:40;21269:93;;;21333:8;:13;;-1:-1:-1;;21333:13:0;;;;;21269:93;21376:52;21391:6;21398:9;21408:6;21415:5;21421:6;21376:14;:52::i;:::-;21443:8;:27;;;;;;;;-1:-1:-1;;21443:27:0;;;;;;;;;;;-1:-1:-1;;;21490:8:0;;;;21487:217;;;21519:12;;;21550:13;;;21582:25;;;21626:17;;;21662:26;;;21487:217;20369:1348;;;20226:1491;19559:2165;;;19482:2242;;;:::o;14566:158::-;14639:4;14663:53;14671:3;-1:-1:-1;;;;;14691:23:0;;14663:7;:53::i;25464:1344::-;25344:27;:34;;-1:-1:-1;;25344:34:0;25374:4;25344:34;;;;;;25582:4:::1;25344:27:::0;25564:24;;;::::1;::::0;;;;;;;;25629:13:::1;::::0;25564:24;;25344:27;25615::::1;::::0;-1:-1:-1;;;25629:13:0;::::1;25344:34:::0;25629:13;;::::1;::::0;25615;;::::1;;:27;:::i;:::-;25599:43;;;;25653:19;25673:9;;25653:29;;25710:8;25696:11;:22;25693:127;;;25738:12;::::0;::::1;;25735:74;;;-1:-1:-1::0;25785:8:0;25735:74:::1;25852:11;25836:15;:27;:40;;;-1:-1:-1::0;25865:11:0::1;::::0;::::1;::::0;25836:40:::1;25833:77;;;25892:7;;;;;25833:77;25959:13;::::0;25920:25:::1;::::0;25946:36:::1;::::0;::::1;::::0;25947:25:::1;::::0;25959:13;;::::1;;;25947:11:::0;:25:::1;:::i;:::-;25946:36;;;;:::i;:::-;26033:13;::::0;25920:62;;-1:-1:-1;25993:25:0::1;::::0;26020:36:::1;::::0;::::1;::::0;26021:25:::1;::::0;-1:-1:-1;;;26033:13:0;::::1;;;26021:11:::0;:25:::1;:::i;:::-;26020:36;;;;:::i;:::-;26106:12;::::0;25993:63;;-1:-1:-1;26067:24:0::1;::::0;26093:35:::1;::::0;::::1;::::0;26094:24:::1;::::0;-1:-1:-1;;;26106:12:0;::::1;;;26094:11:::0;:24:::1;:::i;:::-;26093:35;;;;:::i;:::-;26181:15;::::0;26067:61;;-1:-1:-1;26139:27:0::1;::::0;26168:38:::1;::::0;::::1;::::0;26169:27:::1;::::0;-1:-1:-1;;;26181:15:0;::::1;;;26169:11:::0;:27:::1;:::i;:::-;26168:38;;;;:::i;:::-;26139:67:::0;-1:-1:-1;26219:16:0::1;26236:19;26254:1;26236:17:::0;:19:::1;:::i;:::-;26219:36:::0;-1:-1:-1;26266:19:0::1;26286:26;26219:36:::0;26286:17;:26:::1;:::i;:::-;26266:46:::0;-1:-1:-1;26328:17:0::1;26396:16:::0;26376:19;26346:29:::1;26358:17:::0;26266:46;26346:29:::1;:::i;:::-;:49;;;;:::i;:::-;:66;;;;:::i;:::-;26328:84:::0;-1:-1:-1;26454:21:0::1;26486:27;26328:84:::0;26486:16:::1;:27::i;:::-;26524:14;26540:41;26564:17:::0;26540:21:::1;:41;:::i;:::-;26524:58:::0;-1:-1:-1;26593:14:0::1;26631:9:::0;26611:18:::1;26618:11:::0;26524:58;26611:18:::1;:::i;:::-;26610:30;;;;:::i;:::-;26593:47;;26651:31;26665:8;26675:6;26651:13;:31::i;:::-;26693:20;26715:41;26739:17:::0;26715:21:::1;:41;:::i;:::-;26693:64;;26768:32;26787:12;26768:18;:32::i;:::-;25529:1279;;;;;;;;;;;;;;25389:1;-1:-1:-1::0;25401:27:0;:35;;-1:-1:-1;;25401:35:0;;;25464:1344::o;12084:305::-;12147:4;13173:19;;;:12;;;:19;;;;;;12164:218;;-1:-1:-1;12207:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;12281:18;;12259:19;;;:12;;;:19;;;;;;:40;;;;12314:11;;12164:218;-1:-1:-1;12365:5:0;12358:12;;14738:167;-1:-1:-1;;;;;14872:23:0;;14818:4;13173:19;;;:12;;;:19;;;;;;:24;;14842:55;13076:129;23536:351;-1:-1:-1;;;;;23655:17:0;;23631:21;23655:17;;;:9;:17;;;;;;23691:23;;;;23683:60;;;;-1:-1:-1;;;23683:60:0;;7827:2:1;23683:60:0;;;7809:21:1;7866:2;7846:18;;;7839:30;-1:-1:-1;;;7885:18:1;;;7878:54;7949:18;;23683:60:0;7625:348:1;23683:60:0;23757:27;23770:6;23777;23757:12;:27::i;:::-;23798:28;23808:9;23819:6;23798:9;:28::i;:::-;23860:9;-1:-1:-1;;;;;23844:33:0;23853:6;-1:-1:-1;;;;;23844:33:0;-1:-1:-1;;;;;;;;;;;23870:6:0;23844:33;;;;6640:25:1;;6628:2;6613:18;;6486:185;23844:33:0;;;;;;;;23620:267;23536:351;;;:::o;21742:1782::-;-1:-1:-1;;;;;21885:20:0;;;21858:24;21885:20;;;:9;:20;;;;;;;21940:17;;;;;;;;21976:23;;;;21968:60;;;;-1:-1:-1;;;21968:60:0;;7827:2:1;21968:60:0;;;7809:21:1;7866:2;7846:18;;;7839:30;-1:-1:-1;;;7885:18:1;;;7878:54;7949:18;;21968:60:0;7625:348:1;21968:60:0;22061:1;22051:9;;:11;;;;:::i;:::-;22039:9;:23;22075:9;22095:893;;;;22124:38;:21;22155:6;22124:30;:38::i;:::-;22120:247;;-1:-1:-1;;;;;22201:17:0;;;;;;:9;:17;;;;;;22220:15;-1:-1:-1;22201:34:0;;:52;;-1:-1:-1;22237:16:0;;;;;;;22201:52;22193:82;;;;-1:-1:-1;;;22193:82:0;;14541:2:1;22193:82:0;;;14523:21:1;14580:2;14560:18;;;14553:30;-1:-1:-1;;;14599:18:1;;;14592:48;14657:18;;22193:82:0;14339:342:1;22193:82:0;22339:12;;22323:28;;:15;:28;:::i;:::-;-1:-1:-1;;;;;22305:17:0;;;;;;:9;:17;;;;;:46;22120:247;22411:9;;22403:6;:17;;22395:44;;;;-1:-1:-1;;;22395:44:0;;9980:2:1;22395:44:0;;;9962:21:1;10019:2;9999:18;;;9992:30;-1:-1:-1;;;10038:18:1;;;10031:45;10093:18;;22395:44:0;9778:339:1;22395:44:0;-1:-1:-1;22458:8:0;;;;;;;22095:893;;;22489:5;22486:502;;;22550:12;;22525:23;22542:6;22525:16;:23;:::i;:::-;:37;;22517:65;;;;-1:-1:-1;;;22517:65:0;;;;;;;:::i;:::-;22613:8;;22605:6;:16;;22597:45;;;;-1:-1:-1;;;22597:45:0;;;;;;;:::i;:::-;-1:-1:-1;22661:7:0;;;;22486:502;;;22743:12;;22718:23;22735:6;22718:16;:23;:::i;:::-;:37;;22710:65;;;;-1:-1:-1;;;22710:65:0;;;;;;;:::i;:::-;22808:38;:21;22839:6;22808:30;:38::i;:::-;22804:139;;-1:-1:-1;;;;;22873:17:0;;;;;;:9;:17;;;;;;22892:15;-1:-1:-1;22873:34:0;;:52;;-1:-1:-1;22909:16:0;;;;;;;22873:52;22865:78;;;;-1:-1:-1;;;22865:78:0;;13167:2:1;22865:78:0;;;13149:21:1;13206:2;13186:18;;;13179:30;-1:-1:-1;;;13225:18:1;;;13218:44;13279:18;;22865:78:0;12965:338:1;22865:78:0;-1:-1:-1;22962:12:0;;;;;;;22486:502;23019:19;;-1:-1:-1;;;;;23011:27:0;;;-1:-1:-1;;;23019:19:0;;;;23011:27;;;;23010:50;;-1:-1:-1;23043:16:0;;;;23042:17;23010:50;:82;;;;-1:-1:-1;23064:27:0;;;;23063:28;23010:82;23007:126;;;23107:26;23126:6;23107:18;:26::i;:::-;23240:12;;23147:21;;23169:84;;23183:6;;23191:3;;23240:12;-1:-1:-1;;;23240:12:0;;;;;-1:-1:-1;;;23224:15:0;;;;;23196:27;;23210:13;;;;;;-1:-1:-1;;;23196:13:0;;;;:27;:::i;:::-;:43;;;;:::i;:::-;:56;;;;:::i;:::-;23169:13;:84::i;:::-;23147:106;-1:-1:-1;23267:19:0;23287:22;23147:106;23287:6;:22;:::i;:::-;23267:42;;23325:27;23338:6;23345;23325:12;:27::i;:::-;23386:4;23368:24;;;;:9;:24;;;;;:41;;23396:13;;23368:24;:41;;23396:13;;23368:41;:::i;:::-;;;;-1:-1:-1;23425:33:0;;-1:-1:-1;23435:9:0;23446:11;23425:9;:33::i;:::-;23492:9;-1:-1:-1;;;;;23476:38:0;23485:6;-1:-1:-1;;;;;23476:38:0;-1:-1:-1;;;;;;;;;;;23502:11:0;23476:38;;;;6640:25:1;;6628:2;6613:18;;6486:185;23476:38:0;;;;;;;;21847:1677;;;;;21742:1782;;;;;:::o;12403:659::-;12469:4;12510:19;;;:12;;;:19;;;;;;12546:15;;12542:513;;12595:21;12619:14;12632:1;12619:10;:14;:::i;:::-;12668:18;;12595:38;;-1:-1:-1;12648:17:0;;12668:22;;12689:1;;12668:22;:::i;:::-;12648:42;;12716:17;12736:3;:11;;12748:9;12736:22;;;;;;;;:::i;:::-;;;;;;;;;12716:42;;12811:9;12782:3;:11;;12794:13;12782:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;12842:23;;;:12;;;:23;;;;;;:36;;;12903:17;;12842:3;;12903:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;12951:3;:12;;:19;12964:5;12951:19;;;;;;;;;;;12944:26;;;12994:4;12987:11;;;;;;;;12542:513;13038:5;13031:12;;;;;26820:455;26913:14;;26881:56;;26898:4;;-1:-1:-1;;;;;26913:14:0;26930:6;26881:8;:56::i;:::-;26972:16;;;26986:1;26972:16;;;;;;;;26948:21;;26972:16;;;;;;;;;;-1:-1:-1;26972:16:0;26948:40;;27017:4;26999;27004:1;26999:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26999:23:0;;;:7;;;;;;;;;;:23;;;;27043:14;;:21;;;-1:-1:-1;;;27043:21:0;;;;:14;;;;;:19;;:21;;;;;26999:7;;27043:21;;;;;:14;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27033:4;27038:1;27033:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27033:31:0;;;:7;;;;;;;;;:31;27077:14;;:190;;-1:-1:-1;;;27077:190:0;;:14;;;:65;;:190;;27157:6;;27077:14;;27194:4;;27221;;27241:15;;27077:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27287:397;27381:9;27369:10;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;27433:14:0;;27401:61;;27418:4;;-1:-1:-1;;;;;27433:14:0;27450:11;27401:8;:61::i;:::-;27473:14;;:203;;-1:-1:-1;;;27473:203:0;;27544:4;27473:203;;;5791:34:1;;;5841:18;;;5834:34;;;27473:14:0;5884:18:1;;;5877:34;;;5927:18;;;5920:34;5970:19;;;5963:44;27650:15:0;6023:19:1;;;6016:35;-1:-1:-1;;;;;27473:14:0;;;;:30;;27511:9;;5725:19:1;;27473:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27287:397;;:::o;24803:404::-;24907:14;;24869:22;;24923:3;;24895:26;;24907:14;;24895:9;:26;:::i;:::-;24894:32;;;;:::i;:::-;24974:13;;24869:57;;-1:-1:-1;24937:21:0;;24989:3;;24962:25;;24974:13;;;;;24962:9;:25;:::i;:::-;24961:31;;;;:::i;:::-;25043:16;;24937:55;;-1:-1:-1;25003:24:0;;25061:3;;25031:28;;25043:16;;;;;25031:9;:28;:::i;:::-;25030:34;;;;:::i;:::-;25003:61;;25095:14;25077:16;;:32;;;;;;;:::i;:::-;;;;;;;;25137:13;25120:15;;:30;;;;;;;:::i;:::-;;;;;;;;25181:16;25161:18;;:36;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;24803:404:0:o;24242:158::-;-1:-1:-1;;;;;24334:15:0;;24316:17;24334:15;;;:9;:15;;;;;;:22;;24350:6;;24334:22;:::i;:::-;-1:-1:-1;;;;;24367:15:0;;;;;;;:9;:15;;;;;:25;;;;-1:-1:-1;;24242:158:0:o;24073:157::-;-1:-1:-1;;;;;24162:15:0;;24144:17;24162:15;;;:9;:15;;;;;;:22;;24178:6;;24162:22;:::i;23899:156::-;23989:7;24042:5;24028:10;24017:21;;24024:3;24017:10;;:6;:10;;;;:::i;:::-;:21;;;;:::i;:::-;24016:31;;;;:::i;:::-;24009:38;23899:156;-1:-1:-1;;;;23899:156:0:o;14::1:-;80:20;;140:4;129:16;;119:27;;109:55;;160:1;157;150:12;109:55;14:156;;;:::o;175:247::-;234:6;287:2;275:9;266:7;262:23;258:32;255:52;;;303:1;300;293:12;255:52;342:9;329:23;361:31;386:5;361:31;:::i;427:251::-;497:6;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;598:9;592:16;617:31;642:5;617:31;:::i;683:388::-;751:6;759;812:2;800:9;791:7;787:23;783:32;780:52;;;828:1;825;818:12;780:52;867:9;854:23;886:31;911:5;886:31;:::i;:::-;936:5;-1:-1:-1;993:2:1;978:18;;965:32;1006:33;965:32;1006:33;:::i;:::-;1058:7;1048:17;;;683:388;;;;;:::o;1076:456::-;1153:6;1161;1169;1222:2;1210:9;1201:7;1197:23;1193:32;1190:52;;;1238:1;1235;1228:12;1190:52;1277:9;1264:23;1296:31;1321:5;1296:31;:::i;:::-;1346:5;-1:-1:-1;1403:2:1;1388:18;;1375:32;1416:33;1375:32;1416:33;:::i;:::-;1076:456;;1468:7;;-1:-1:-1;;;1522:2:1;1507:18;;;;1494:32;;1076:456::o;1537:382::-;1602:6;1610;1663:2;1651:9;1642:7;1638:23;1634:32;1631:52;;;1679:1;1676;1669:12;1631:52;1718:9;1705:23;1737:31;1762:5;1737:31;:::i;:::-;1787:5;-1:-1:-1;1844:2:1;1829:18;;1816:32;1857:30;1816:32;1857:30;:::i;1924:315::-;1992:6;2000;2053:2;2041:9;2032:7;2028:23;2024:32;2021:52;;;2069:1;2066;2059:12;2021:52;2108:9;2095:23;2127:31;2152:5;2127:31;:::i;:::-;2177:5;2229:2;2214:18;;;;2201:32;;-1:-1:-1;;;1924:315:1:o;2244:241::-;2300:6;2353:2;2341:9;2332:7;2328:23;2324:32;2321:52;;;2369:1;2366;2359:12;2321:52;2408:9;2395:23;2427:28;2449:5;2427:28;:::i;2490:245::-;2557:6;2610:2;2598:9;2589:7;2585:23;2581:32;2578:52;;;2626:1;2623;2616:12;2578:52;2658:9;2652:16;2677:28;2699:5;2677:28;:::i;2740:272::-;2798:6;2851:2;2839:9;2830:7;2826:23;2822:32;2819:52;;;2867:1;2864;2857:12;2819:52;2906:9;2893:23;2956:6;2949:5;2945:18;2938:5;2935:29;2925:57;;2978:1;2975;2968:12;3017:180;3076:6;3129:2;3117:9;3108:7;3104:23;3100:32;3097:52;;;3145:1;3142;3135:12;3097:52;-1:-1:-1;3168:23:1;;3017:180;-1:-1:-1;3017:180:1:o;3202:184::-;3272:6;3325:2;3313:9;3304:7;3300:23;3296:32;3293:52;;;3341:1;3338;3331:12;3293:52;-1:-1:-1;3364:16:1;;3202:184;-1:-1:-1;3202:184:1:o;3391:248::-;3459:6;3467;3520:2;3508:9;3499:7;3495:23;3491:32;3488:52;;;3536:1;3533;3526:12;3488:52;-1:-1:-1;;3559:23:1;;;3629:2;3614:18;;;3601:32;;-1:-1:-1;3391:248:1:o;3644:306::-;3732:6;3740;3748;3801:2;3789:9;3780:7;3776:23;3772:32;3769:52;;;3817:1;3814;3807:12;3769:52;3846:9;3840:16;3830:26;;3896:2;3885:9;3881:18;3875:25;3865:35;;3940:2;3929:9;3925:18;3919:25;3909:35;;3644:306;;;;;:::o;3955:182::-;4012:6;4065:2;4053:9;4044:7;4040:23;4036:32;4033:52;;;4081:1;4078;4071:12;4033:52;4104:27;4121:9;4104:27;:::i;4142:606::-;4241:6;4249;4257;4265;4273;4281;4289;4342:3;4330:9;4321:7;4317:23;4313:33;4310:53;;;4359:1;4356;4349:12;4310:53;4382:27;4399:9;4382:27;:::i;:::-;4372:37;;4428:36;4460:2;4449:9;4445:18;4428:36;:::i;:::-;4418:46;;4483:36;4515:2;4504:9;4500:18;4483:36;:::i;:::-;4473:46;;4538:36;4570:2;4559:9;4555:18;4538:36;:::i;:::-;4528:46;;4593:37;4625:3;4614:9;4610:19;4593:37;:::i;:::-;4583:47;;4649:37;4681:3;4670:9;4666:19;4649:37;:::i;:::-;4639:47;;4705:37;4737:3;4726:9;4722:19;4705:37;:::i;:::-;4695:47;;4142:606;;;;;;;;;;:::o;6676:597::-;6788:4;6817:2;6846;6835:9;6828:21;6878:6;6872:13;6921:6;6916:2;6905:9;6901:18;6894:34;6946:1;6956:140;6970:6;6967:1;6964:13;6956:140;;;7065:14;;;7061:23;;7055:30;7031:17;;;7050:2;7027:26;7020:66;6985:10;;6956:140;;;7114:6;7111:1;7108:13;7105:91;;;7184:1;7179:2;7170:6;7159:9;7155:22;7151:31;7144:42;7105:91;-1:-1:-1;7257:2:1;7236:15;-1:-1:-1;;7232:29:1;7217:45;;;;7264:2;7213:54;;6676:597;-1:-1:-1;;;6676:597:1:o;8385:348::-;8587:2;8569:21;;;8626:2;8606:18;;;8599:30;8665:26;8660:2;8645:18;;8638:54;8724:2;8709:18;;8385:348::o;12620:340::-;12822:2;12804:21;;;12861:2;12841:18;;;12834:30;-1:-1:-1;;;12895:2:1;12880:18;;12873:46;12951:2;12936:18;;12620:340::o;15061:980::-;15323:4;15371:3;15360:9;15356:19;15402:6;15391:9;15384:25;15428:2;15466:6;15461:2;15450:9;15446:18;15439:34;15509:3;15504:2;15493:9;15489:18;15482:31;15533:6;15568;15562:13;15599:6;15591;15584:22;15637:3;15626:9;15622:19;15615:26;;15676:2;15668:6;15664:15;15650:29;;15697:1;15707:195;15721:6;15718:1;15715:13;15707:195;;;15786:13;;-1:-1:-1;;;;;15782:39:1;15770:52;;15877:15;;;;15842:12;;;;15818:1;15736:9;15707:195;;;-1:-1:-1;;;;;;;15958:32:1;;;;15953:2;15938:18;;15931:60;-1:-1:-1;;;16022:3:1;16007:19;16000:35;15919:3;15061:980;-1:-1:-1;;;15061:980:1:o;17100:128::-;17140:3;17171:1;17167:6;17164:1;17161:13;17158:39;;;17177:18;;:::i;:::-;-1:-1:-1;17213:9:1;;17100:128::o;17233:204::-;17271:3;17307:4;17304:1;17300:12;17339:4;17336:1;17332:12;17374:3;17368:4;17364:14;17359:3;17356:23;17353:49;;;17382:18;;:::i;:::-;17418:13;;17233:204;-1:-1:-1;;;17233:204:1:o;17442:217::-;17482:1;17508;17498:132;;17552:10;17547:3;17543:20;17540:1;17533:31;17587:4;17584:1;17577:15;17615:4;17612:1;17605:15;17498:132;-1:-1:-1;17644:9:1;;17442:217::o;17664:422::-;17753:1;17796:5;17753:1;17810:270;17831:7;17821:8;17818:21;17810:270;;;17890:4;17886:1;17882:6;17878:17;17872:4;17869:27;17866:53;;;17899:18;;:::i;:::-;17949:7;17939:8;17935:22;17932:55;;;17969:16;;;;17932:55;18048:22;;;;18008:15;;;;17810:270;;;17814:3;17664:422;;;;;:::o;18091:140::-;18149:5;18178:47;18219:4;18209:8;18205:19;18199:4;18285:5;18315:8;18305:80;;-1:-1:-1;18356:1:1;18370:5;;18305:80;18404:4;18394:76;;-1:-1:-1;18441:1:1;18455:5;;18394:76;18486:4;18504:1;18499:59;;;;18572:1;18567:130;;;;18479:218;;18499:59;18529:1;18520:10;;18543:5;;;18567:130;18604:3;18594:8;18591:17;18588:43;;;18611:18;;:::i;:::-;-1:-1:-1;;18667:1:1;18653:16;;18682:5;;18479:218;;18781:2;18771:8;18768:16;18762:3;18756:4;18753:13;18749:36;18743:2;18733:8;18730:16;18725:2;18719:4;18716:12;18712:35;18709:77;18706:159;;;-1:-1:-1;18818:19:1;;;18850:5;;18706:159;18897:34;18922:8;18916:4;18897:34;:::i;:::-;18967:6;18963:1;18959:6;18955:19;18946:7;18943:32;18940:58;;;18978:18;;:::i;:::-;19016:20;;18236:806;-1:-1:-1;;;18236:806:1:o;19047:168::-;19087:7;19153:1;19149;19145:6;19141:14;19138:1;19135:21;19130:1;19123:9;19116:17;19112:45;19109:71;;;19160:18;;:::i;:::-;-1:-1:-1;19200:9:1;;19047:168::o;19220:125::-;19260:4;19288:1;19285;19282:8;19279:34;;;19293:18;;:::i;:::-;-1:-1:-1;19330:9:1;;19220:125::o;19350:127::-;19411:10;19406:3;19402:20;19399:1;19392:31;19442:4;19439:1;19432:15;19466:4;19463:1;19456:15;19482:127;19543:10;19538:3;19534:20;19531:1;19524:31;19574:4;19571:1;19564:15;19598:4;19595:1;19588:15;19614:127;19675:10;19670:3;19666:20;19663:1;19656:31;19706:4;19703:1;19696:15;19730:4;19727:1;19720:15;19878:131;-1:-1:-1;;;;;19953:31:1;;19943:42;;19933:70;;19999:1;19996;19989:12;20014:118;20100:5;20093:13;20086:21;20079:5;20076:32;20066:60;;20122:1;20119;20112:12
Swarm Source
ipfs://ad95fe0bf5960a3c3fc0dfe2629d12ee6cdd7f06b3a625815c3fab62687f6309
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.