ERC-20
Overview
Max Total Supply
246,910,102,260.68459990520557409 HYFX
Holders
58
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,155,944,575.533971028740309916 HYFXValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
HYPERFLXTOKEN
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-28 */ /** *Submitted for verification at Etherscan.io on 2023-08-17 */ // SPDX-License-Identifier: MIT //*************************************************************************************************// // Website : https://hyperflxtoken.com/ // TG : https://t.me/hyperflxtoken //*************************************************************************************************// pragma solidity 0.8.19; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } abstract contract Context { function _msgSender() internal view virtual returns (address payable) {return payable(msg.sender);} function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string public _name; string public _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) {return _name;} function symbol() public view virtual override returns (string memory) {return _symbol;} function decimals() public view virtual override returns (uint8) {return 18;} function totalSupply() public view virtual override returns (uint256) {return _totalSupply;} function balanceOf(address account) public view virtual override returns (uint256) {return _balances[account];} function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) {return _allowances[owner][spender];} function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked {_approve(sender, _msgSender(), currentAllowance - amount);} return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked {_approve(_msgSender(), spender, currentAllowance - subtractedValue);} return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked {_balances[sender] = senderBalance - amount;} _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _burn(address sender, uint256 amount) internal virtual { require(sender != address(0), "burn from the zero address"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked {_balances[sender] = senderBalance - amount;} _totalSupply -= amount; emit Transfer(sender, address(0), amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function swapExactETHForTokensSupportingFeeOnTransferTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable; function addLiquidityETH (address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); } interface IDexFactory {function createPair(address tokenA, address tokenB) external returns (address pair);} abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view virtual returns (address) {return _owner;} modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract SafeToken is Ownable { address payable public safeManager; event NewSafeManager (address indexed NewManager); constructor() {safeManager = payable(msg.sender);} function setSafeManager(address payable _safeManager) external onlyOwner { require(_safeManager != address(0), "Receiver is the zero address"); safeManager = _safeManager; emit NewSafeManager (safeManager); } function withdraw(address _token, uint256 _amount) external { require(msg.sender == safeManager); IERC20(_token).transfer(safeManager, _amount);} function withdrawETH(uint256 _amount) external {require(msg.sender == safeManager); safeManager.transfer(_amount);} } contract Main is ERC20, Ownable, SafeToken { IDexRouter public DEXV2Router; address private immutable DEXV2Pair; address payable private MarketingWallet; address private DeadWallet; address private DexRouter; bool private swapping; bool private swapAndLiquifyEnabled = true; bool public tradingEnabled = false; bool private JeetsFee = true; bool private JeetsBurn = true; bool private DelayOption = false; uint256 private marketingETHPortion = 0; uint256 private MaxSell; uint256 private MaxWallet; uint256 private SwapMin; uint256 private MaxSwap; uint256 private MaxTaxes; uint256 private MaxTokenToSwap; uint256 private maxSellTransactionAmount; uint256 private maxWalletAmount; uint256 private swapTokensAtAmount; uint8 private decimal; uint256 private InitialSupply; uint256 private DispatchSupply; uint256 private _liquidityUnlockTime = 0; uint256 private counter; uint256 private MinTime = 0; // Tax Fees uint256 private _LiquidityFee = 0; uint256 private _BurnFee = 0; uint256 private _MarketingFee= 2; uint256 private _Wallet2WalletFee = 0; // no wallet to wallet fee uint256 private _BuyFee = 2; uint256 private _SellFee = 0; uint8 private VminDiv = 1; uint8 private VmaxDiv = 15; uint8 private MaxJeetsFee = 30; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) private _isWhitelisted; mapping (address => bool) private _isExcludedFromMaxTx; mapping (address => uint256) private LastTimeSell; mapping (address => bool) public automatedMarketMakerPairs; event UpdateDEXV2Router(address indexed newAddress, address indexed oldAddress); event SwapAndLiquifyEnabledUpdated(bool enabled); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SwapAndLiquify(uint256 tokensSwapped, uint256 ETHReceived, uint256 tokensIntoLiqudity); event ExtendLiquidityLock(uint256 extendedLockTime); event NewDelay (bool delay, uint256 time); event NewLimits (uint256 maxWallet, uint256 maxSell, uint256 minswap, uint256 swapmax, uint256 maxtax); event NewFees (uint256 buy, uint256 Sell); event NewMarketingWallet (address indexed newMarketingWallet); event Launched (bool trading); event LPReleased (address indexed receiver, uint256 amount); event JeetTaxChanged (uint8 Maxdiv, uint8 Mindiv, uint8 Jeetsfee); event BuyBackTriggered(uint256 amount); constructor(string memory name_, string memory symbol_, uint8 decimal_, address marketing_, uint256 supply_, uint256 dispatch_, uint8 maxtaxes_) ERC20(name_, symbol_) { MarketingWallet = payable(marketing_); DeadWallet = 0x000000000000000000000000000000000000dEaD; decimal = decimal_; InitialSupply = supply_*10**decimal; DispatchSupply = dispatch_*10**decimal; MaxSwap = supply_ * 1 / 100; MaxSell = supply_ * 4 / 100; MaxWallet = supply_ * 100 / 100; SwapMin = supply_ * 1 / 1000; MaxTokenToSwap = MaxSwap*10**decimal; maxSellTransactionAmount = MaxSell * 10**decimal; maxWalletAmount = MaxWallet * 10**decimal; swapTokensAtAmount = SwapMin * 10**decimal; MaxTaxes = maxtaxes_; // Create a DEX pair for this new token IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _DEXV2Pair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH()); DEXV2Router = _dexRouter; DEXV2Pair = _DEXV2Pair; _setAutomatedMarketMakerPair(_DEXV2Pair, true); _SellFee = _LiquidityFee + _MarketingFee + _BurnFee;//YY% // exclude from paying fees or having max transaction amount _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[DeadWallet] = true; _isExcludedFromFees[MarketingWallet] = true; _isExcludedFromFees[msg.sender] = true; // exclude from max tx _isExcludedFromMaxTx[address(this)] = true; _isExcludedFromMaxTx[DeadWallet] = true; _isExcludedFromMaxTx[MarketingWallet] = true; _isExcludedFromMaxTx[msg.sender] = true; // Whitelist _isWhitelisted[address(this)] = true; _isWhitelisted[DeadWallet] = true; _isWhitelisted[MarketingWallet] = true; _isWhitelisted[msg.sender] = true; // _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again if(DispatchSupply == 0) {_mint(address(this), InitialSupply);} else if (DispatchSupply == InitialSupply) {_mint(msg.sender, DispatchSupply);} else { _mint(msg.sender, DispatchSupply); _mint(address(this), InitialSupply - DispatchSupply); } } receive() external payable {} //****************************************************************************************************** // Public functions //****************************************************************************************************** function decimals() override public view returns (uint8) { return decimal; } function GetExclusions(address account) public view returns(bool MaxTx, bool Fees, bool Whitelist){return (_isExcludedFromMaxTx[account], _isExcludedFromFees[account], _isWhitelisted[account]);} function GetFees() public view returns(uint Buy, uint Sell, uint Wallet2Wallet, uint Liquidity, uint Marketing, uint Burn){return (_BuyFee, _SellFee, _Wallet2WalletFee, _LiquidityFee, _MarketingFee, _BurnFee);} function GetLimits() public view returns(uint256 SellMax, uint256 WalletMax, uint256 TaxMax, uint256 MinSwap, uint256 SwapMax, bool SwapLiq, bool ENtrading){return (MaxSell, MaxWallet, MaxTaxes, SwapMin, MaxSwap, swapAndLiquifyEnabled, tradingEnabled);} function GetDelay() public view returns (bool delayoption, uint256 mintime) {return (DelayOption, MinTime);} function GetContractAddresses() public view returns(address marketing, address Dead, address LP){return (address(MarketingWallet), address(DeadWallet), address(DEXV2Pair));} function GetJeetsTaxInfo() external view returns (bool jeetsfee, bool jeetsburn, uint vmaxdiv, uint vmindiv, uint maxjeetsfee) {return(JeetsFee, JeetsBurn, VmaxDiv, VminDiv, MaxJeetsFee);} function GetContractBalance() external view returns (uint256 marketingETH) {return(marketingETHPortion);} function GetSupplyInfo() public view returns (uint256 initialSupply, uint256 circulatingSupply, uint256 burntTokens) { uint256 supply = totalSupply (); uint256 tokensBurnt = InitialSupply - supply; return (InitialSupply, supply, tokensBurnt); } function getLiquidityUnlockTime() public view returns (uint256 Days, uint256 Hours, uint256 Minutes, uint256 Seconds) { if (block.timestamp < _liquidityUnlockTime){ Days = (_liquidityUnlockTime - block.timestamp) / 86400; Hours = (_liquidityUnlockTime - block.timestamp - Days * 86400) / 3600; Minutes = (_liquidityUnlockTime - block.timestamp - Days * 86400 - Hours * 3600 ) / 60; Seconds = _liquidityUnlockTime - block.timestamp - Days * 86400 - Hours * 3600 - Minutes * 60; return (Days, Hours, Minutes, Seconds); } return (0, 0, 0, 0); } //****************************************************************************************************** // Write OnlyOwners functions //****************************************************************************************************** function buyBackBurn(uint256 amountInWei) external { require(amountInWei <= 10 ether, "May not buy more than 10 ETH in a single buy to reduce sandwich attacks"); require(msg.sender == safeManager); address[] memory path = new address[](2); path[0] = DEXV2Router.WETH(); path[1] = address(this); // make the swap DEXV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountInWei}(0, path, address(DeadWallet), block.timestamp); emit BuyBackTriggered(amountInWei); } function Airdrop(address[] memory wallets, uint256[] memory amountsInTokens) external onlyOwner { require(wallets.length == amountsInTokens.length, "arrays must be the same length"); require(wallets.length < 600, "Can only airdrop 600 wallets per txn due to gas limits"); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input. for(uint256 i = 0; i < wallets.length; i++){ address wallet = wallets[i]; uint256 amount = amountsInTokens[i] * 10**decimal; super._transfer(msg.sender, wallet, amount); } } function setProjectWallet (address payable _newMarketingWallet) external onlyOwner { if (_newMarketingWallet != MarketingWallet) { _isExcludedFromFees[MarketingWallet] = false; _isExcludedFromMaxTx[MarketingWallet] = false; _isWhitelisted[MarketingWallet] = false; _isExcludedFromFees[_newMarketingWallet] = true; _isExcludedFromMaxTx[_newMarketingWallet] = true; _isWhitelisted[_newMarketingWallet] = true; MarketingWallet = _newMarketingWallet; } emit NewMarketingWallet (_newMarketingWallet); } function SetDelay (bool delayoption, uint256 mintime) external onlyOwner { require(mintime <= 8640, "MinTime Can't be more than a Day" ); MinTime = mintime; DelayOption = delayoption; emit NewDelay (delayoption, mintime); } function SetLimits(uint256 _maxWallet, uint256 _maxSell, uint256 _minswap, uint256 _swapmax, uint256 MaxTax, bool _swapAndLiquifyEnabled) external onlyOwner { uint256 supply = totalSupply (); require(_maxWallet * 10**decimal >= supply / 100 && _maxWallet * 10**decimal <= supply, "MawWallet must be between totalsupply and 1% of totalsupply"); require(_maxSell * 10**decimal >= supply / 1000 && _maxSell * 10**decimal <= supply, "MawSell must be between totalsupply and 0.1% of totalsupply" ); require(_minswap * 10**decimal >= supply / 10000 && _minswap <= _swapmax / 2, "MinSwap must be between maxswap/2 and 0.01% of totalsupply" ); require(MaxTax >= 1 && MaxTax <= 25, "Max Tax must be updated to between 1 and 25 percent"); require(_swapmax >= _minswap*2 && _swapmax * 10**decimal <= supply, "MaxSwap must be between totalsupply and SwapMin x 2" ); MaxSwap = _swapmax; MaxTokenToSwap = MaxSwap * 10**decimal; MaxWallet = _maxWallet; maxWalletAmount = MaxWallet * 10**decimal; MaxSell = _maxSell; maxSellTransactionAmount = MaxSell * 10**decimal; SwapMin = _minswap; swapTokensAtAmount = SwapMin * 10**decimal; MaxTaxes = MaxTax; swapAndLiquifyEnabled = _swapAndLiquifyEnabled; emit NewLimits (_maxWallet, _maxSell, _minswap, _swapmax, MaxTax); emit SwapAndLiquifyEnabledUpdated(_swapAndLiquifyEnabled); } function SetTaxes(uint256 newBuyTax, uint256 wallet2walletfee, uint256 newLiquidityTax, uint256 newBurnTax, uint256 newMarketingTax) external onlyOwner() { require(newBuyTax <= MaxTaxes && newBuyTax >= newBurnTax, "Total Tax can't exceed MaxTaxes. or be lower than burn tax"); uint256 TransferTax = newMarketingTax; require(TransferTax + newLiquidityTax + newBurnTax <= MaxTaxes, "Total Tax can't exceed MaxTaxes."); require(newMarketingTax >= 0 && newBuyTax >= 0 && newLiquidityTax >= 0 && newBurnTax >= 0,"No tax can be negative"); if(wallet2walletfee != 0){require(wallet2walletfee >= _BurnFee && wallet2walletfee <= MaxTaxes, "Wallet 2 Wallet Tax must be updated to between burn tax and 25 percent");} _BuyFee = newBuyTax; _Wallet2WalletFee = wallet2walletfee; _BurnFee = newBurnTax; _LiquidityFee = newLiquidityTax; _MarketingFee = newMarketingTax; _SellFee = _LiquidityFee + _MarketingFee + _BurnFee; emit NewFees (newBuyTax, _SellFee); } function updateDEXV2Router(address newAddress) external onlyOwner { require(newAddress != address(DEXV2Router), "The router already has that address"); emit UpdateDEXV2Router(newAddress, address(DEXV2Router)); DEXV2Router = IDexRouter(newAddress); } function SetExclusions (address account, bool Fee, bool MaxTx, bool WhiteList) external onlyOwner { require (_isExcludedFromFees[account] != Fee, "account already set"); _isExcludedFromFees[account] = Fee; _isExcludedFromMaxTx[account] = MaxTx; _isWhitelisted[account] = WhiteList; emit ExcludeFromFees (account, Fee); } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != DEXV2Pair, "The Market pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function ExtendLockTime(uint256 newdays, uint256 newhours) external onlyOwner { uint256 lockTimeInSeconds = newdays*86400 + newhours*3600; if (_liquidityUnlockTime < block.timestamp) _liquidityUnlockTime = block.timestamp; setUnlockTime(lockTimeInSeconds + _liquidityUnlockTime); emit ExtendLiquidityLock(lockTimeInSeconds); } function Launch (uint256 Blocks, uint256 lockTimeInDays, uint256 lockTimeInHours) external onlyOwner { require (tradingEnabled == false, "can only launch once"); require(Blocks <= 40, "Not more than 2mn"); if (address(this).balance == 0) { tradingEnabled = true; counter = block.number + Blocks; } else { uint256 lockTimeInSeconds = lockTimeInDays*86400 + lockTimeInHours*3600; _liquidityUnlockTime = block.timestamp + lockTimeInSeconds; addLiquidity (balanceOf(address(this)), address(this).balance); tradingEnabled = true; counter = block.number + Blocks; } emit Launched (tradingEnabled); } function ReleaseLP() external onlyOwner { require(block.timestamp >= _liquidityUnlockTime, "Not yet unlocked"); IERC20 liquidityToken = IERC20(DEXV2Pair); uint256 amount = liquidityToken.balanceOf(address(this)); liquidityToken.transfer(msg.sender, amount); emit LPReleased (msg.sender, amount); } function SetJeetsTax(bool jeetsfee, bool jeetsburn, uint8 vmaxdiv, uint8 vmindiv, uint8 maxjeetsfee) external { require(msg.sender == safeManager); require (vmaxdiv >= 10 && vmaxdiv <= 40, "cannot set Vmax outside 10%/40% ratio"); require (vmindiv >= 1 && vmindiv <= 10, "cannot set Vmin outside 1%/10% ratio"); require (maxjeetsfee >= 1 && maxjeetsfee <= 20, "max jeets fee must be betwwen 1% and 20%"); JeetsFee = jeetsfee; JeetsBurn = jeetsburn; VmaxDiv = vmaxdiv; VminDiv = vmindiv; MaxJeetsFee = maxjeetsfee; emit JeetTaxChanged (vmaxdiv, vmindiv, maxjeetsfee); } //****************************************************************************************************** // Internal functions //****************************************************************************************************** function _setAutomatedMarketMakerPair(address pair, bool value) internal { require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value"); automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function takeFee(address from, address to, uint256 amount) internal returns (uint256) { uint256 fees = 0; // no wallet to wallet tax uint256 burntaxamount = 0; // no wallet to wallet tax uint256 extraTax = 0; if (automatedMarketMakerPairs[from]) { // buy tax applied if buy if (tradingEnabled && block.number < counter && !_isWhitelisted[to] && automatedMarketMakerPairs[from]) { fees = amount * 99 / 100; burntaxamount = amount * 99 / 100; } else if (_BuyFee != 0) { fees = amount * _BuyFee / 100; // total fee amount burntaxamount=amount * _BurnFee / 100; // burn amount aside } } else if(automatedMarketMakerPairs[to]) { // sell tax applied if sell if (JeetsFee && !_isWhitelisted[from]){ // Jeets extra Fee against massive dumpers extraTax = JeetsSellTax(amount); if (extraTax > 0) { if (JeetsBurn) {burntaxamount += extraTax;} fees += extraTax; } } if(_SellFee != 0) { fees += amount * _SellFee / 100; // total fee amount burntaxamount+=amount * _BurnFee / 100; // burn amount aside } } else if(!automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && _Wallet2WalletFee != 0) { fees = amount * _Wallet2WalletFee / 100; burntaxamount=amount * _BurnFee / 100; // burn amount aside } fees -= burntaxamount; // fee is total amount minus burn if (burntaxamount != 0) {super._burn(from, burntaxamount);} // burn amount if(fees > 0) {super._transfer(from, address(this), fees);} return amount - fees - burntaxamount; } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "transfer from the zero address"); require(to != address(0), "transfer to the zero address"); if(amount == 0) {return;} // preparation of launch LP and token dispatch allowed even if trading not allowed if(!tradingEnabled) {require(_isWhitelisted[from], "Trading not allowed yet");} if(!_isWhitelisted[to]){if(to != address(this) && to != DeadWallet){require((balanceOf(to) + amount) <= maxWalletAmount, "wallet amount exceed maxWalletAmount");}} if(automatedMarketMakerPairs[to] && (!_isExcludedFromMaxTx[from]) && (!_isExcludedFromMaxTx[to])){require(amount <= maxSellTransactionAmount, "Sell transfer amount exceeds the maxSellTransactionAmount.");} if (DelayOption && !_isWhitelisted[from] && automatedMarketMakerPairs[to]) { require( LastTimeSell[from] + MinTime <= block.number, "Trying to sell too often!"); LastTimeSell[from] = block.number; } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if(contractTokenBalance >= MaxTokenToSwap){contractTokenBalance = MaxTokenToSwap;} // Can Swap on sell only if (swapAndLiquifyEnabled && canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isWhitelisted[from] && !_isWhitelisted[to] && (_SellFee - _BurnFee) != 0 ) { swapping = true; swapAndLiquify(contractTokenBalance); swapping = false; } uint256 amountToSend = amount; if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {amountToSend = takeFee(from, to, amount);} if(to == DeadWallet) {super._burn(from,amountToSend);} // if destination address is Deadwallet, burn amount else if(to != DeadWallet) {super._transfer(from, to, amountToSend);} } function swapAndLiquify(uint256 contractTokenBalance) private { uint256 NoRewardFees = _SellFee - _BurnFee; uint256 initialBalance = address(this).balance; uint256 half = contractTokenBalance * _LiquidityFee / 2 / (_SellFee - _BurnFee); uint256 swapTokens = (contractTokenBalance * NoRewardFees / (_SellFee - _BurnFee)) - half; swapTokensForETH(swapTokens); uint256 ETHBalance = address(this).balance - initialBalance; uint256 liquidityETHPortion = (ETHBalance * _LiquidityFee / 2) / (NoRewardFees - (_LiquidityFee / 2)); marketingETHPortion += (ETHBalance * _MarketingFee) / (NoRewardFees - (_LiquidityFee / 2)); if(_LiquidityFee != 0) { addLiquidity(half, liquidityETHPortion); emit SwapAndLiquify(half, liquidityETHPortion, half); } if(marketingETHPortion != 0) { MarketingWallet.transfer(marketingETHPortion); marketingETHPortion = 0; } } function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private { uint256 Allowance = allowance(address(this), address(DEXV2Router)) + tokenAmount; _approve(address(this), address(DEXV2Router), Allowance); DEXV2Router.addLiquidityETH{value: ETHAmount}(address(this), tokenAmount, 0, 0, address(this), block.timestamp); } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = DEXV2Router.WETH(); _approve(address(this), address(DEXV2Router), tokenAmount); DEXV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp); } function setUnlockTime(uint256 newUnlockTime) private { // require new unlock time to be longer than old one require(newUnlockTime > _liquidityUnlockTime); _liquidityUnlockTime = newUnlockTime; } function JeetsSellTax (uint256 amount) internal view returns (uint256) { uint256 value = balanceOf(DEXV2Pair); uint256 vMin = value * VminDiv / 100; uint256 vMax = value * VmaxDiv / 100; if (amount <= vMin) return amount = 0; if (amount > vMax) return amount * MaxJeetsFee / 100; return (((amount-vMin) * MaxJeetsFee * amount) / (vMax-vMin)) / 100; } } contract HYPERFLXTOKEN is Main { constructor() Main( "HYPERFLXTOKEN", // Name "HYFX", // Symbol 18, // Decimal 0x8e210528fCF50e538bfeD58af32c21384a7240ab, // Marketing address 250_000_000_000, // Initial Supply 250_000_000_000, // Dispa&tch Supply 10 // Max Tax ) {} }
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":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"extendedLockTime","type":"uint256"}],"name":"ExtendLiquidityLock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Maxdiv","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Mindiv","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Jeetsfee","type":"uint8"}],"name":"JeetTaxChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LPReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"trading","type":"bool"}],"name":"Launched","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"delay","type":"bool"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"Sell","type":"uint256"}],"name":"NewFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minswap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapmax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxtax","type":"uint256"}],"name":"NewLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"NewMarketingWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"NewManager","type":"address"}],"name":"NewSafeManager","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ETHReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateDEXV2Router","type":"event"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"Airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DEXV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newdays","type":"uint256"},{"internalType":"uint256","name":"newhours","type":"uint256"}],"name":"ExtendLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"GetContractAddresses","outputs":[{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"Dead","type":"address"},{"internalType":"address","name":"LP","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetContractBalance","outputs":[{"internalType":"uint256","name":"marketingETH","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetDelay","outputs":[{"internalType":"bool","name":"delayoption","type":"bool"},{"internalType":"uint256","name":"mintime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"GetExclusions","outputs":[{"internalType":"bool","name":"MaxTx","type":"bool"},{"internalType":"bool","name":"Fees","type":"bool"},{"internalType":"bool","name":"Whitelist","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetFees","outputs":[{"internalType":"uint256","name":"Buy","type":"uint256"},{"internalType":"uint256","name":"Sell","type":"uint256"},{"internalType":"uint256","name":"Wallet2Wallet","type":"uint256"},{"internalType":"uint256","name":"Liquidity","type":"uint256"},{"internalType":"uint256","name":"Marketing","type":"uint256"},{"internalType":"uint256","name":"Burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetJeetsTaxInfo","outputs":[{"internalType":"bool","name":"jeetsfee","type":"bool"},{"internalType":"bool","name":"jeetsburn","type":"bool"},{"internalType":"uint256","name":"vmaxdiv","type":"uint256"},{"internalType":"uint256","name":"vmindiv","type":"uint256"},{"internalType":"uint256","name":"maxjeetsfee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetLimits","outputs":[{"internalType":"uint256","name":"SellMax","type":"uint256"},{"internalType":"uint256","name":"WalletMax","type":"uint256"},{"internalType":"uint256","name":"TaxMax","type":"uint256"},{"internalType":"uint256","name":"MinSwap","type":"uint256"},{"internalType":"uint256","name":"SwapMax","type":"uint256"},{"internalType":"bool","name":"SwapLiq","type":"bool"},{"internalType":"bool","name":"ENtrading","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetSupplyInfo","outputs":[{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"uint256","name":"circulatingSupply","type":"uint256"},{"internalType":"uint256","name":"burntTokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"Blocks","type":"uint256"},{"internalType":"uint256","name":"lockTimeInDays","type":"uint256"},{"internalType":"uint256","name":"lockTimeInHours","type":"uint256"}],"name":"Launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ReleaseLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"delayoption","type":"bool"},{"internalType":"uint256","name":"mintime","type":"uint256"}],"name":"SetDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"Fee","type":"bool"},{"internalType":"bool","name":"MaxTx","type":"bool"},{"internalType":"bool","name":"WhiteList","type":"bool"}],"name":"SetExclusions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"jeetsfee","type":"bool"},{"internalType":"bool","name":"jeetsburn","type":"bool"},{"internalType":"uint8","name":"vmaxdiv","type":"uint8"},{"internalType":"uint8","name":"vmindiv","type":"uint8"},{"internalType":"uint8","name":"maxjeetsfee","type":"uint8"}],"name":"SetJeetsTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWallet","type":"uint256"},{"internalType":"uint256","name":"_maxSell","type":"uint256"},{"internalType":"uint256","name":"_minswap","type":"uint256"},{"internalType":"uint256","name":"_swapmax","type":"uint256"},{"internalType":"uint256","name":"MaxTax","type":"uint256"},{"internalType":"bool","name":"_swapAndLiquifyEnabled","type":"bool"}],"name":"SetLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"wallet2walletfee","type":"uint256"},{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newBurnTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInWei","type":"uint256"}],"name":"buyBackBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getLiquidityUnlockTime","outputs":[{"internalType":"uint256","name":"Days","type":"uint256"},{"internalType":"uint256","name":"Hours","type":"uint256"},{"internalType":"uint256","name":"Minutes","type":"uint256"},{"internalType":"uint256","name":"Seconds","type":"uint256"}],"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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"safeManager","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newMarketingWallet","type":"address"}],"name":"setProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_safeManager","type":"address"}],"name":"setSafeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","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"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateDEXV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052600a805464ffffffffff60a81b1916630101000160a81b1790556000600b8190556018819055601a819055601b819055601c8190556002601d819055601e829055601f5560205560218054621e0f0162ffffff199091161790553480156200006b57600080fd5b506040518060400160405280600d81526020016c242ca822a923262c2a27a5a2a760991b81525060405180604001604052806004815260200163090b28cb60e31b8152506012738e210528fcf50e538bfed58af32c21384a7240ab643a3529440080600a86868160039081620000e2919062000892565b506004620000f1828262000892565b5050506000620001066200061460201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b03199081163317909155600880546001600160a01b0387169083161790556009805490911661dead1790556015805460ff871660ff199091168117909155620001aa90600a62000a73565b620001b6908462000a8b565b601655601554620001cc9060ff16600a62000a73565b620001d8908362000a8b565b6017556064620001ea84600162000a8b565b620001f6919062000aa5565b600f5560646200020884600462000a8b565b62000214919062000aa5565b600c55606462000225848262000a8b565b62000231919062000aa5565b600d556103e86200024484600162000a8b565b62000250919062000aa5565b600e55601554620002669060ff16600a62000a73565b600f5462000275919062000a8b565b6011556015546200028b9060ff16600a62000a73565b600c546200029a919062000a8b565b601255601554620002b09060ff16600a62000a73565b600d54620002bf919062000a8b565b601355601554620002d59060ff16600a62000a73565b600e54620002e4919062000a8b565b60145560ff81166010556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91600091839163c45a01559160048281019260209291908290030181865afa15801562000344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036a919062000ac8565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003de919062000ac8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200042c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000452919062000ac8565b600780546001600160a01b0319166001600160a01b0385811691909117909155811660805290506200048681600162000618565b601c54601d54601b546200049b919062000af3565b620004a7919062000af3565b60209081553060008181526022835260408082208054600160ff199182168117909255600980546001600160a01b03908116865284862080548416851790556008805482168752858720805485168617905533808852868820805486168717905588885260248a528688208054861687179055835483168852868820805486168717905581548316885286882080548616871790558088528688208054861687179055978752602390985284862080548416851790559054811685528385208054831684179055955490951683528183208054861682179055928252812080549093169091179091556017549003620005b457620005ae306016546200070860201b60201c565b62000605565b60165460175403620005d457620005ae336017546200070860201b60201c565b620005e8336017546200070860201b60201c565b6200060530601754601654620005ff919062000b09565b62000708565b50505050505050505062000b1f565b3390565b6001600160a01b03821660009081526026602052604090205481151560ff909116151503620006b45760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c7565000000000000000060648201526084015b60405180910390fd5b6001600160a01b038216600081815260266020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038216620007605760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620006ab565b806002600082825462000774919062000af3565b90915550506001600160a01b03821660009081526020819052604081208054839290620007a390849062000af3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200081857607f821691505b6020821081036200083957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200088d57600081815260208120601f850160051c81016020861015620008685750805b601f850160051c820191505b81811015620008895782815560010162000874565b5050505b505050565b81516001600160401b03811115620008ae57620008ae620007ed565b620008c681620008bf845462000803565b846200083f565b602080601f831160018114620008fe5760008415620008e55750858301515b600019600386901b1c1916600185901b17855562000889565b600085815260208120601f198616915b828110156200092f578886015182559484019460019091019084016200090e565b50858210156200094e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620009b55781600019048211156200099957620009996200095e565b80851615620009a757918102915b93841c939080029062000979565b509250929050565b600082620009ce5750600162000a6d565b81620009dd5750600062000a6d565b8160018114620009f6576002811462000a015762000a21565b600191505062000a6d565b60ff84111562000a155762000a156200095e565b50506001821b62000a6d565b5060208310610133831016604e8410600b841016171562000a46575081810a62000a6d565b62000a52838362000974565b806000190482111562000a695762000a696200095e565b0290505b92915050565b600062000a8460ff841683620009bd565b9392505050565b808202811582820484141762000a6d5762000a6d6200095e565b60008262000ac357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121562000adb57600080fd5b81516001600160a01b038116811462000a8457600080fd5b8082018082111562000a6d5762000a6d6200095e565b8181038181111562000a6d5762000a6d6200095e565b60805161411f62000b50600039600081816107050152818161123201528181611690015261376b015261411f6000f3fe6080604052600436106102755760003560e01c806390b89ea31161014f578063cc4e0f50116100c1578063eb2ea5031161007a578063eb2ea50314610917578063f14210a61461094d578063f2fde38b1461096d578063f3fef3a31461098d578063f6d0bf2f146109ad578063faf90612146109c257600080fd5b8063cc4e0f50146107fb578063d28d885214610847578063d935b6741461085c578063dbc2d1df14610891578063dd62ed3e146108b1578063e75114ed146108f757600080fd5b8063a457c2d711610113578063a457c2d714610736578063a9059cbb14610756578063b09f126614610776578063b62496f51461078b578063baa88ea9146107bb578063c558ae6b146107db57600080fd5b806390b89ea31461066257806391b32b321461068257806395d89b41146106a25780639a7a23d6146106b7578063a18715e0146106d757600080fd5b806346811ed1116101e857806370a08231116101ac57806370a08231146105605780637115d00e14610596578063715018a6146105ab57806386867216146105c05780638a780447146106245780638da5cb5b1461064457600080fd5b806346811ed1146104a75780634ada218b146104df5780634fea2c7a14610500578063547b9ed71461052057806357c904411461054057600080fd5b806318160ddd1161023a57806318160ddd146103e45780631dc3d6a71461040357806323b872dd14610425578063313ce5671461044557806339509351146104675780633fd06a2f1461048757600080fd5b80628a2141146102815780630330583a146102b657806303cf071b1461032957806306fdde0314610392578063095ea7b3146103b457600080fd5b3661027c57005b600080fd5b34801561028d57600080fd5b506102966109e2565b604080519384526020840192909252908201526060015b60405180910390f35b3480156102c257600080fd5b5061030a6102d136600461388b565b6001600160a01b03166000908152602460209081526040808320546022835281842054602390935292205460ff92831693918316921690565b60408051931515845291151560208401521515908201526060016102ad565b34801561033557600080fd5b50600c54600d54601054600e54600f54600a54604080519687526020870195909552938501929092526060840152608083015260ff600160a81b82048116151560a0840152600160b01b90910416151560c082015260e0016102ad565b34801561039e57600080fd5b506103a7610a12565b6040516102ad91906138af565b3480156103c057600080fd5b506103d46103cf3660046138fd565b610aa4565b60405190151581526020016102ad565b3480156103f057600080fd5b506002545b6040519081526020016102ad565b34801561040f57600080fd5b5061042361041e36600461394d565b610abb565b005b34801561043157600080fd5b506103d46104403660046139b6565b610cd2565b34801561045157600080fd5b5060155460405160ff90911681526020016102ad565b34801561047357600080fd5b506103d46104823660046138fd565b610d7c565b34801561049357600080fd5b506104236104a23660046139f7565b610db8565b3480156104b357600080fd5b506007546104c7906001600160a01b031681565b6040516001600160a01b0390911681526020016102ad565b3480156104eb57600080fd5b50600a546103d490600160b01b900460ff1681565b34801561050c57600080fd5b5061042361051b366004613a15565b610e94565b34801561052c57600080fd5b5061042361053b36600461388b565b6110bd565b34801561054c57600080fd5b506006546104c7906001600160a01b031681565b34801561056c57600080fd5b506103f561057b36600461388b565b6001600160a01b031660009081526020819052604090205490565b3480156105a257600080fd5b506104236111ae565b3480156105b757600080fd5b50610423611358565b3480156105cc57600080fd5b50600a546021546040805160ff600160b81b8504811615158252600160c01b9094048416151560208201526101008304841691810191909152828216606082015262010000909104909116608082015260a0016102ad565b34801561063057600080fd5b5061042361063f36600461388b565b6113cc565b34801561065057600080fd5b506005546001600160a01b03166104c7565b34801561066e57600080fd5b5061042361067d366004613a2e565b6114dc565b34801561068e57600080fd5b5061042361069d36600461388b565b61158b565b3480156106ae57600080fd5b506103a7611655565b3480156106c357600080fd5b506104236106d2366004613a50565b611664565b3480156106e357600080fd5b50600854600954604080516001600160a01b03938416815291831660208301527f0000000000000000000000000000000000000000000000000000000000000000909216918101919091526060016102ad565b34801561074257600080fd5b506103d46107513660046138fd565b611745565b34801561076257600080fd5b506103d46107713660046138fd565b6117de565b34801561078257600080fd5b506103a76117eb565b34801561079757600080fd5b506103d46107a636600461388b565b60266020526000908152604090205460ff1681565b3480156107c757600080fd5b506104236107d6366004613a89565b611879565b3480156107e757600080fd5b506104236107f6366004613b9a565b611a9e565b34801561080757600080fd5b50601f54602054601e54601b54601d54601c54604080519687526020870195909552938501929092526060840152608083015260a082015260c0016102ad565b34801561085357600080fd5b506103a7611c17565b34801561086857600080fd5b50610871611c24565b6040805194855260208501939093529183015260608201526080016102ad565b34801561089d57600080fd5b506104236108ac366004613c5c565b611d39565b3480156108bd57600080fd5b506103f56108cc366004613cb1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561090357600080fd5b50610423610912366004613cdf565b6121fc565b34801561092357600080fd5b50600a54601a54600160c81b90910460ff16906040805192151583526020830191909152016102ad565b34801561095957600080fd5b50610423610968366004613a15565b612398565b34801561097957600080fd5b5061042361098836600461388b565b6123e9565b34801561099957600080fd5b506104236109a83660046138fd565b6124d4565b3480156109b957600080fd5b50600b546103f5565b3480156109ce57600080fd5b506104236109dd366004613d0b565b612562565b6000806000806109f160025490565b9050600081601654610a039190613d7d565b60165496929550935090915050565b606060038054610a2190613d90565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4d90613d90565b8015610a9a5780601f10610a6f57610100808354040283529160200191610a9a565b820191906000526020600020905b815481529060010190602001808311610a7d57829003601f168201915b5050505050905090565b6000610ab1338484612678565b5060015b92915050565b6006546001600160a01b03163314610ad257600080fd5b600a8360ff1610158015610aea575060288360ff1611155b610b495760405162461bcd60e51b815260206004820152602560248201527f63616e6e6f742073657420566d6178206f757473696465203130252f34302520604482015264726174696f60d81b60648201526084015b60405180910390fd5b60018260ff1610158015610b615750600a8260ff1611155b610bb95760405162461bcd60e51b8152602060048201526024808201527f63616e6e6f742073657420566d696e206f7574736964652031252f31302520726044820152636174696f60e01b6064820152608401610b40565b60018160ff1610158015610bd1575060148160ff1611155b610c2e5760405162461bcd60e51b815260206004820152602860248201527f6d6178206a6565747320666565206d757374206265206265747777656e20312560448201526720616e642032302560c01b6064820152608401610b40565b600a805461ffff60b81b1916600160b81b8715150260ff60c01b191617600160c01b861515021790556021805460ff84811662ffffff1990921661010087831690810262ff00ff19169190911783176201000092861692830217909355604080519384526020840192909252908201527f4ae69fede5dd05c0c469a48d2325c79d8d1e733147074ee0c2efc8724ad031de9060600160405180910390a15050505050565b6000610cdf84848461279d565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610d645760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b40565b610d718533858403612678565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ab1918590610db3908690613dca565b612678565b6005546001600160a01b03163314610de25760405162461bcd60e51b8152600401610b4090613ddd565b6121c0811115610e345760405162461bcd60e51b815260206004820181905260248201527f4d696e54696d652043616e2774206265206d6f7265207468616e2061204461796044820152606401610b40565b601a819055600a805460ff60c81b1916600160c81b8415159081029190911790915560408051918252602082018390527fafc766bddc54b6e29c3b0e1a59ea627b3c65f51666c2afcd71a76683543703f891015b60405180910390a15050565b678ac7230489e80000811115610f225760405162461bcd60e51b815260206004820152604760248201527f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060448201527f612073696e676c652062757920746f207265647563652073616e64776963682060648201526661747461636b7360c81b608482015260a401610b40565b6006546001600160a01b03163314610f3957600080fd5b6040805160028082526060820183526000926020830190803683375050600754604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc79190613e12565b81600081518110610fda57610fda613e2f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061100e5761100e613e2f565b6001600160a01b03928316602091820292909201015260075460095460405163b6f9de9560e01b81529183169263b6f9de9592869261105a926000928892909116904290600401613e89565b6000604051808303818588803b15801561107357600080fd5b505af1158015611087573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051610e8891815260200190565b6005546001600160a01b031633146110e75760405162461bcd60e51b8152600401610b4090613ddd565b6007546001600160a01b03908116908216036111515760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610b40565b6007546040516001600160a01b03918216918316907fc9bec9b1051699cf0e6e2eeca8d44fd88acc5ab64a9c1ed46d75f66b345fad3590600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111d85760405162461bcd60e51b8152600401610b4090613ddd565b60185442101561121d5760405162461bcd60e51b815260206004820152601060248201526f139bdd081e595d081d5b9b1bd8dad95960821b6044820152606401610b40565b6040516370a0823160e01b81523060048201527f0000000000000000000000000000000000000000000000000000000000000000906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112aa9190613ebe565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190613ed7565b5060405181815233907f52d77d535cb096c779f49b09abb8baa56624965f858e472b7b9d72ad28ad08f99060200160405180910390a25050565b6005546001600160a01b031633146113825760405162461bcd60e51b8152600401610b4090613ddd565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146113f65760405162461bcd60e51b8152600401610b4090613ddd565b6008546001600160a01b038281169116146114a557600880546001600160a01b039081166000908152602260208181526040808420805460ff19908116909155865486168552602480845282862080548316905587548716865260238085528387208054841690559689168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b6040516001600160a01b038216907f1ffd90b838134c6cfb56aa815cc97adc14b6cf358dc77a5ed8d8d826981f84bd90600090a250565b6005546001600160a01b031633146115065760405162461bcd60e51b8152600401610b4090613ddd565b600061151482610e10613ef4565b6115218462015180613ef4565b61152b9190613dca565b905042601854101561153c57426018555b6115526018548261154d9190613dca565b612d20565b6040518181527fe9da15d4cb5bea133d9613a866c909df5594489b91a3f780d43720d560b3c94c906020015b60405180910390a1505050565b6005546001600160a01b031633146115b55760405162461bcd60e51b8152600401610b4090613ddd565b6001600160a01b03811661160b5760405162461bcd60e51b815260206004820152601c60248201527f526563656976657220697320746865207a65726f2061646472657373000000006044820152606401610b40565b600680546001600160a01b0319166001600160a01b0383169081179091556040517f2eaea27d5dfd1c1f7852a40be37cc6beac673308a2ae807877cfe7c7c0e177da90600090a250565b606060048054610a2190613d90565b6005546001600160a01b0316331461168e5760405162461bcd60e51b8152600401610b4090613ddd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603611737576040805162461bcd60e51b81526020600482015260248101919091527f546865204d61726b657420706169722063616e6e6f742062652072656d6f766560448201527f642066726f6d206175746f6d617465644d61726b65744d616b657250616972736064820152608401610b40565b6117418282612d33565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117c75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b40565b6117d43385858403612678565b5060019392505050565b6000610ab133848461279d565b600480546117f890613d90565b80601f016020809104026020016040519081016040528092919081815260200182805461182490613d90565b80156118715780601f1061184657610100808354040283529160200191611871565b820191906000526020600020905b81548152906001019060200180831161185457829003601f168201915b505050505081565b6005546001600160a01b031633146118a35760405162461bcd60e51b8152600401610b4090613ddd565b60105485111580156118b55750818510155b6119275760405162461bcd60e51b815260206004820152603a60248201527f546f74616c205461782063616e277420657863656564204d617854617865732e60448201527f206f72206265206c6f776572207468616e206275726e207461780000000000006064820152608401610b40565b6010548190836119378684613dca565b6119419190613dca565b111561198f5760405162461bcd60e51b815260206004820181905260248201527f546f74616c205461782063616e277420657863656564204d617854617865732e6044820152606401610b40565b8415611a2a57601c5485101580156119a957506010548511155b611a2a5760405162461bcd60e51b815260206004820152604660248201527f57616c6c657420322057616c6c657420546178206d757374206265207570646160448201527f74656420746f206265747765656e206275726e2074617820616e642032352070606482015265195c98d95b9d60d21b608482015260a401610b40565b601f869055601e859055601c839055601b849055601d82905582611a4e8386613dca565b611a589190613dca565b602081815560408051898152918201929092527f0aaa05fba10caab20c7dfcd757223e489dbd2313a5e1add54bca74aceaf17819910160405180910390a1505050505050565b6005546001600160a01b03163314611ac85760405162461bcd60e51b8152600401610b4090613ddd565b8051825114611b195760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610b40565b610258825110611b8a5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203630302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610b40565b60005b8251811015611c12576000838281518110611baa57611baa613e2f565b6020908102919091010151601554909150600090611bcc9060ff16600a613fef565b848481518110611bde57611bde613e2f565b6020026020010151611bf09190613ef4565b9050611bfd338383612e1d565b50508080611c0a90613ffe565b915050611b8d565b505050565b600380546117f890613d90565b600080600080601854421015611d26576201518042601854611c469190613d7d565b611c509190614017565b9350610e10611c628562015180613ef4565b42601854611c709190613d7d565b611c7a9190613d7d565b611c849190614017565b9250603c611c9484610e10613ef4565b611ca18662015180613ef4565b42601854611caf9190613d7d565b611cb99190613d7d565b611cc39190613d7d565b611ccd9190614017565b9150611cda82603c613ef4565b611ce684610e10613ef4565b611cf38662015180613ef4565b42601854611d019190613d7d565b611d0b9190613d7d565b611d159190613d7d565b611d1f9190613d7d565b9050611d33565b5060009250829150819050805b90919293565b6005546001600160a01b03163314611d635760405162461bcd60e51b8152600401610b4090613ddd565b6000611d6e60025490565b9050611d7b606482614017565b601554611d8c9060ff16600a613fef565b611d969089613ef4565b10158015611dbf57506015548190611db29060ff16600a613fef565b611dbc9089613ef4565b11155b611e315760405162461bcd60e51b815260206004820152603b60248201527f4d617757616c6c6574206d757374206265206265747765656e20746f74616c7360448201527f7570706c7920616e64203125206f6620746f74616c737570706c7900000000006064820152608401610b40565b611e3d6103e882614017565b601554611e4e9060ff16600a613fef565b611e589088613ef4565b10158015611e8157506015548190611e749060ff16600a613fef565b611e7e9088613ef4565b11155b611ef35760405162461bcd60e51b815260206004820152603b60248201527f4d617753656c6c206d757374206265206265747765656e20746f74616c73757060448201527f706c7920616e6420302e3125206f6620746f74616c737570706c7900000000006064820152608401610b40565b611eff61271082614017565b601554611f109060ff16600a613fef565b611f1a9087613ef4565b10158015611f325750611f2e600285614017565b8511155b611fa45760405162461bcd60e51b815260206004820152603a60248201527f4d696e53776170206d757374206265206265747765656e206d6178737761702f60448201527f3220616e6420302e303125206f6620746f74616c737570706c790000000000006064820152608401610b40565b60018310158015611fb6575060198311155b61201e5760405162461bcd60e51b815260206004820152603360248201527f4d617820546178206d757374206265207570646174656420746f206265747765604482015272195b880c48185b99080c8d481c195c98d95b9d606a1b6064820152608401610b40565b612029856002613ef4565b8410158015612053575060155481906120469060ff16600a613fef565b6120509086613ef4565b11155b6120bb5760405162461bcd60e51b815260206004820152603360248201527f4d617853776170206d757374206265206265747765656e20746f74616c73757060448201527238363c9030b7321029bbb0b826b4b7103c101960691b6064820152608401610b40565b600f8490556015546120d19060ff16600a613fef565b600f546120de9190613ef4565b601155600d8790556015546120f79060ff16600a613fef565b600d546121049190613ef4565b601355600c86905560155461211d9060ff16600a613fef565b600c5461212a9190613ef4565b601255600e8590556015546121439060ff16600a613fef565b600e546121509190613ef4565b6014556010839055600a805460ff60a81b1916600160a81b84151502179055604080518881526020810188905290810186905260608101859052608081018490527fb356c6a4fb17f6c4db09ad47af933af5908e354d88966ab5b64c9e2ed04ba0d69060a00160405180910390a160405182151581527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150505050505050565b6005546001600160a01b031633146122265760405162461bcd60e51b8152600401610b4090613ddd565b600a54600160b01b900460ff16156122775760405162461bcd60e51b815260206004820152601460248201527363616e206f6e6c79206c61756e6368206f6e636560601b6044820152606401610b40565b60288311156122bc5760405162461bcd60e51b81526020600482015260116024820152702737ba1036b7b932903a3430b7101936b760791b6044820152606401610b40565b476000036122e957600a805460ff60b01b1916600160b01b1790556122e18343613dca565b601955612359565b60006122f782610e10613ef4565b6123048462015180613ef4565b61230e9190613dca565b905061231a8142613dca565b601855306000908152602081905260409020546123379047612fad565b600a805460ff60b01b1916600160b01b1790556123548443613dca565b601955505b600a54604051600160b01b90910460ff16151581527f329b2d9780190712e4dce1df3d73ad5288c4ea1718736d9cfda28915f59043929060200161157e565b6006546001600160a01b031633146123af57600080fd5b6006546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611741573d6000803e3d6000fd5b6005546001600160a01b031633146124135760405162461bcd60e51b8152600401610b4090613ddd565b6001600160a01b0381166124785760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b40565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633146124eb57600080fd5b60065460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af115801561253e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c129190613ed7565b6005546001600160a01b0316331461258c5760405162461bcd60e51b8152600401610b4090613ddd565b6001600160a01b03841660009081526022602052604090205483151560ff9091161515036125f25760405162461bcd60e51b81526020600482015260136024820152721858d8dbdd5b9d08185b1c9958591e481cd95d606a1b6044820152606401610b40565b6001600160a01b0384166000818152602260209081526040808320805460ff1990811689151590811790925560248452828520805482168915151790556023845293829020805490941686151517909355519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a250505050565b6001600160a01b0383166126da5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b40565b6001600160a01b03821661273b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b40565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166127f35760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610b40565b6001600160a01b0382166128495760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610b40565b8060000361285657505050565b600a54600160b01b900460ff166128cf576001600160a01b03831660009081526023602052604090205460ff166128cf5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420616c6c6f776564207965740000000000000000006044820152606401610b40565b6001600160a01b03821660009081526023602052604090205460ff166129a2576001600160a01b038216301480159061291657506009546001600160a01b03838116911614155b156129a2576013548161293e846001600160a01b031660009081526020819052604090205490565b6129489190613dca565b11156129a25760405162461bcd60e51b8152602060048201526024808201527f77616c6c657420616d6f756e7420657863656564206d617857616c6c6574416d6044820152631bdd5b9d60e21b6064820152608401610b40565b6001600160a01b03821660009081526026602052604090205460ff1680156129e357506001600160a01b03831660009081526024602052604090205460ff16155b8015612a0857506001600160a01b03821660009081526024602052604090205460ff16155b15612a8557601254811115612a855760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610b40565b600a54600160c81b900460ff168015612ab757506001600160a01b03831660009081526023602052604090205460ff16155b8015612adb57506001600160a01b03821660009081526026602052604090205460ff165b15612b7157601a546001600160a01b0384166000908152602560205260409020544391612b0791613dca565b1115612b555760405162461bcd60e51b815260206004820152601960248201527f547279696e6720746f2073656c6c20746f6f206f6674656e21000000000000006044820152606401610b40565b6001600160a01b03831660009081526025602052604090204390555b3060009081526020819052604090205460145460115490821015908210612b985760115491505b600a54600160a81b900460ff168015612bae5750805b8015612bc45750600a54600160a01b900460ff16155b8015612be957506001600160a01b03851660009081526026602052604090205460ff16155b8015612c0e57506001600160a01b03851660009081526023602052604090205460ff16155b8015612c3357506001600160a01b03841660009081526023602052604090205460ff16155b8015612c4d5750601c54602054612c4a9190613d7d565b15155b15612c7c57600a805460ff60a01b1916600160a01b179055612c6e8261308e565b600a805460ff60a01b191690555b6001600160a01b038516600090815260226020526040902054839060ff16158015612cc057506001600160a01b03851660009081526022602052604090205460ff16155b15612cd357612cd0868686613256565b90505b6009546001600160a01b0390811690861603612cf857612cf38682613516565b612d18565b6009546001600160a01b03868116911614612d1857612d18868683612e1d565b505050505050565b6018548111612d2e57600080fd5b601855565b6001600160a01b03821660009081526026602052604090205481151560ff909116151503612dc95760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610b40565b6001600160a01b038216600081815260266020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316612e815760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b40565b6001600160a01b038216612ee35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b40565b6001600160a01b03831660009081526020819052604090205481811015612f1c5760405162461bcd60e51b8152600401610b4090614039565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612f53908490613dca565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f9f91815260200190565b60405180910390a350505050565b6007543060009081526001602090815260408083206001600160a01b03909416835292905290812054612fe1908490613dca565b600754909150612ffc9030906001600160a01b031683612678565b60075460405163f305d71960e01b8152306004820181905260248201869052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990849060c40160606040518083038185885af1158015613069573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d18919061407f565b6000601c546020546130a09190613d7d565b601c5460205491925047916000916130b791613d7d565b6002601b54866130c79190613ef4565b6130d19190614017565b6130db9190614017565b9050600081601c546020546130f09190613d7d565b6130fa8688613ef4565b6131049190614017565b61310e9190613d7d565b905061311981613617565b60006131258447613d7d565b905060006002601b546131389190614017565b6131429087613d7d565b6002601b54846131529190613ef4565b61315c9190614017565b6131669190614017565b90506002601b546131779190614017565b6131819087613d7d565b601d5461318e9084613ef4565b6131989190614017565b600b60008282546131a99190613dca565b9091555050601b5415613202576131c08482612fad565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b600b541561324d57600854600b546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015613246573d6000803e3d6000fd5b506000600b555b50505050505050565b6001600160a01b03831660009081526026602052604081205481908190819060ff161561335557600a54600160b01b900460ff168015613297575060195443105b80156132bc57506001600160a01b03861660009081526023602052604090205460ff16155b80156132e057506001600160a01b03871660009081526026602052604090205460ff165b1561331c5760646132f2866063613ef4565b6132fc9190614017565b9250606461330b866063613ef4565b6133159190614017565b91506134c9565b601f5415613350576064601f54866133349190613ef4565b61333e9190614017565b92506064601c548661330b9190613ef4565b6134c9565b6001600160a01b03861660009081526026602052604090205460ff161561343c57600a54600160b81b900460ff1680156133a857506001600160a01b03871660009081526023602052604090205460ff16155b156133ea576133b685613769565b905080156133ea57600a54600160c01b900460ff16156133dd576133da8183613dca565b91505b6133e78184613dca565b92505b60205415613350576064602054866134029190613ef4565b61340c9190614017565b6134169084613dca565b92506064601c54866134289190613ef4565b6134329190614017565b6133159083613dca565b6001600160a01b03871660009081526026602052604090205460ff1615801561347e57506001600160a01b03861660009081526026602052604090205460ff16155b801561348b5750601e5415155b156134c9576064601e54866134a09190613ef4565b6134aa9190614017565b92506064601c54866134bc9190613ef4565b6134c69190614017565b91505b6134d38284613d7d565b925081156134e5576134e58783613516565b82156134f6576134f6873085612e1d565b816135018487613d7d565b61350b9190613d7d565b979650505050505050565b6001600160a01b03821661356c5760405162461bcd60e51b815260206004820152601a60248201527f6275726e2066726f6d20746865207a65726f20616464726573730000000000006044820152606401610b40565b6001600160a01b038216600090815260208190526040902054818110156135a55760405162461bcd60e51b8152600401610b4090614039565b6001600160a01b03831660009081526020819052604081208383039055600280548492906135d4908490613d7d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612790565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061364c5761364c613e2f565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156136a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c99190613e12565b816001815181106136dc576136dc613e2f565b6001600160a01b0392831660209182029290920101526007546137029130911684612678565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac9479061373b9085906000908690309042906004016140ad565b600060405180830381600087803b15801561375557600080fd5b505af1158015612d18573d6000803e3d6000fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660009081526020819052604081205460215482906064906137b79060ff1684613ef4565b6137c19190614017565b6021549091506000906064906137df90610100900460ff1685613ef4565b6137e99190614017565b90508185116137fd57506000949350505050565b808511156138315760215460649061381e9062010000900460ff1687613ef4565b6138289190614017565b95945050505050565b606461383d8383613d7d565b602154879062010000900460ff166138558683613d7d565b61385f9190613ef4565b6138699190613ef4565b61381e9190614017565b6001600160a01b038116811461388857600080fd5b50565b60006020828403121561389d57600080fd5b81356138a881613873565b9392505050565b600060208083528351808285015260005b818110156138dc578581018301518582016040015282016138c0565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561391057600080fd5b823561391b81613873565b946020939093013593505050565b801515811461388857600080fd5b803560ff8116811461394857600080fd5b919050565b600080600080600060a0868803121561396557600080fd5b853561397081613929565b9450602086013561398081613929565b935061398e60408701613937565b925061399c60608701613937565b91506139aa60808701613937565b90509295509295909350565b6000806000606084860312156139cb57600080fd5b83356139d681613873565b925060208401356139e681613873565b929592945050506040919091013590565b60008060408385031215613a0a57600080fd5b823561391b81613929565b600060208284031215613a2757600080fd5b5035919050565b60008060408385031215613a4157600080fd5b50508035926020909101359150565b60008060408385031215613a6357600080fd5b8235613a6e81613873565b91506020830135613a7e81613929565b809150509250929050565b600080600080600060a08688031215613aa157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613b0357613b03613ac4565b604052919050565b600067ffffffffffffffff821115613b2557613b25613ac4565b5060051b60200190565b600082601f830112613b4057600080fd5b81356020613b55613b5083613b0b565b613ada565b82815260059290921b84018101918181019086841115613b7457600080fd5b8286015b84811015613b8f5780358352918301918301613b78565b509695505050505050565b60008060408385031215613bad57600080fd5b823567ffffffffffffffff80821115613bc557600080fd5b818501915085601f830112613bd957600080fd5b81356020613be9613b5083613b0b565b82815260059290921b84018101918181019089841115613c0857600080fd5b948201945b83861015613c2f578535613c2081613873565b82529482019490820190613c0d565b96505086013592505080821115613c4557600080fd5b50613c5285828601613b2f565b9150509250929050565b60008060008060008060c08789031215613c7557600080fd5b863595506020870135945060408701359350606087013592506080870135915060a0870135613ca381613929565b809150509295509295509295565b60008060408385031215613cc457600080fd5b8235613ccf81613873565b91506020830135613a7e81613873565b600080600060608486031215613cf457600080fd5b505081359360208301359350604090920135919050565b60008060008060808587031215613d2157600080fd5b8435613d2c81613873565b93506020850135613d3c81613929565b92506040850135613d4c81613929565b91506060850135613d5c81613929565b939692955090935050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610ab557610ab5613d67565b600181811c90821680613da457607f821691505b602082108103613dc457634e487b7160e01b600052602260045260246000fd5b50919050565b80820180821115610ab557610ab5613d67565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215613e2457600080fd5b81516138a881613873565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015613e7e5781516001600160a01b031687529582019590820190600101613e59565b509495945050505050565b848152608060208201526000613ea26080830186613e45565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215613ed057600080fd5b5051919050565b600060208284031215613ee957600080fd5b81516138a881613929565b8082028115828204841417610ab557610ab5613d67565b600181815b80851115613f46578160001904821115613f2c57613f2c613d67565b80851615613f3957918102915b93841c9390800290613f10565b509250929050565b600082613f5d57506001610ab5565b81613f6a57506000610ab5565b8160018114613f805760028114613f8a57613fa6565b6001915050610ab5565b60ff841115613f9b57613f9b613d67565b50506001821b610ab5565b5060208310610133831016604e8410600b8410161715613fc9575081810a610ab5565b613fd38383613f0b565b8060001904821115613fe757613fe7613d67565b029392505050565b60006138a860ff841683613f4e565b60006001820161401057614010613d67565b5060010190565b60008261403457634e487b7160e01b600052601260045260246000fd5b500490565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60008060006060848603121561409457600080fd5b8351925060208401519150604084015190509250925092565b85815284602082015260a0604082015260006140cc60a0830186613e45565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212205681036d742d62cc09bfd472026f24ef1a2e5abfc980fdc80156920f3c8a5e1364736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102755760003560e01c806390b89ea31161014f578063cc4e0f50116100c1578063eb2ea5031161007a578063eb2ea50314610917578063f14210a61461094d578063f2fde38b1461096d578063f3fef3a31461098d578063f6d0bf2f146109ad578063faf90612146109c257600080fd5b8063cc4e0f50146107fb578063d28d885214610847578063d935b6741461085c578063dbc2d1df14610891578063dd62ed3e146108b1578063e75114ed146108f757600080fd5b8063a457c2d711610113578063a457c2d714610736578063a9059cbb14610756578063b09f126614610776578063b62496f51461078b578063baa88ea9146107bb578063c558ae6b146107db57600080fd5b806390b89ea31461066257806391b32b321461068257806395d89b41146106a25780639a7a23d6146106b7578063a18715e0146106d757600080fd5b806346811ed1116101e857806370a08231116101ac57806370a08231146105605780637115d00e14610596578063715018a6146105ab57806386867216146105c05780638a780447146106245780638da5cb5b1461064457600080fd5b806346811ed1146104a75780634ada218b146104df5780634fea2c7a14610500578063547b9ed71461052057806357c904411461054057600080fd5b806318160ddd1161023a57806318160ddd146103e45780631dc3d6a71461040357806323b872dd14610425578063313ce5671461044557806339509351146104675780633fd06a2f1461048757600080fd5b80628a2141146102815780630330583a146102b657806303cf071b1461032957806306fdde0314610392578063095ea7b3146103b457600080fd5b3661027c57005b600080fd5b34801561028d57600080fd5b506102966109e2565b604080519384526020840192909252908201526060015b60405180910390f35b3480156102c257600080fd5b5061030a6102d136600461388b565b6001600160a01b03166000908152602460209081526040808320546022835281842054602390935292205460ff92831693918316921690565b60408051931515845291151560208401521515908201526060016102ad565b34801561033557600080fd5b50600c54600d54601054600e54600f54600a54604080519687526020870195909552938501929092526060840152608083015260ff600160a81b82048116151560a0840152600160b01b90910416151560c082015260e0016102ad565b34801561039e57600080fd5b506103a7610a12565b6040516102ad91906138af565b3480156103c057600080fd5b506103d46103cf3660046138fd565b610aa4565b60405190151581526020016102ad565b3480156103f057600080fd5b506002545b6040519081526020016102ad565b34801561040f57600080fd5b5061042361041e36600461394d565b610abb565b005b34801561043157600080fd5b506103d46104403660046139b6565b610cd2565b34801561045157600080fd5b5060155460405160ff90911681526020016102ad565b34801561047357600080fd5b506103d46104823660046138fd565b610d7c565b34801561049357600080fd5b506104236104a23660046139f7565b610db8565b3480156104b357600080fd5b506007546104c7906001600160a01b031681565b6040516001600160a01b0390911681526020016102ad565b3480156104eb57600080fd5b50600a546103d490600160b01b900460ff1681565b34801561050c57600080fd5b5061042361051b366004613a15565b610e94565b34801561052c57600080fd5b5061042361053b36600461388b565b6110bd565b34801561054c57600080fd5b506006546104c7906001600160a01b031681565b34801561056c57600080fd5b506103f561057b36600461388b565b6001600160a01b031660009081526020819052604090205490565b3480156105a257600080fd5b506104236111ae565b3480156105b757600080fd5b50610423611358565b3480156105cc57600080fd5b50600a546021546040805160ff600160b81b8504811615158252600160c01b9094048416151560208201526101008304841691810191909152828216606082015262010000909104909116608082015260a0016102ad565b34801561063057600080fd5b5061042361063f36600461388b565b6113cc565b34801561065057600080fd5b506005546001600160a01b03166104c7565b34801561066e57600080fd5b5061042361067d366004613a2e565b6114dc565b34801561068e57600080fd5b5061042361069d36600461388b565b61158b565b3480156106ae57600080fd5b506103a7611655565b3480156106c357600080fd5b506104236106d2366004613a50565b611664565b3480156106e357600080fd5b50600854600954604080516001600160a01b03938416815291831660208301527f000000000000000000000000fef30d5d96cad69c5607e7dbdce6257467563ced909216918101919091526060016102ad565b34801561074257600080fd5b506103d46107513660046138fd565b611745565b34801561076257600080fd5b506103d46107713660046138fd565b6117de565b34801561078257600080fd5b506103a76117eb565b34801561079757600080fd5b506103d46107a636600461388b565b60266020526000908152604090205460ff1681565b3480156107c757600080fd5b506104236107d6366004613a89565b611879565b3480156107e757600080fd5b506104236107f6366004613b9a565b611a9e565b34801561080757600080fd5b50601f54602054601e54601b54601d54601c54604080519687526020870195909552938501929092526060840152608083015260a082015260c0016102ad565b34801561085357600080fd5b506103a7611c17565b34801561086857600080fd5b50610871611c24565b6040805194855260208501939093529183015260608201526080016102ad565b34801561089d57600080fd5b506104236108ac366004613c5c565b611d39565b3480156108bd57600080fd5b506103f56108cc366004613cb1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561090357600080fd5b50610423610912366004613cdf565b6121fc565b34801561092357600080fd5b50600a54601a54600160c81b90910460ff16906040805192151583526020830191909152016102ad565b34801561095957600080fd5b50610423610968366004613a15565b612398565b34801561097957600080fd5b5061042361098836600461388b565b6123e9565b34801561099957600080fd5b506104236109a83660046138fd565b6124d4565b3480156109b957600080fd5b50600b546103f5565b3480156109ce57600080fd5b506104236109dd366004613d0b565b612562565b6000806000806109f160025490565b9050600081601654610a039190613d7d565b60165496929550935090915050565b606060038054610a2190613d90565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4d90613d90565b8015610a9a5780601f10610a6f57610100808354040283529160200191610a9a565b820191906000526020600020905b815481529060010190602001808311610a7d57829003601f168201915b5050505050905090565b6000610ab1338484612678565b5060015b92915050565b6006546001600160a01b03163314610ad257600080fd5b600a8360ff1610158015610aea575060288360ff1611155b610b495760405162461bcd60e51b815260206004820152602560248201527f63616e6e6f742073657420566d6178206f757473696465203130252f34302520604482015264726174696f60d81b60648201526084015b60405180910390fd5b60018260ff1610158015610b615750600a8260ff1611155b610bb95760405162461bcd60e51b8152602060048201526024808201527f63616e6e6f742073657420566d696e206f7574736964652031252f31302520726044820152636174696f60e01b6064820152608401610b40565b60018160ff1610158015610bd1575060148160ff1611155b610c2e5760405162461bcd60e51b815260206004820152602860248201527f6d6178206a6565747320666565206d757374206265206265747777656e20312560448201526720616e642032302560c01b6064820152608401610b40565b600a805461ffff60b81b1916600160b81b8715150260ff60c01b191617600160c01b861515021790556021805460ff84811662ffffff1990921661010087831690810262ff00ff19169190911783176201000092861692830217909355604080519384526020840192909252908201527f4ae69fede5dd05c0c469a48d2325c79d8d1e733147074ee0c2efc8724ad031de9060600160405180910390a15050505050565b6000610cdf84848461279d565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610d645760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b40565b610d718533858403612678565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ab1918590610db3908690613dca565b612678565b6005546001600160a01b03163314610de25760405162461bcd60e51b8152600401610b4090613ddd565b6121c0811115610e345760405162461bcd60e51b815260206004820181905260248201527f4d696e54696d652043616e2774206265206d6f7265207468616e2061204461796044820152606401610b40565b601a819055600a805460ff60c81b1916600160c81b8415159081029190911790915560408051918252602082018390527fafc766bddc54b6e29c3b0e1a59ea627b3c65f51666c2afcd71a76683543703f891015b60405180910390a15050565b678ac7230489e80000811115610f225760405162461bcd60e51b815260206004820152604760248201527f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060448201527f612073696e676c652062757920746f207265647563652073616e64776963682060648201526661747461636b7360c81b608482015260a401610b40565b6006546001600160a01b03163314610f3957600080fd5b6040805160028082526060820183526000926020830190803683375050600754604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc79190613e12565b81600081518110610fda57610fda613e2f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061100e5761100e613e2f565b6001600160a01b03928316602091820292909201015260075460095460405163b6f9de9560e01b81529183169263b6f9de9592869261105a926000928892909116904290600401613e89565b6000604051808303818588803b15801561107357600080fd5b505af1158015611087573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051610e8891815260200190565b6005546001600160a01b031633146110e75760405162461bcd60e51b8152600401610b4090613ddd565b6007546001600160a01b03908116908216036111515760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610b40565b6007546040516001600160a01b03918216918316907fc9bec9b1051699cf0e6e2eeca8d44fd88acc5ab64a9c1ed46d75f66b345fad3590600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111d85760405162461bcd60e51b8152600401610b4090613ddd565b60185442101561121d5760405162461bcd60e51b815260206004820152601060248201526f139bdd081e595d081d5b9b1bd8dad95960821b6044820152606401610b40565b6040516370a0823160e01b81523060048201527f000000000000000000000000fef30d5d96cad69c5607e7dbdce6257467563ced906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112aa9190613ebe565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190613ed7565b5060405181815233907f52d77d535cb096c779f49b09abb8baa56624965f858e472b7b9d72ad28ad08f99060200160405180910390a25050565b6005546001600160a01b031633146113825760405162461bcd60e51b8152600401610b4090613ddd565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146113f65760405162461bcd60e51b8152600401610b4090613ddd565b6008546001600160a01b038281169116146114a557600880546001600160a01b039081166000908152602260208181526040808420805460ff19908116909155865486168552602480845282862080548316905587548716865260238085528387208054841690559689168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b6040516001600160a01b038216907f1ffd90b838134c6cfb56aa815cc97adc14b6cf358dc77a5ed8d8d826981f84bd90600090a250565b6005546001600160a01b031633146115065760405162461bcd60e51b8152600401610b4090613ddd565b600061151482610e10613ef4565b6115218462015180613ef4565b61152b9190613dca565b905042601854101561153c57426018555b6115526018548261154d9190613dca565b612d20565b6040518181527fe9da15d4cb5bea133d9613a866c909df5594489b91a3f780d43720d560b3c94c906020015b60405180910390a1505050565b6005546001600160a01b031633146115b55760405162461bcd60e51b8152600401610b4090613ddd565b6001600160a01b03811661160b5760405162461bcd60e51b815260206004820152601c60248201527f526563656976657220697320746865207a65726f2061646472657373000000006044820152606401610b40565b600680546001600160a01b0319166001600160a01b0383169081179091556040517f2eaea27d5dfd1c1f7852a40be37cc6beac673308a2ae807877cfe7c7c0e177da90600090a250565b606060048054610a2190613d90565b6005546001600160a01b0316331461168e5760405162461bcd60e51b8152600401610b4090613ddd565b7f000000000000000000000000fef30d5d96cad69c5607e7dbdce6257467563ced6001600160a01b0316826001600160a01b031603611737576040805162461bcd60e51b81526020600482015260248101919091527f546865204d61726b657420706169722063616e6e6f742062652072656d6f766560448201527f642066726f6d206175746f6d617465644d61726b65744d616b657250616972736064820152608401610b40565b6117418282612d33565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117c75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b40565b6117d43385858403612678565b5060019392505050565b6000610ab133848461279d565b600480546117f890613d90565b80601f016020809104026020016040519081016040528092919081815260200182805461182490613d90565b80156118715780601f1061184657610100808354040283529160200191611871565b820191906000526020600020905b81548152906001019060200180831161185457829003601f168201915b505050505081565b6005546001600160a01b031633146118a35760405162461bcd60e51b8152600401610b4090613ddd565b60105485111580156118b55750818510155b6119275760405162461bcd60e51b815260206004820152603a60248201527f546f74616c205461782063616e277420657863656564204d617854617865732e60448201527f206f72206265206c6f776572207468616e206275726e207461780000000000006064820152608401610b40565b6010548190836119378684613dca565b6119419190613dca565b111561198f5760405162461bcd60e51b815260206004820181905260248201527f546f74616c205461782063616e277420657863656564204d617854617865732e6044820152606401610b40565b8415611a2a57601c5485101580156119a957506010548511155b611a2a5760405162461bcd60e51b815260206004820152604660248201527f57616c6c657420322057616c6c657420546178206d757374206265207570646160448201527f74656420746f206265747765656e206275726e2074617820616e642032352070606482015265195c98d95b9d60d21b608482015260a401610b40565b601f869055601e859055601c839055601b849055601d82905582611a4e8386613dca565b611a589190613dca565b602081815560408051898152918201929092527f0aaa05fba10caab20c7dfcd757223e489dbd2313a5e1add54bca74aceaf17819910160405180910390a1505050505050565b6005546001600160a01b03163314611ac85760405162461bcd60e51b8152600401610b4090613ddd565b8051825114611b195760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610b40565b610258825110611b8a5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203630302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610b40565b60005b8251811015611c12576000838281518110611baa57611baa613e2f565b6020908102919091010151601554909150600090611bcc9060ff16600a613fef565b848481518110611bde57611bde613e2f565b6020026020010151611bf09190613ef4565b9050611bfd338383612e1d565b50508080611c0a90613ffe565b915050611b8d565b505050565b600380546117f890613d90565b600080600080601854421015611d26576201518042601854611c469190613d7d565b611c509190614017565b9350610e10611c628562015180613ef4565b42601854611c709190613d7d565b611c7a9190613d7d565b611c849190614017565b9250603c611c9484610e10613ef4565b611ca18662015180613ef4565b42601854611caf9190613d7d565b611cb99190613d7d565b611cc39190613d7d565b611ccd9190614017565b9150611cda82603c613ef4565b611ce684610e10613ef4565b611cf38662015180613ef4565b42601854611d019190613d7d565b611d0b9190613d7d565b611d159190613d7d565b611d1f9190613d7d565b9050611d33565b5060009250829150819050805b90919293565b6005546001600160a01b03163314611d635760405162461bcd60e51b8152600401610b4090613ddd565b6000611d6e60025490565b9050611d7b606482614017565b601554611d8c9060ff16600a613fef565b611d969089613ef4565b10158015611dbf57506015548190611db29060ff16600a613fef565b611dbc9089613ef4565b11155b611e315760405162461bcd60e51b815260206004820152603b60248201527f4d617757616c6c6574206d757374206265206265747765656e20746f74616c7360448201527f7570706c7920616e64203125206f6620746f74616c737570706c7900000000006064820152608401610b40565b611e3d6103e882614017565b601554611e4e9060ff16600a613fef565b611e589088613ef4565b10158015611e8157506015548190611e749060ff16600a613fef565b611e7e9088613ef4565b11155b611ef35760405162461bcd60e51b815260206004820152603b60248201527f4d617753656c6c206d757374206265206265747765656e20746f74616c73757060448201527f706c7920616e6420302e3125206f6620746f74616c737570706c7900000000006064820152608401610b40565b611eff61271082614017565b601554611f109060ff16600a613fef565b611f1a9087613ef4565b10158015611f325750611f2e600285614017565b8511155b611fa45760405162461bcd60e51b815260206004820152603a60248201527f4d696e53776170206d757374206265206265747765656e206d6178737761702f60448201527f3220616e6420302e303125206f6620746f74616c737570706c790000000000006064820152608401610b40565b60018310158015611fb6575060198311155b61201e5760405162461bcd60e51b815260206004820152603360248201527f4d617820546178206d757374206265207570646174656420746f206265747765604482015272195b880c48185b99080c8d481c195c98d95b9d606a1b6064820152608401610b40565b612029856002613ef4565b8410158015612053575060155481906120469060ff16600a613fef565b6120509086613ef4565b11155b6120bb5760405162461bcd60e51b815260206004820152603360248201527f4d617853776170206d757374206265206265747765656e20746f74616c73757060448201527238363c9030b7321029bbb0b826b4b7103c101960691b6064820152608401610b40565b600f8490556015546120d19060ff16600a613fef565b600f546120de9190613ef4565b601155600d8790556015546120f79060ff16600a613fef565b600d546121049190613ef4565b601355600c86905560155461211d9060ff16600a613fef565b600c5461212a9190613ef4565b601255600e8590556015546121439060ff16600a613fef565b600e546121509190613ef4565b6014556010839055600a805460ff60a81b1916600160a81b84151502179055604080518881526020810188905290810186905260608101859052608081018490527fb356c6a4fb17f6c4db09ad47af933af5908e354d88966ab5b64c9e2ed04ba0d69060a00160405180910390a160405182151581527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150505050505050565b6005546001600160a01b031633146122265760405162461bcd60e51b8152600401610b4090613ddd565b600a54600160b01b900460ff16156122775760405162461bcd60e51b815260206004820152601460248201527363616e206f6e6c79206c61756e6368206f6e636560601b6044820152606401610b40565b60288311156122bc5760405162461bcd60e51b81526020600482015260116024820152702737ba1036b7b932903a3430b7101936b760791b6044820152606401610b40565b476000036122e957600a805460ff60b01b1916600160b01b1790556122e18343613dca565b601955612359565b60006122f782610e10613ef4565b6123048462015180613ef4565b61230e9190613dca565b905061231a8142613dca565b601855306000908152602081905260409020546123379047612fad565b600a805460ff60b01b1916600160b01b1790556123548443613dca565b601955505b600a54604051600160b01b90910460ff16151581527f329b2d9780190712e4dce1df3d73ad5288c4ea1718736d9cfda28915f59043929060200161157e565b6006546001600160a01b031633146123af57600080fd5b6006546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611741573d6000803e3d6000fd5b6005546001600160a01b031633146124135760405162461bcd60e51b8152600401610b4090613ddd565b6001600160a01b0381166124785760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b40565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633146124eb57600080fd5b60065460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af115801561253e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c129190613ed7565b6005546001600160a01b0316331461258c5760405162461bcd60e51b8152600401610b4090613ddd565b6001600160a01b03841660009081526022602052604090205483151560ff9091161515036125f25760405162461bcd60e51b81526020600482015260136024820152721858d8dbdd5b9d08185b1c9958591e481cd95d606a1b6044820152606401610b40565b6001600160a01b0384166000818152602260209081526040808320805460ff1990811689151590811790925560248452828520805482168915151790556023845293829020805490941686151517909355519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a250505050565b6001600160a01b0383166126da5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b40565b6001600160a01b03821661273b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b40565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166127f35760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610b40565b6001600160a01b0382166128495760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610b40565b8060000361285657505050565b600a54600160b01b900460ff166128cf576001600160a01b03831660009081526023602052604090205460ff166128cf5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420616c6c6f776564207965740000000000000000006044820152606401610b40565b6001600160a01b03821660009081526023602052604090205460ff166129a2576001600160a01b038216301480159061291657506009546001600160a01b03838116911614155b156129a2576013548161293e846001600160a01b031660009081526020819052604090205490565b6129489190613dca565b11156129a25760405162461bcd60e51b8152602060048201526024808201527f77616c6c657420616d6f756e7420657863656564206d617857616c6c6574416d6044820152631bdd5b9d60e21b6064820152608401610b40565b6001600160a01b03821660009081526026602052604090205460ff1680156129e357506001600160a01b03831660009081526024602052604090205460ff16155b8015612a0857506001600160a01b03821660009081526024602052604090205460ff16155b15612a8557601254811115612a855760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610b40565b600a54600160c81b900460ff168015612ab757506001600160a01b03831660009081526023602052604090205460ff16155b8015612adb57506001600160a01b03821660009081526026602052604090205460ff165b15612b7157601a546001600160a01b0384166000908152602560205260409020544391612b0791613dca565b1115612b555760405162461bcd60e51b815260206004820152601960248201527f547279696e6720746f2073656c6c20746f6f206f6674656e21000000000000006044820152606401610b40565b6001600160a01b03831660009081526025602052604090204390555b3060009081526020819052604090205460145460115490821015908210612b985760115491505b600a54600160a81b900460ff168015612bae5750805b8015612bc45750600a54600160a01b900460ff16155b8015612be957506001600160a01b03851660009081526026602052604090205460ff16155b8015612c0e57506001600160a01b03851660009081526023602052604090205460ff16155b8015612c3357506001600160a01b03841660009081526023602052604090205460ff16155b8015612c4d5750601c54602054612c4a9190613d7d565b15155b15612c7c57600a805460ff60a01b1916600160a01b179055612c6e8261308e565b600a805460ff60a01b191690555b6001600160a01b038516600090815260226020526040902054839060ff16158015612cc057506001600160a01b03851660009081526022602052604090205460ff16155b15612cd357612cd0868686613256565b90505b6009546001600160a01b0390811690861603612cf857612cf38682613516565b612d18565b6009546001600160a01b03868116911614612d1857612d18868683612e1d565b505050505050565b6018548111612d2e57600080fd5b601855565b6001600160a01b03821660009081526026602052604090205481151560ff909116151503612dc95760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610b40565b6001600160a01b038216600081815260266020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316612e815760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b40565b6001600160a01b038216612ee35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b40565b6001600160a01b03831660009081526020819052604090205481811015612f1c5760405162461bcd60e51b8152600401610b4090614039565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612f53908490613dca565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f9f91815260200190565b60405180910390a350505050565b6007543060009081526001602090815260408083206001600160a01b03909416835292905290812054612fe1908490613dca565b600754909150612ffc9030906001600160a01b031683612678565b60075460405163f305d71960e01b8152306004820181905260248201869052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990849060c40160606040518083038185885af1158015613069573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d18919061407f565b6000601c546020546130a09190613d7d565b601c5460205491925047916000916130b791613d7d565b6002601b54866130c79190613ef4565b6130d19190614017565b6130db9190614017565b9050600081601c546020546130f09190613d7d565b6130fa8688613ef4565b6131049190614017565b61310e9190613d7d565b905061311981613617565b60006131258447613d7d565b905060006002601b546131389190614017565b6131429087613d7d565b6002601b54846131529190613ef4565b61315c9190614017565b6131669190614017565b90506002601b546131779190614017565b6131819087613d7d565b601d5461318e9084613ef4565b6131989190614017565b600b60008282546131a99190613dca565b9091555050601b5415613202576131c08482612fad565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b600b541561324d57600854600b546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015613246573d6000803e3d6000fd5b506000600b555b50505050505050565b6001600160a01b03831660009081526026602052604081205481908190819060ff161561335557600a54600160b01b900460ff168015613297575060195443105b80156132bc57506001600160a01b03861660009081526023602052604090205460ff16155b80156132e057506001600160a01b03871660009081526026602052604090205460ff165b1561331c5760646132f2866063613ef4565b6132fc9190614017565b9250606461330b866063613ef4565b6133159190614017565b91506134c9565b601f5415613350576064601f54866133349190613ef4565b61333e9190614017565b92506064601c548661330b9190613ef4565b6134c9565b6001600160a01b03861660009081526026602052604090205460ff161561343c57600a54600160b81b900460ff1680156133a857506001600160a01b03871660009081526023602052604090205460ff16155b156133ea576133b685613769565b905080156133ea57600a54600160c01b900460ff16156133dd576133da8183613dca565b91505b6133e78184613dca565b92505b60205415613350576064602054866134029190613ef4565b61340c9190614017565b6134169084613dca565b92506064601c54866134289190613ef4565b6134329190614017565b6133159083613dca565b6001600160a01b03871660009081526026602052604090205460ff1615801561347e57506001600160a01b03861660009081526026602052604090205460ff16155b801561348b5750601e5415155b156134c9576064601e54866134a09190613ef4565b6134aa9190614017565b92506064601c54866134bc9190613ef4565b6134c69190614017565b91505b6134d38284613d7d565b925081156134e5576134e58783613516565b82156134f6576134f6873085612e1d565b816135018487613d7d565b61350b9190613d7d565b979650505050505050565b6001600160a01b03821661356c5760405162461bcd60e51b815260206004820152601a60248201527f6275726e2066726f6d20746865207a65726f20616464726573730000000000006044820152606401610b40565b6001600160a01b038216600090815260208190526040902054818110156135a55760405162461bcd60e51b8152600401610b4090614039565b6001600160a01b03831660009081526020819052604081208383039055600280548492906135d4908490613d7d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612790565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061364c5761364c613e2f565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156136a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c99190613e12565b816001815181106136dc576136dc613e2f565b6001600160a01b0392831660209182029290920101526007546137029130911684612678565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac9479061373b9085906000908690309042906004016140ad565b600060405180830381600087803b15801561375557600080fd5b505af1158015612d18573d6000803e3d6000fd5b7f000000000000000000000000fef30d5d96cad69c5607e7dbdce6257467563ced6001600160a01b031660009081526020819052604081205460215482906064906137b79060ff1684613ef4565b6137c19190614017565b6021549091506000906064906137df90610100900460ff1685613ef4565b6137e99190614017565b90508185116137fd57506000949350505050565b808511156138315760215460649061381e9062010000900460ff1687613ef4565b6138289190614017565b95945050505050565b606461383d8383613d7d565b602154879062010000900460ff166138558683613d7d565b61385f9190613ef4565b6138699190613ef4565b61381e9190614017565b6001600160a01b038116811461388857600080fd5b50565b60006020828403121561389d57600080fd5b81356138a881613873565b9392505050565b600060208083528351808285015260005b818110156138dc578581018301518582016040015282016138c0565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561391057600080fd5b823561391b81613873565b946020939093013593505050565b801515811461388857600080fd5b803560ff8116811461394857600080fd5b919050565b600080600080600060a0868803121561396557600080fd5b853561397081613929565b9450602086013561398081613929565b935061398e60408701613937565b925061399c60608701613937565b91506139aa60808701613937565b90509295509295909350565b6000806000606084860312156139cb57600080fd5b83356139d681613873565b925060208401356139e681613873565b929592945050506040919091013590565b60008060408385031215613a0a57600080fd5b823561391b81613929565b600060208284031215613a2757600080fd5b5035919050565b60008060408385031215613a4157600080fd5b50508035926020909101359150565b60008060408385031215613a6357600080fd5b8235613a6e81613873565b91506020830135613a7e81613929565b809150509250929050565b600080600080600060a08688031215613aa157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613b0357613b03613ac4565b604052919050565b600067ffffffffffffffff821115613b2557613b25613ac4565b5060051b60200190565b600082601f830112613b4057600080fd5b81356020613b55613b5083613b0b565b613ada565b82815260059290921b84018101918181019086841115613b7457600080fd5b8286015b84811015613b8f5780358352918301918301613b78565b509695505050505050565b60008060408385031215613bad57600080fd5b823567ffffffffffffffff80821115613bc557600080fd5b818501915085601f830112613bd957600080fd5b81356020613be9613b5083613b0b565b82815260059290921b84018101918181019089841115613c0857600080fd5b948201945b83861015613c2f578535613c2081613873565b82529482019490820190613c0d565b96505086013592505080821115613c4557600080fd5b50613c5285828601613b2f565b9150509250929050565b60008060008060008060c08789031215613c7557600080fd5b863595506020870135945060408701359350606087013592506080870135915060a0870135613ca381613929565b809150509295509295509295565b60008060408385031215613cc457600080fd5b8235613ccf81613873565b91506020830135613a7e81613873565b600080600060608486031215613cf457600080fd5b505081359360208301359350604090920135919050565b60008060008060808587031215613d2157600080fd5b8435613d2c81613873565b93506020850135613d3c81613929565b92506040850135613d4c81613929565b91506060850135613d5c81613929565b939692955090935050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610ab557610ab5613d67565b600181811c90821680613da457607f821691505b602082108103613dc457634e487b7160e01b600052602260045260246000fd5b50919050565b80820180821115610ab557610ab5613d67565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215613e2457600080fd5b81516138a881613873565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015613e7e5781516001600160a01b031687529582019590820190600101613e59565b509495945050505050565b848152608060208201526000613ea26080830186613e45565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215613ed057600080fd5b5051919050565b600060208284031215613ee957600080fd5b81516138a881613929565b8082028115828204841417610ab557610ab5613d67565b600181815b80851115613f46578160001904821115613f2c57613f2c613d67565b80851615613f3957918102915b93841c9390800290613f10565b509250929050565b600082613f5d57506001610ab5565b81613f6a57506000610ab5565b8160018114613f805760028114613f8a57613fa6565b6001915050610ab5565b60ff841115613f9b57613f9b613d67565b50506001821b610ab5565b5060208310610133831016604e8410600b8410161715613fc9575081810a610ab5565b613fd38383613f0b565b8060001904821115613fe757613fe7613d67565b029392505050565b60006138a860ff841683613f4e565b60006001820161401057614010613d67565b5060010190565b60008261403457634e487b7160e01b600052601260045260246000fd5b500490565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60008060006060848603121561409457600080fd5b8351925060208401519150604084015190509250925092565b85815284602082015260a0604082015260006140cc60a0830186613e45565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212205681036d742d62cc09bfd472026f24ef1a2e5abfc980fdc80156920f3c8a5e1364736f6c63430008130033
Deployed Bytecode Sourcemap
31019:397:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15044:276;;;;;;;;;;;;;:::i;:::-;;;;216:25:1;;;272:2;257:18;;250:34;;;;300:18;;;293:34;204:2;189:18;15044:276:0;;;;;;;;13765:194;;;;;;;;;;-1:-1:-1;13765:194:0;;;;;:::i;:::-;-1:-1:-1;;;;;13872:29:0;13825:10;13872:29;;;:20;:29;;;;;;;;;13903:19;:28;;;;;;13933:14;:23;;;;;;13872:29;;;;;13903:28;;;;13933:23;;13765:194;;;;;935:14:1;;928:22;910:41;;994:14;;987:22;982:2;967:18;;960:50;1053:14;1046:22;1026:18;;;1019:50;898:2;883:18;13765:194:0;726:349:1;14181:253:0;;;;;;;;;;-1:-1:-1;14346:7:0;;14355:9;;14366:8;;14376:7;;14385;;14394:21;;14181:253;;;1383:25:1;;;1439:2;1424:18;;1417:34;;;;1467:18;;;1460:34;;;;1525:2;1510:18;;1503:34;1568:3;1553:19;;1546:35;14394:21:0;-1:-1:-1;;;14394:21:0;;;;1625:14:1;1618:22;1612:3;1597:19;;1590:51;-1:-1:-1;;;14417:14:0;;;;1685::1;1678:22;1672:3;1657:19;;1650:51;1370:3;1355:19;14181:253:0;1080:627:1;2103:84:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2913:169::-;;;;;;;;;;-1:-1:-1;2913:169:0;;;;;:::i;:::-;;:::i;:::-;;;2750:14:1;;2743:22;2725:41;;2713:2;2698:18;2913:169:0;2585:187:1;2370:92:0;;;;;;;;;;-1:-1:-1;2448:12:0;;2370:92;;;2923:25:1;;;2911:2;2896:18;2370:92:0;2777:177:1;23365:664:0;;;;;;;;;;-1:-1:-1;23365:664:0;;;;;:::i;:::-;;:::i;:::-;;3090:430;;;;;;;;;;-1:-1:-1;3090:430:0;;;;;:::i;:::-;;:::i;13683:76::-;;;;;;;;;;-1:-1:-1;13749:7:0;;13683:76;;13749:7;;;;4439:36:1;;4427:2;4412:18;13683:76:0;4297:184:1;3528:215:0;;;;;;;;;;-1:-1:-1;3528:215:0;;;;;:::i;:::-;;:::i;18091:264::-;;;;;;;;;;-1:-1:-1;18091:264:0;;;;;:::i;:::-;;:::i;8315:29::-;;;;;;;;;;-1:-1:-1;8315:29:0;;;;-1:-1:-1;;;;;8315:29:0;;;;;;-1:-1:-1;;;;;4982:32:1;;;4964:51;;4952:2;4937:18;8315:29:0;4800:221:1;8591:34:0;;;;;;;;;;-1:-1:-1;8591:34:0;;;;-1:-1:-1;;;8591:34:0;;;;;;16239:561;;;;;;;;;;-1:-1:-1;16239:561:0;;;;;:::i;:::-;;:::i;20938:281::-;;;;;;;;;;-1:-1:-1;20938:281:0;;;;;:::i;:::-;;:::i;7582:34::-;;;;;;;;;;-1:-1:-1;7582:34:0;;;;-1:-1:-1;;;;;7582:34:0;;;2468:111;;;;;;;;;;-1:-1:-1;2468:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;2559:18:0;2542:7;2559:18;;;;;;;;;;;;2468:111;23010:347;;;;;;;;;;;;;:::i;7137:148::-;;;;;;;;;;;;;:::i;14733:188::-;;;;;;;;;;-1:-1:-1;14868:8:0;;14889:7;;14733:188;;;14868:8;-1:-1:-1;;;14868:8:0;;;;5707:14:1;5700:22;5682:41;;-1:-1:-1;;;14878:9:0;;;;;5766:14:1;5759:22;5754:2;5739:18;;5732:50;14868:8:0;14889:7;;;;5798:18:1;;;5791:34;;;;14898:7:0;;;5856:2:1;5841:18;;5834:34;14907:11:0;;;;;;;5899:3:1;5884:19;;5877:35;5669:3;5654:19;14733:188:0;5435:483:1;17439:636:0;;;;;;;;;;-1:-1:-1;17439:636:0;;;;;:::i;:::-;;:::i;6928:71::-;;;;;;;;;;-1:-1:-1;6991:6:0;;-1:-1:-1;;;;;6991:6:0;6928:71;;21867:364;;;;;;;;;;-1:-1:-1;21867:364:0;;;;;:::i;:::-;;:::i;7741:240::-;;;;;;;;;;-1:-1:-1;7741:240:0;;;;;:::i;:::-;;:::i;2193:88::-;;;;;;;;;;;;;:::i;21614:247::-;;;;;;;;;;-1:-1:-1;21614:247:0;;;;;:::i;:::-;;:::i;14554:173::-;;;;;;;;;;-1:-1:-1;14667:15:0;;14693:10;;14554:173;;;-1:-1:-1;;;;;14667:15:0;;;7271:34:1;;14693:10:0;;;7336:2:1;7321:18;;7314:43;14714:9:0;7393:15:1;;;7373:18;;;7366:43;;;;7221:2;7206:18;14554:173:0;7031:384:1;3751:387:0;;;;;;;;;;-1:-1:-1;3751:387:0;;;;;:::i;:::-;;:::i;2587:175::-;;;;;;;;;;-1:-1:-1;2587:175:0;;;;;:::i;:::-;;:::i;1949:21::-;;;;;;;;;;;;;:::i;9934:58::-;;;;;;;;;;-1:-1:-1;9934:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19856:1069;;;;;;;;;;-1:-1:-1;19856:1069:0;;;;;:::i;:::-;;:::i;16808:623::-;;;;;;;;;;-1:-1:-1;16808:623:0;;;;;:::i;:::-;;:::i;13965:210::-;;;;;;;;;;-1:-1:-1;14096:7:0;;14105:8;;14115:17;;14134:13;;14149;;14164:8;;13965:210;;;10653:25:1;;;10709:2;10694:18;;10687:34;;;;10737:18;;;10730:34;;;;10795:2;10780:18;;10773:34;10838:3;10823:19;;10816:35;10882:3;10867:19;;10860:35;10640:3;10625:19;13965:210:0;10366:535:1;1923:19:0;;;;;;;;;;;;;:::i;15336:639::-;;;;;;;;;;;;;:::i;:::-;;;;11137:25:1;;;11193:2;11178:18;;11171:34;;;;11221:18;;;11214:34;11279:2;11264:18;;11257:34;11124:3;11109:19;15336:639:0;10906:391:1;18367:1479:0;;;;;;;;;;-1:-1:-1;18367:1479:0;;;;;:::i;:::-;;:::i;2770:135::-;;;;;;;;;;-1:-1:-1;2770:135:0;;;;;:::i;:::-;-1:-1:-1;;;;;2876:18:0;;;2859:7;2876:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2770:135;22239:763;;;;;;;;;;-1:-1:-1;22239:763:0;;;;;:::i;:::-;;:::i;14440:108::-;;;;;;;;;;-1:-1:-1;14525:11:0;;14538:7;;-1:-1:-1;;;14525:11:0;;;;;;14440:108;;;12798:14:1;;12791:22;12773:41;;12845:2;12830:18;;12823:34;;;;12746:18;14440:108:0;12605:258:1;8140:115:0;;;;;;;;;;-1:-1:-1;8140:115:0;;;;;:::i;:::-;;:::i;7294:244::-;;;;;;;;;;-1:-1:-1;7294:244:0;;;;;:::i;:::-;;:::i;7989:145::-;;;;;;;;;;-1:-1:-1;7989:145:0;;;;;:::i;:::-;;:::i;14927:105::-;;;;;;;;;;-1:-1:-1;15010:19:0;;14927:105;;21228:370;;;;;;;;;;-1:-1:-1;21228:370:0;;;;;:::i;:::-;;:::i;15044:276::-;15090:21;15113:25;15140:19;15172:14;15189;2448:12;;;2370:92;15189:14;15172:31;;15214:19;15252:6;15236:13;;:22;;;;:::i;:::-;15277:13;;;15292:6;;-1:-1:-1;15214:44:0;-1:-1:-1;15044:276:0;;-1:-1:-1;;15044:276:0:o;2103:84::-;2157:13;2180:5;2173:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2103:84;:::o;2913:169::-;2996:4;3013:39;1443:10;3036:7;3045:6;3013:8;:39::i;:::-;-1:-1:-1;3070:4:0;2913:169;;;;;:::o;23365:664::-;23509:11;;-1:-1:-1;;;;;23509:11:0;23495:10;:25;23487:34;;;;;;23552:2;23541:7;:13;;;;:30;;;;;23569:2;23558:7;:13;;;;23541:30;23532:81;;;;-1:-1:-1;;;23532:81:0;;14378:2:1;23532:81:0;;;14360:21:1;14417:2;14397:18;;;14390:30;14456:34;14436:18;;;14429:62;-1:-1:-1;;;14507:18:1;;;14500:35;14552:19;;23532:81:0;;;;;;;;;23644:1;23633:7;:12;;;;:29;;;;;23660:2;23649:7;:13;;;;23633:29;23624:79;;;;-1:-1:-1;;;23624:79:0;;14784:2:1;23624:79:0;;;14766:21:1;14823:2;14803:18;;;14796:30;14862:34;14842:18;;;14835:62;-1:-1:-1;;;14913:18:1;;;14906:34;14957:19;;23624:79:0;14582:400:1;23624:79:0;23738:1;23723:11;:16;;;;:37;;;;;23758:2;23743:11;:17;;;;23723:37;23714:91;;;;-1:-1:-1;;;23714:91:0;;15189:2:1;23714:91:0;;;15171:21:1;15228:2;15208:18;;;15201:30;15267:34;15247:18;;;15240:62;-1:-1:-1;;;15318:18:1;;;15311:38;15366:19;;23714:91:0;14987:404:1;23714:91:0;23816:8;:19;;-1:-1:-1;;;;23846:21:0;-1:-1:-1;;;23816:19:0;;;;-1:-1:-1;;;;23846:21:0;;-1:-1:-1;;;23846:21:0;;;;;;;23878:7;:17;;23816:19;23906:17;;;-1:-1:-1;;23934:25:0;;;23816:19;23878:17;;;;;;-1:-1:-1;;23934:25:0;;;;;;;;;;;;;;;;;;23975:46;;;15586:36:1;;;15653:2;15638:18;;15631:45;;;;15692:18;;;15685:45;23975:46:0;;15574:2:1;15559:18;23975:46:0;;;;;;;23365:664;;;;;:::o;3090:430::-;3196:4;3213:36;3223:6;3231:9;3242:6;3213:9;:36::i;:::-;-1:-1:-1;;;;;3287:19:0;;3260:24;3287:19;;;:11;:19;;;;;;;;1443:10;3287:33;;;;;;;;3339:26;;;;3331:79;;;;-1:-1:-1;;;3331:79:0;;15943:2:1;3331:79:0;;;15925:21:1;15982:2;15962:18;;;15955:30;16021:34;16001:18;;;15994:62;-1:-1:-1;;;16072:18:1;;;16065:38;16120:19;;3331:79:0;15741:404:1;3331:79:0;3432:57;3441:6;1443:10;3482:6;3463:16;:25;3432:8;:57::i;:::-;-1:-1:-1;3508:4:0;;3090:430;-1:-1:-1;;;;3090:430:0:o;3528:215::-;1443:10;3616:4;3665:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3665:34:0;;;;;;;;;;3616:4;;3633:80;;3656:7;;3665:47;;3702:10;;3665:47;:::i;:::-;3633:8;:80::i;18091:264::-;6991:6;;-1:-1:-1;;;;;6991:6:0;1443:10;7048:23;7040:68;;;;-1:-1:-1;;;7040:68:0;;;;;;;:::i;:::-;18194:4:::1;18183:7;:15;;18175:61;;;::::0;-1:-1:-1;;;18175:61:0;;16843:2:1;18175:61:0::1;::::0;::::1;16825:21:1::0;;;16862:18;;;16855:30;16921:34;16901:18;;;16894:62;16973:18;;18175:61:0::1;16641:356:1::0;18175:61:0::1;18247:7;:17:::0;;;18275:11:::1;:25:::0;;-1:-1:-1;;;;18275:25:0::1;-1:-1:-1::0;;;18275:25:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;18316:31:::1;::::0;;12773:41:1;;;12845:2;12830:18;;12823:34;;;18316:31:0::1;::::0;12746:18:1;18316:31:0::1;;;;;;;;18091:264:::0;;:::o;16239:561::-;16324:8;16309:11;:23;;16301:107;;;;-1:-1:-1;;;16301:107:0;;17204:2:1;16301:107:0;;;17186:21:1;17243:2;17223:18;;;17216:30;17282:34;17262:18;;;17255:62;17353:34;17333:18;;;17326:62;-1:-1:-1;;;17404:19:1;;;17397:38;17452:19;;16301:107:0;17002:475:1;16301:107:0;16441:11;;-1:-1:-1;;;;;16441:11:0;16427:10;:25;16419:34;;;;;;16490:16;;;16504:1;16490:16;;;;;;;;16466:21;;16490:16;;;;;;;;-1:-1:-1;;16527:11:0;;:18;;;-1:-1:-1;;;16527:18:0;;;;16466:40;;-1:-1:-1;;;;;;16527:11:0;;;;:16;;-1:-1:-1;16527:18:0;;;;;;;;;;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16517:4;16522:1;16517:7;;;;;;;;:::i;:::-;;;;;;:28;-1:-1:-1;;;;;16517:28:0;;;-1:-1:-1;;;;;16517:28:0;;;;;16574:4;16556;16561:1;16556:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16556:23:0;;;:7;;;;;;;;;:23;16618:11;;16718:10;;16618:129;;-1:-1:-1;;;16618:129:0;;:11;;;;:62;;16688:11;;16618:129;;:11;;16704:4;;16718:10;;;;16731:15;;16618:129;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16763:29;16780:11;16763:29;;;;2923:25:1;;2911:2;2896:18;;2777:177;20938:281:0;6991:6;;-1:-1:-1;;;;;6991:6:0;1443:10;7048:23;7040:68;;;;-1:-1:-1;;;7040:68:0;;;;;;;:::i;:::-;21045:11:::1;::::0;-1:-1:-1;;;;;21045:11:0;;::::1;21023:34:::0;;::::1;::::0;21015:82:::1;;;::::0;-1:-1:-1;;;21015:82:0;;19053:2:1;21015:82:0::1;::::0;::::1;19035:21:1::0;19092:2;19072:18;;;19065:30;19131:34;19111:18;;;19104:62;-1:-1:-1;;;19182:18:1;;;19175:33;19225:19;;21015:82:0::1;18851:399:1::0;21015:82:0::1;21151:11;::::0;21113:51:::1;::::0;-1:-1:-1;;;;;21151:11:0;;::::1;::::0;21113:51;::::1;::::0;::::1;::::0;21151:11:::1;::::0;21113:51:::1;21175:11;:36:::0;;-1:-1:-1;;;;;;21175:36:0::1;-1:-1:-1::0;;;;;21175:36:0;;;::::1;::::0;;;::::1;::::0;;20938:281::o;23010:347::-;6991:6;;-1:-1:-1;;;;;6991:6:0;1443:10;7048:23;7040:68;;;;-1:-1:-1;;;7040:68:0;;;;;;;:::i;:::-;23088:20:::1;;23069:15;:39;;23061:68;;;::::0;-1:-1:-1;;;23061:68:0;;19457:2:1;23061:68:0::1;::::0;::::1;19439:21:1::0;19496:2;19476:18;;;19469:30;-1:-1:-1;;;19515:18:1;;;19508:46;19571:18;;23061:68:0::1;19255:340:1::0;23061:68:0::1;23209:39;::::0;-1:-1:-1;;;23209:39:0;;23242:4:::1;23209:39;::::0;::::1;4964:51:1::0;23171:9:0::1;::::0;23140:21:::1;::::0;-1:-1:-1;;;;;23209:24:0;::::1;::::0;::::1;::::0;4937:18:1;;23209:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23259:43;::::0;-1:-1:-1;;;23259:43:0;;23283:10:::1;23259:43;::::0;::::1;19963:51:1::0;20030:18;;;20023:34;;;23192:56:0;;-1:-1:-1;;;;;;23259:23:0;::::1;::::0;::::1;::::0;19936:18:1;;23259:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;23318:31:0::1;::::0;2923:25:1;;;23330:10:0::1;::::0;23318:31:::1;::::0;2911:2:1;2896:18;23318:31:0::1;;;;;;;23050:307;;23010:347::o:0;7137:148::-;6991:6;;-1:-1:-1;;;;;6991:6:0;1443:10;7048:23;7040:68;;;;-1:-1:-1;;;7040:68:0;;;;;;;:::i;:::-;7228:6:::1;::::0;7207:40:::1;::::0;7244:1:::1;::::0;-1:-1:-1;;;;;7228:6:0::1;::::0;7207:40:::1;::::0;7244:1;;7207:40:::1;7258:6;:19:::0;;-1:-1:-1;;;;;;7258:19:0::1;::::0;;7137:148::o;17439:636::-;6991:6;;-1:-1:-1;;;;;6991:6:0;1443:10;7048:23;7040:68;;;;-1:-1:-1;;;7040:68:0;;;;;;;:::i;:::-;17560:15:::1;::::0;-1:-1:-1;;;;;17537:38:0;;::::1;17560:15:::0;::::1;17537:38;17533:479;;17612:15;::::0;;-1:-1:-1;;;;;17612:15:0;;::::1;17631:5;17592:36:::0;;;:19:::1;:36;::::0;;;;;;;:44;;-1:-1:-1;;17592:44:0;;::::1;::::0;;;17672:15;;;::::1;17651:37:::0;;:20:::1;:37:::0;;;;;;:45;;;::::1;::::0;;17726:15;;;::::1;17711:31:::0;;:14:::1;:31:::0;;;;;;:39;;;::::1;::::0;;17782:40;;::::1;::::0;;;;;;;;;:47;;;::::1;17612:15:::0;17782:47;;::::1;::::0;;;17844:41;;;;;;:48;;;::::1;::::0;::::1;::::0;;17907:35;;;;;;;:42;;;;::::1;::::0;;::::1;::::0;;17963:37;;-1:-1:-1;;;;;;17963:37:0::1;;::::0;;17533:479:::1;18027:40;::::0;-1:-1:-1;;;;;18027:40:0;::::1;::::0;::::1;::::0;;;::::1;17439:636:::0;:::o;21867:364::-;6991:6;;-1:-1:-1;;;;;6991:6:0;1443:10;7048:23;7040:68;;;;-1:-1:-1;;;7040:68:0;;;;;;;:::i;:::-;21956:25:::1;22000:13;:8:::0;22009:4:::1;22000:13;:::i;:::-;21984;:7:::0;21992:5:::1;21984:13;:::i;:::-;:29;;;;:::i;:::-;21956:57;;22051:15;22028:20;;:38;22024:82;;;22091:15;22068:20;:38:::0;22024:82:::1;22114:55;22148:20;;22128:17;:40;;;;:::i;:::-;22114:13;:55::i;:::-;22185:38;::::0;2923:25:1;;;22185:38:0::1;::::0;2911:2:1;2896:18;22185:38:0::1;;;;;;;;21945:286;21867:364:::0;;:::o;7741:240::-;6991:6;;-1:-1:-1;;;;;6991:6:0;1443:10;7048:23;7040:68;;;;-1:-1:-1;;;7040:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7833:26:0;::::1;7825:67;;;::::0;-1:-1:-1;;;7825:67:0;;20693:2:1;7825:67:0::1;::::0;::::1;20675:21:1::0;20732:2;20712:18;;;20705:30;20771;20751:18;;;20744:58;20819:18;;7825:67:0::1;20491:352:1::0;7825:67:0::1;7903:11;:26:::0;;-1:-1:-1;;;;;;7903:26:0::1;-1:-1:-1::0;;;;;7903:26:0;::::1;::::0;;::::1;::::0;;;7945:28:::1;::::0;::::1;::::0;-1:-1:-1;;7945:28:0::1;7741:240:::0;:::o;2193:88::-;2249:13;2272:7;2265:14;;;;;:::i;21614:247::-;6991:6;;-1:-1:-1;;;;;6991:6:0;1443:10;7048:23;7040:68;;;;-1:-1:-1;;;7040:68:0;;;;;;;:::i;:::-;21723:9:::1;-1:-1:-1::0;;;;;21715:17:0::1;:4;-1:-1:-1::0;;;;;21715:17:0::1;::::0;21707:94:::1;;;::::0;;-1:-1:-1;;;21707:94:0;;21050:2:1;21707:94:0::1;::::0;::::1;21032:21:1::0;21069:18;;;21062:30;;;;21128:34;21108:18;;;21101:62;21199:34;21179:18;;;21172:62;21251:19;;21707:94:0::1;20848:428:1::0;21707:94:0::1;21812:41;21841:4;21847:5;21812:28;:41::i;:::-;21614:247:::0;;:::o;3751:387::-;1443:10;3844:4;3888:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3888:34:0;;;;;;;;;;3941:35;;;;3933:85;;;;-1:-1:-1;;;3933:85:0;;21483:2:1;3933:85:0;;;21465:21:1;21522:2;21502:18;;;21495:30;21561:34;21541:18;;;21534:62;-1:-1:-1;;;21612:18:1;;;21605:35;21657:19;;3933:85:0;21281:401:1;3933:85:0;4040:67;1443:10;4063:7;4091:15;4072:16;:34;4040:8;:67::i;:::-;-1:-1:-1;4126:4:0;;3751:387;-1:-1:-1;;;3751:387:0:o;2587:175::-;2673:4;2690:42;1443:10;2714:9;2725:6;2690:9;:42::i;1949:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19856:1069::-;6991:6;;-1:-1:-1;;;;;6991:6:0;1443:10;7048:23;7040:68;;;;-1:-1:-1;;;7040:68:0;;;;;;;:::i;:::-;20042:8:::1;;20029:9;:21;;:48;;;;;20067:10;20054:9;:23;;20029:48;20021:119;;;::::0;-1:-1:-1;;;20021:119:0;;21889:2:1;20021:119:0::1;::::0;::::1;21871:21:1::0;21928:2;21908:18;;;21901:30;21967:34;21947:18;;;21940:62;22038:28;22018:18;;;22011:56;22084:19;;20021:119:0::1;21687:422:1::0;20021:119:0::1;20253:8;::::0;20173:15;;20239:10;20207:29:::1;20221:15:::0;20173;20207:29:::1;:::i;:::-;:42;;;;:::i;:::-;:54;;20199:99;;;::::0;-1:-1:-1;;;20199:99:0;;22316:2:1;20199:99:0::1;::::0;::::1;22298:21:1::0;;;22335:18;;;22328:30;22394:34;22374:18;;;22367:62;22446:18;;20199:99:0::1;22114:356:1::0;20199:99:0::1;20438:21:::0;;20435:171:::1;;20489:8;;20469:16;:28;;:60;;;;;20521:8;;20501:16;:28;;20469:60;20461:143;;;::::0;-1:-1:-1;;;20461:143:0;;23028:2:1;20461:143:0::1;::::0;::::1;23010:21:1::0;23067:2;23047:18;;;23040:30;23106:34;23086:18;;;23079:62;23177:34;23157:18;;;23150:62;-1:-1:-1;;;23228:19:1;;;23221:37;23275:19;;20461:143:0::1;22826:474:1::0;20461:143:0::1;20626:7;:19:::0;;;20656:17:::1;:36:::0;;;20703:8:::1;:21:::0;;;20735:13:::1;:31:::0;;;20777:13:::1;:31:::0;;;20714:10;20830:29:::1;20793:15:::0;20751;20830:29:::1;:::i;:::-;:40;;;;:::i;:::-;20819:8;:51:::0;;;20888:29:::1;::::0;;23479:25:1;;;23520:18;;;23513:34;;;;20888:29:0::1;::::0;23452:18:1;20888:29:0::1;;;;;;;20010:915;19856:1069:::0;;;;;:::o;16808:623::-;6991:6;;-1:-1:-1;;;;;6991:6:0;1443:10;7048:23;7040:68;;;;-1:-1:-1;;;7040:68:0;;;;;;;:::i;:::-;16941:15:::1;:22;16923:7;:14;:40;16915:83;;;::::0;-1:-1:-1;;;16915:83:0;;23760:2:1;16915:83:0::1;::::0;::::1;23742:21:1::0;23799:2;23779:18;;;23772:30;23838:32;23818:18;;;23811:60;23888:18;;16915:83:0::1;23558:354:1::0;16915:83:0::1;17034:3;17017:7;:14;:20;17009:87;;;::::0;-1:-1:-1;;;17009:87:0;;24119:2:1;17009:87:0::1;::::0;::::1;24101:21:1::0;24158:2;24138:18;;;24131:30;24197:34;24177:18;;;24170:62;-1:-1:-1;;;24248:18:1;;;24241:52;24310:19;;17009:87:0::1;23917:418:1::0;17009:87:0::1;17209:9;17205:219;17228:7;:14;17224:1;:18;17205:219;;;17263:14;17280:7;17288:1;17280:10;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;17347:7:::1;::::0;17280:10;;-1:-1:-1;17305:14:0::1;::::0;17343:11:::1;::::0;17347:7:::1;;17343:2;:11;:::i;:::-;17322:15;17338:1;17322:18;;;;;;;;:::i;:::-;;;;;;;:32;;;;:::i;:::-;17305:49;;17369:43;17385:10;17397:6;17405;17369:15;:43::i;:::-;17248:176;;17244:3;;;;;:::i;:::-;;;;17205:219;;;;16808:623:::0;;:::o;1923:19::-;;;;;;;:::i;15336:639::-;15391:12;15405:13;15420:15;15437;15487:20;;15469:15;:38;15465:472;;;15573:5;15554:15;15531:20;;:38;;;;:::i;:::-;15530:48;;;;:::i;:::-;15523:55;-1:-1:-1;15659:4:0;15643:12;15523:55;15650:5;15643:12;:::i;:::-;15625:15;15602:20;;:38;;;;:::i;:::-;:53;;;;:::i;:::-;15601:62;;;;:::i;:::-;15593:70;-1:-1:-1;15762:2:0;15745:12;15593:70;15753:4;15745:12;:::i;:::-;15730;:4;15737:5;15730:12;:::i;:::-;15712:15;15689:20;;:38;;;;:::i;:::-;:53;;;;:::i;:::-;:68;;;;:::i;:::-;15688:76;;;;:::i;:::-;15678:86;-1:-1:-1;15860:12:0;15678:86;15870:2;15860:12;:::i;:::-;15845;:5;15853:4;15845:12;:::i;:::-;15830;:4;15837:5;15830:12;:::i;:::-;15812:15;15789:20;;:38;;;;:::i;:::-;:53;;;;:::i;:::-;:68;;;;:::i;:::-;:83;;;;:::i;:::-;15779:93;;15887:38;;15465:472;-1:-1:-1;15956:1:0;;-1:-1:-1;15956:1:0;;-1:-1:-1;15956:1:0;;-1:-1:-1;15956:1:0;15336:639;;;;;:::o;18367:1479::-;6991:6;;-1:-1:-1;;;;;6991:6:0;1443:10;7048:23;7040:68;;;;-1:-1:-1;;;7040:68:0;;;;;;;:::i;:::-;18535:14:::1;18552;2448:12:::0;;;2370:92;18552:14:::1;18535:31:::0;-1:-1:-1;18613:12:0::1;18622:3;18535:31:::0;18613:12:::1;:::i;:::-;18602:7;::::0;18598:11:::1;::::0;18602:7:::1;;18598:2;:11;:::i;:::-;18585:24;::::0;:10;:24:::1;:::i;:::-;:40;;:78;;;;-1:-1:-1::0;18646:7:0::1;::::0;18657:6;;18642:11:::1;::::0;18646:7:::1;;18642:2;:11;:::i;:::-;18629:24;::::0;:10;:24:::1;:::i;:::-;:34;;18585:78;18577:150;;;::::0;-1:-1:-1;;;18577:150:0;;26287:2:1;18577:150:0::1;::::0;::::1;26269:21:1::0;26326:2;26306:18;;;26299:30;26365:34;26345:18;;;26338:62;26436:29;26416:18;;;26409:57;26483:19;;18577:150:0::1;26085:423:1::0;18577:150:0::1;18772:13;18781:4;18772:6:::0;:13:::1;:::i;:::-;18761:7;::::0;18757:11:::1;::::0;18761:7:::1;;18757:2;:11;:::i;:::-;18746:22;::::0;:8;:22:::1;:::i;:::-;:39;;:75;;;;-1:-1:-1::0;18804:7:0::1;::::0;18815:6;;18800:11:::1;::::0;18804:7:::1;;18800:2;:11;:::i;:::-;18789:22;::::0;:8;:22:::1;:::i;:::-;:32;;18746:75;18738:148;;;::::0;-1:-1:-1;;;18738:148:0;;26715:2:1;18738:148:0::1;::::0;::::1;26697:21:1::0;26754:2;26734:18;;;26727:30;26793:34;26773:18;;;26766:62;26864:29;26844:18;;;26837:57;26911:19;;18738:148:0::1;26513:423:1::0;18738:148:0::1;18931:14;18940:5;18931:6:::0;:14:::1;:::i;:::-;18920:7;::::0;18916:11:::1;::::0;18920:7:::1;;18916:2;:11;:::i;:::-;18905:22;::::0;:8;:22:::1;:::i;:::-;:40;;:68;;;;-1:-1:-1::0;18961:12:0::1;18972:1;18961:8:::0;:12:::1;:::i;:::-;18949:8;:24;;18905:68;18897:140;;;::::0;-1:-1:-1;;;18897:140:0;;27143:2:1;18897:140:0::1;::::0;::::1;27125:21:1::0;27182:2;27162:18;;;27155:30;27221:34;27201:18;;;27194:62;27292:28;27272:18;;;27265:56;27338:19;;18897:140:0::1;26941:422:1::0;18897:140:0::1;19066:1;19056:6;:11;;:27;;;;;19081:2;19071:6;:12;;19056:27;19048:91;;;::::0;-1:-1:-1;;;19048:91:0;;27570:2:1;19048:91:0::1;::::0;::::1;27552:21:1::0;27609:2;27589:18;;;27582:30;27648:34;27628:18;;;27621:62;-1:-1:-1;;;27699:18:1;;;27692:49;27758:19;;19048:91:0::1;27368:415:1::0;19048:91:0::1;19170:10;:8:::0;19179:1:::1;19170:10;:::i;:::-;19158:8;:22;;:58;;;;-1:-1:-1::0;19199:7:0::1;::::0;19210:6;;19195:11:::1;::::0;19199:7:::1;;19195:2;:11;:::i;:::-;19184:22;::::0;:8;:22:::1;:::i;:::-;:32;;19158:58;19150:123;;;::::0;-1:-1:-1;;;19150:123:0;;27990:2:1;19150:123:0::1;::::0;::::1;27972:21:1::0;28029:2;28009:18;;;28002:30;28068:34;28048:18;;;28041:62;-1:-1:-1;;;28119:18:1;;;28112:49;28178:19;;19150:123:0::1;27788:415:1::0;19150:123:0::1;19286:7;:18:::0;;;19346:7:::1;::::0;19342:11:::1;::::0;19346:7:::1;;19342:2;:11;:::i;:::-;19332:7;;:21;;;;:::i;:::-;19315:14;:38:::0;19364:9:::1;:22:::0;;;19431:7:::1;::::0;19427:11:::1;::::0;19431:7:::1;;19427:2;:11;:::i;:::-;19415:9;;:23;;;;:::i;:::-;19397:15;:41:::0;19449:7:::1;:18:::0;;;19519:7:::1;::::0;19515:11:::1;::::0;19519:7:::1;;19515:2;:11;:::i;:::-;19505:7;;:21;;;;:::i;:::-;19478:24;:48:::0;19537:7:::1;:18:::0;;;19601:7:::1;::::0;19597:11:::1;::::0;19601:7:::1;;19597:2;:11;:::i;:::-;19587:7;;:21;;;;:::i;:::-;19566:18;:42:::0;19619:8:::1;:17:::0;;;19648:21:::1;:46:::0;;-1:-1:-1;;;;19648:46:0::1;-1:-1:-1::0;;;19648:46:0;::::1;;;;::::0;;19710:60:::1;::::0;;28467:25:1;;;28523:2;28508:18;;28501:34;;;28551:18;;;28544:34;;;28609:2;28594:18;;28587:34;;;28652:3;28637:19;;28630:35;;;19710:60:0::1;::::0;28454:3:1;28439:19;19710:60:0::1;;;;;;;19786:52;::::0;2750:14:1;;2743:22;2725:41;;19786:52:0::1;::::0;2713:2:1;2698:18;19786:52:0::1;;;;;;;18524:1322;18367:1479:::0;;;;;;:::o;22239:763::-;6991:6;;-1:-1:-1;;;;;6991:6:0;1443:10;7048:23;7040:68;;;;-1:-1:-1;;;7040:68:0;;;;;;;:::i;:::-;22360:14:::1;::::0;-1:-1:-1;;;22360:14:0;::::1;;;:23;22351:57;;;::::0;-1:-1:-1;;;22351:57:0;;28878:2:1;22351:57:0::1;::::0;::::1;28860:21:1::0;28917:2;28897:18;;;28890:30;-1:-1:-1;;;28936:18:1;;;28929:50;28996:18;;22351:57:0::1;28676:344:1::0;22351:57:0::1;22437:2;22427:6;:12;;22419:42;;;::::0;-1:-1:-1;;;22419:42:0;;29227:2:1;22419:42:0::1;::::0;::::1;29209:21:1::0;29266:2;29246:18;;;29239:30;-1:-1:-1;;;29285:18:1;;;29278:47;29342:18;;22419:42:0::1;29025:341:1::0;22419:42:0::1;22476:21;22501:1;22476:26:::0;22472:482:::1;;22529:14;:21:::0;;-1:-1:-1;;;;22529:21:0::1;-1:-1:-1::0;;;22529:21:0::1;::::0;;22575::::1;22590:6:::0;22575:12:::1;:21;:::i;:::-;22565:7;:31:::0;22472:482:::1;;;22639:25;22690:20;:15:::0;22706:4:::1;22690:20;:::i;:::-;22667;:14:::0;22682:5:::1;22667:20;:::i;:::-;:43;;;;:::i;:::-;22639:71:::0;-1:-1:-1;22748:35:0::1;22639:71:::0;22748:15:::1;:35;:::i;:::-;22725:20;:58:::0;22830:4:::1;2542:7:::0;2559:18;;;;;;;;;;;22798:62:::1;::::0;22838:21:::1;22798:12;:62::i;:::-;22875:14;:21:::0;;-1:-1:-1;;;;22875:21:0::1;-1:-1:-1::0;;;22875:21:0::1;::::0;;22921::::1;22936:6:::0;22921:12:::1;:21;:::i;:::-;22911:7;:31:::0;-1:-1:-1;22472:482:0::1;22979:14;::::0;22969:25:::1;::::0;-1:-1:-1;;;22979:14:0;;::::1;;;2750::1::0;2743:22;2725:41;;22969:25:0::1;::::0;2713:2:1;2698:18;22969:25:0::1;2585:187:1::0;8140:115:0;8210:11;;-1:-1:-1;;;;;8210:11:0;8196:10;:25;8188:34;;;;;;8224:11;;:29;;-1:-1:-1;;;;;8224:11:0;;;;:29;;;;;8245:7;;8224:11;:29;:11;:29;8245:7;8224:11;:29;;;;;;;;;;;;;;;;;;;7294:244;6991:6;;-1:-1:-1;;;;;6991:6:0;1443:10;7048:23;7040:68;;;;-1:-1:-1;;;7040:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7383:22:0;::::1;7375:73;;;::::0;-1:-1:-1;;;7375:73:0;;29573:2:1;7375:73:0::1;::::0;::::1;29555:21:1::0;29612:2;29592:18;;;29585:30;29651:34;29631:18;;;29624:62;-1:-1:-1;;;29702:18:1;;;29695:36;29748:19;;7375:73:0::1;29371:402:1::0;7375:73:0::1;7485:6;::::0;7464:38:::1;::::0;-1:-1:-1;;;;;7464:38:0;;::::1;::::0;7485:6:::1;::::0;7464:38:::1;::::0;7485:6:::1;::::0;7464:38:::1;7513:6;:17:::0;;-1:-1:-1;;;;;;7513:17:0::1;-1:-1:-1::0;;;;;7513:17:0;;;::::1;::::0;;;::::1;::::0;;7294:244::o;7989:145::-;8073:11;;-1:-1:-1;;;;;8073:11:0;8059:10;:25;8051:34;;;;;;8111:11;;8087:45;;-1:-1:-1;;;8087:45:0;;-1:-1:-1;;;;;8111:11:0;;;8087:45;;;19963:51:1;20030:18;;;20023:34;;;8087:23:0;;;;;;19936:18:1;;8087:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21228:370::-;6991:6;;-1:-1:-1;;;;;6991:6:0;1443:10;7048:23;7040:68;;;;-1:-1:-1;;;7040:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21346:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;:35;::::1;;:28;::::0;;::::1;:35;;::::0;21337:68:::1;;;::::0;-1:-1:-1;;;21337:68:0;;30267:2:1;21337:68:0::1;::::0;::::1;30249:21:1::0;30306:2;30286:18;;;30279:30;-1:-1:-1;;;30325:18:1;;;30318:49;30384:18;;21337:68:0::1;30065:343:1::0;21337:68:0::1;-1:-1:-1::0;;;;;21416:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;:34;;-1:-1:-1;;21416:34:0;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;21461:20:::1;:29:::0;;;;;:37;;;::::1;::::0;::::1;;;::::0;;21509:14:::1;:23:::0;;;;;;:35;;;;::::1;::::0;::::1;;;::::0;;;21560:30;2725:41:1;;;21560:30:0::1;::::0;2698:18:1;21560:30:0::1;;;;;;;21228:370:::0;;;;:::o;5434:346::-;-1:-1:-1;;;;;5536:19:0;;5528:68;;;;-1:-1:-1;;;5528:68:0;;30615:2:1;5528:68:0;;;30597:21:1;30654:2;30634:18;;;30627:30;30693:34;30673:18;;;30666:62;-1:-1:-1;;;30744:18:1;;;30737:34;30788:19;;5528:68:0;30413:400:1;5528:68:0;-1:-1:-1;;;;;5615:21:0;;5607:68;;;;-1:-1:-1;;;5607:68:0;;31020:2:1;5607:68:0;;;31002:21:1;31059:2;31039:18;;;31032:30;31098:34;31078:18;;;31071:62;-1:-1:-1;;;31149:18:1;;;31142:32;31191:19;;5607:68:0;30818:398:1;5607:68:0;-1:-1:-1;;;;;5688:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5740:32;;2923:25:1;;;5740:32:0;;2896:18:1;5740:32:0;;;;;;;;5434:346;;;:::o;26545:2007::-;-1:-1:-1;;;;;26643:18:0;;26635:61;;;;-1:-1:-1;;;26635:61:0;;31423:2:1;26635:61:0;;;31405:21:1;31462:2;31442:18;;;31435:30;31501:32;31481:18;;;31474:60;31551:18;;26635:61:0;31221:354:1;26635:61:0;-1:-1:-1;;;;;26715:16:0;;26707:57;;;;-1:-1:-1;;;26707:57:0;;31782:2:1;26707:57:0;;;31764:21:1;31821:2;31801:18;;;31794:30;31860;31840:18;;;31833:58;31908:18;;26707:57:0;31580:352:1;26707:57:0;26780:6;26790:1;26780:11;26777:25;;26545:2007;;;:::o;26777:25::-;26918:14;;-1:-1:-1;;;26918:14:0;;;;26914:79;;-1:-1:-1;;;;;26943:20:0;;;;;;:14;:20;;;;;;;;26935:56;;;;-1:-1:-1;;;26935:56:0;;32139:2:1;26935:56:0;;;32121:21:1;32178:2;32158:18;;;32151:30;32217:25;32197:18;;;32190:53;32260:18;;26935:56:0;31937:347:1;26935:56:0;-1:-1:-1;;;;;27009:18:0;;;;;;:14;:18;;;;;;;;27005:163;;-1:-1:-1;;;;;27032:19:0;;27046:4;27032:19;;;;:39;;-1:-1:-1;27061:10:0;;-1:-1:-1;;;;;27055:16:0;;;27061:10;;27055:16;;27032:39;27029:138;;;27109:15;;27098:6;27082:13;27092:2;-1:-1:-1;;;;;2559:18:0;2542:7;2559:18;;;;;;;;;;;;2468:111;27082:13;:22;;;;:::i;:::-;27081:43;;27073:92;;;;-1:-1:-1;;;27073:92:0;;32491:2:1;27073:92:0;;;32473:21:1;32530:2;32510:18;;;32503:30;32569:34;32549:18;;;32542:62;-1:-1:-1;;;32620:18:1;;;32613:34;32664:19;;27073:92:0;32289:400:1;27073:92:0;-1:-1:-1;;;;;27181:29:0;;;;;;:25;:29;;;;;;;;:62;;;;-1:-1:-1;;;;;;27216:26:0;;;;;;:20;:26;;;;;;;;27215:27;27181:62;:93;;;;-1:-1:-1;;;;;;27249:24:0;;;;;;:20;:24;;;;;;;;27248:25;27181:93;27178:205;;;27294:24;;27284:6;:34;;27276:105;;;;-1:-1:-1;;;27276:105:0;;32896:2:1;27276:105:0;;;32878:21:1;32935:2;32915:18;;;32908:30;32974:34;32954:18;;;32947:62;33045:28;33025:18;;;33018:56;33091:19;;27276:105:0;32694:422:1;27276:105:0;27399:11;;-1:-1:-1;;;27399:11:0;;;;:36;;;;-1:-1:-1;;;;;;27415:20:0;;;;;;:14;:20;;;;;;;;27414:21;27399:36;:69;;;;-1:-1:-1;;;;;;27439:29:0;;;;;;:25;:29;;;;;;;;27399:69;27395:233;;;27515:7;;-1:-1:-1;;;;;27494:18:0;;;;;;:12;:18;;;;;;27526:12;;27494:28;;;:::i;:::-;:44;;27485:83;;;;-1:-1:-1;;;27485:83:0;;33323:2:1;27485:83:0;;;33305:21:1;33362:2;33342:18;;;33335:30;33401:27;33381:18;;;33374:55;33446:18;;27485:83:0;33121:349:1;27485:83:0;-1:-1:-1;;;;;27583:18:0;;;;;;:12;:18;;;;;27604:12;27583:33;;27395:233;27689:4;27640:28;2559:18;;;;;;;;;;;27745;;27801:14;;27721:42;;;;;27777:38;;27774:82;;27840:14;;27817:37;;27774:82;27905:21;;-1:-1:-1;;;27905:21:0;;;;:32;;;;;27930:7;27905:32;:45;;;;-1:-1:-1;27942:8:0;;-1:-1:-1;;;27942:8:0;;;;27941:9;27905:45;:81;;;;-1:-1:-1;;;;;;27955:31:0;;;;;;:25;:31;;;;;;;;27954:32;27905:81;:106;;;;-1:-1:-1;;;;;;27991:20:0;;;;;;:14;:20;;;;;;;;27990:21;27905:106;:129;;;;-1:-1:-1;;;;;;28016:18:0;;;;;;:14;:18;;;;;;;;28015:19;27905:129;:160;;;;;28051:8;;28040;;:19;;;;:::i;:::-;28039:26;;27905:160;27901:291;;;28083:8;:15;;-1:-1:-1;;;;28083:15:0;-1:-1:-1;;;28083:15:0;;;28113:36;28128:20;28113:14;:36::i;:::-;28164:8;:16;;-1:-1:-1;;;;28164:16:0;;;27901:291;-1:-1:-1;;;;;28248:25:0;;28204:20;28248:25;;;:19;:25;;;;;;28227:6;;28248:25;;28247:26;:54;;;;-1:-1:-1;;;;;;28278:23:0;;;;;;:19;:23;;;;;;;;28277:24;28247:54;28244:102;;;28319:25;28327:4;28333:2;28337:6;28319:7;:25::i;:::-;28304:40;;28244:102;28365:10;;-1:-1:-1;;;;;28365:10:0;;;28359:16;;;;28356:189;;28378:30;28390:4;28395:12;28378:11;:30::i;:::-;28356:189;;;28491:10;;-1:-1:-1;;;;;28485:16:0;;;28491:10;;28485:16;28482:63;;28504:39;28520:4;28526:2;28530:12;28504:15;:39::i;:::-;26624:1928;;;26545:2007;;;:::o;30368:227::-;30519:20;;30503:13;:36;30495:45;;;;;;30551:20;:36;30368:227::o;24282:307::-;-1:-1:-1;;;;;24374:31:0;;;;;;:25;:31;;;;;;:40;;;:31;;;;:40;;;24366:109;;;;-1:-1:-1;;;24366:109:0;;33677:2:1;24366:109:0;;;33659:21:1;33716:2;33696:18;;;33689:30;33755:34;33735:18;;;33728:62;33826:26;33806:18;;;33799:54;33870:19;;24366:109:0;33475:420:1;24366:109:0;-1:-1:-1;;;;;24486:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;24486:39:0;;;;;;;;;;24541:40;;24486:39;;:31;24541:40;;;24282:307;;:::o;4146:556::-;-1:-1:-1;;;;;4252:20:0;;4244:70;;;;-1:-1:-1;;;4244:70:0;;34102:2:1;4244:70:0;;;34084:21:1;34141:2;34121:18;;;34114:30;34180:34;34160:18;;;34153:62;-1:-1:-1;;;34231:18:1;;;34224:35;34276:19;;4244:70:0;33900:401:1;4244:70:0;-1:-1:-1;;;;;4333:23:0;;4325:71;;;;-1:-1:-1;;;4325:71:0;;34508:2:1;4325:71:0;;;34490:21:1;34547:2;34527:18;;;34520:30;34586:34;34566:18;;;34559:62;-1:-1:-1;;;34637:18:1;;;34630:33;34680:19;;4325:71:0;34306:399:1;4325:71:0;-1:-1:-1;;;;;4433:17:0;;4409:21;4433:17;;;;;;;;;;;4469:23;;;;4461:74;;;;-1:-1:-1;;;4461:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4557:17:0;;;:9;:17;;;;;;;;;;;4577:22;;;4557:42;;4611:20;;;;;;;;:30;;4593:6;;4557:9;4611:30;;4593:6;;4611:30;:::i;:::-;;;;;;;;4676:9;-1:-1:-1;;;;;4659:35:0;4668:6;-1:-1:-1;;;;;4659:35:0;;4687:6;4659:35;;;;2923:25:1;;2911:2;2896:18;;2777:177;4659:35:0;;;;;;;;4233:469;4146:556;;;:::o;29610:358::-;29744:11;;29729:4;29691:17;2876:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;29744:11:0;;;2876:27;;;;;;;;;29711:60;;29760:11;;29711:60;:::i;:::-;29814:11;;29691:80;;-1:-1:-1;29782:56:0;;29799:4;;-1:-1:-1;;;;;29814:11:0;29691:80;29782:8;:56::i;:::-;29849:11;;:111;;-1:-1:-1;;;29849:111:0;;29903:4;29849:111;;;35458:34:1;;;35508:18;;;35501:34;;;29849:11:0;35551:18:1;;;35544:34;;;35594:18;;;35587:34;35637:19;;;35630:44;29944:15:0;35690:19:1;;;35683:35;-1:-1:-1;;;;;29849:11:0;;;;:27;;29884:9;;35392:19:1;;29849:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;28560:1041::-;28633:20;28667:8;;28656;;:19;;;;:::i;:::-;28823:8;;28812;;28633:42;;-1:-1:-1;28711:21:0;;28686:22;;28812:19;;;:::i;:::-;28807:1;28791:13;;28768:20;:36;;;;:::i;:::-;:40;;;;:::i;:::-;:64;;;;:::i;:::-;28753:79;;28853:18;28938:4;28925:8;;28914;;:19;;;;:::i;:::-;28875:35;28898:12;28875:20;:35;:::i;:::-;:59;;;;:::i;:::-;28874:68;;;;:::i;:::-;28853:89;;28953:28;28970:10;28953:16;:28::i;:::-;28992:18;29013:38;29037:14;29013:21;:38;:::i;:::-;28992:59;;29064:27;29162:1;29146:13;;:17;;;;:::i;:::-;29130:34;;:12;:34;:::i;:::-;29124:1;29108:13;;29095:10;:26;;;;:::i;:::-;:30;;;;:::i;:::-;29094:71;;;;:::i;:::-;29064:101;;29263:1;29247:13;;:17;;;;:::i;:::-;29231:34;;:12;:34;:::i;:::-;29213:13;;29200:26;;:10;:26;:::i;:::-;29199:67;;;;:::i;:::-;29176:19;;:90;;;;;;;:::i;:::-;;;;-1:-1:-1;;29290:13:0;;:18;29287:156;;29325:39;29338:4;29344:19;29325:12;:39::i;:::-;29384:47;;;216:25:1;;;272:2;257:18;;250:34;;;300:18;;;293:34;;;29384:47:0;;204:2:1;189:18;29384:47:0;;;;;;;29287:156;29458:19;;:24;29455:139;;29499:15;;29524:19;;29499:45;;-1:-1:-1;;;;;29499:15:0;;;;:45;;;;;29524:19;29499:15;:45;:15;:45;29524:19;29499:15;:45;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29581:1:0;29559:19;:23;29455:139;28622:979;;;;;;28560:1041;:::o;24601:1936::-;-1:-1:-1;;;;;24860:31:0;;24678:7;24860:31;;;:25;:31;;;;;;24678:7;;;;;;24860:31;;24856:1391;;;24956:14;;-1:-1:-1;;;24956:14:0;;;;:40;;;;;24989:7;;24974:12;:22;24956:40;:63;;;;-1:-1:-1;;;;;;25001:18:0;;;;;;:14;:18;;;;;;;;25000:19;24956:63;:98;;;;-1:-1:-1;;;;;;25023:31:0;;;;;;:25;:31;;;;;;;;24956:98;24952:404;;;25096:3;25082:11;:6;25091:2;25082:11;:::i;:::-;:17;;;;:::i;:::-;25075:24;-1:-1:-1;25148:3:0;25134:11;:6;25143:2;25134:11;:::i;:::-;:17;;;;:::i;:::-;25118:33;;24856:1391;;24952:404;25177:7;;:12;25173:183;;25236:3;25226:7;;25217:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;25210:29;;25313:3;25302:8;;25293:6;:17;;;;:::i;25173:183::-;24856:1391;;;-1:-1:-1;;;;;25395:29:0;;;;;;:25;:29;;;;;;;;25392:855;;;25482:8;;-1:-1:-1;;;25482:8:0;;;;:33;;;;-1:-1:-1;;;;;;25495:20:0;;;;;;:14;:20;;;;;;;;25494:21;25482:33;25478:308;;;25589:20;25602:6;25589:12;:20::i;:::-;25578:31;-1:-1:-1;25632:12:0;;25628:143;;25673:9;;-1:-1:-1;;;25673:9:0;;;;25669:43;;;25685:25;25702:8;25685:25;;:::i;:::-;;;25669:43;25735:16;25743:8;25735:16;;:::i;:::-;;;25628:143;25803:8;;:13;25800:185;;25865:3;25854:8;;25845:6;:17;;;;:::i;:::-;:23;;;;:::i;:::-;25837:31;;;;:::i;:::-;;;25942:3;25931:8;;25922:6;:17;;;;:::i;:::-;:23;;;;:::i;:::-;25907:38;;;;:::i;25392:855::-;-1:-1:-1;;;;;26006:31:0;;;;;;:25;:31;;;;;;;;26005:32;:66;;;;-1:-1:-1;;;;;;26042:29:0;;;;;;:25;:29;;;;;;;;26041:30;26005:66;:92;;;;-1:-1:-1;26075:17:0;;:22;;26005:92;26002:245;;;26150:3;26130:17;;26121:6;:26;;;;:::i;:::-;:32;;;;:::i;:::-;26114:39;;26202:3;26191:8;;26182:6;:17;;;;:::i;:::-;:23;;;;:::i;:::-;26168:37;;26002:245;26258:21;26266:13;26258:21;;:::i;:::-;;-1:-1:-1;26341:18:0;;26337:59;;26362:32;26374:4;26380:13;26362:11;:32::i;:::-;26428:8;;26425:58;;26439:42;26455:4;26469;26476;26439:15;:42::i;:::-;26516:13;26500;26509:4;26500:6;:13;:::i;:::-;:29;;;;:::i;:::-;26493:36;24601:1936;-1:-1:-1;;;;;;;24601:1936:0:o;4710:432::-;-1:-1:-1;;;;;4793:20:0;;4785:59;;;;-1:-1:-1;;;4785:59:0;;36242:2:1;4785:59:0;;;36224:21:1;36281:2;36261:18;;;36254:30;36320:28;36300:18;;;36293:56;36366:18;;4785:59:0;36040:350:1;4785:59:0;-1:-1:-1;;;;;4882:17:0;;4858:21;4882:17;;;;;;;;;;;4918:23;;;;4910:74;;;;-1:-1:-1;;;4910:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5006:17:0;;:9;:17;;;;;;;;;;5026:22;;;5006:42;;5060:12;:22;;5042:6;;5006:9;5060:22;;5042:6;;5060:22;:::i;:::-;;;;-1:-1:-1;;5098:36:0;;2923:25:1;;;5123:1:0;;-1:-1:-1;;;;;5098:36:0;;;;;2911:2:1;2896:18;5098:36:0;2777:177:1;29977:383:0;30067:16;;;30081:1;30067:16;;;;;;;;30043:21;;30067:16;;;;;;;;;;-1:-1:-1;30067:16:0;30043:40;;30112:4;30094;30099:1;30094:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30094:23:0;;;:7;;;;;;;;;;:23;;;;30138:11;;:18;;;-1:-1:-1;;;30138:18:0;;;;:11;;;;;:16;;:18;;;;;30094:7;;30138:18;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30128:4;30133:1;30128:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30128:28:0;;;:7;;;;;;;;;:28;30199:11;;30167:58;;30184:4;;30199:11;30213;30167:8;:58::i;:::-;30236:11;;:116;;-1:-1:-1;;;30236:116:0;;-1:-1:-1;;;;;30236:11:0;;;;:62;;:116;;30299:11;;30236;;30315:4;;30329;;30336:15;;30236:116;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30603:409;30711:9;-1:-1:-1;;;;;2559:18:0;30665:7;2559:18;;;;;;;;;;;30755:7;;30665;;30765:3;;30747:15;;30755:7;;2559:18;30747:15;:::i;:::-;:21;;;;:::i;:::-;30802:7;;30732:36;;-1:-1:-1;30779:12:0;;30812:3;;30794:15;;30802:7;;;;;30794:5;:15;:::i;:::-;:21;;;;:::i;:::-;30779:36;;30840:4;30830:6;:14;30826:37;;-1:-1:-1;30862:1:0;;30603:409;-1:-1:-1;;;;30603:409:0:o;30826:37::-;30887:4;30878:6;:13;30874:52;;;30909:11;;30923:3;;30900:20;;30909:11;;;;;30900:6;:20;:::i;:::-;:26;;;;:::i;:::-;30893:33;30603:409;-1:-1:-1;;;;;30603:409:0:o;30874:52::-;31001:3;30987:9;30992:4;30987;:9;:::i;:::-;30962:11;;30976:6;;30962:11;;;;;30947;30954:4;30976:6;30947:11;:::i;:::-;30946:27;;;;:::i;:::-;:36;;;;:::i;:::-;30945:52;;;;:::i;338:131:1:-;-1:-1:-1;;;;;413:31:1;;403:42;;393:70;;459:1;456;449:12;393:70;338:131;:::o;474:247::-;533:6;586:2;574:9;565:7;561:23;557:32;554:52;;;602:1;599;592:12;554:52;641:9;628:23;660:31;685:5;660:31;:::i;:::-;710:5;474:247;-1:-1:-1;;;474:247:1:o;1712:548::-;1824:4;1853:2;1882;1871:9;1864:21;1914:6;1908:13;1957:6;1952:2;1941:9;1937:18;1930:34;1982:1;1992:140;2006:6;2003:1;2000:13;1992:140;;;2101:14;;;2097:23;;2091:30;2067:17;;;2086:2;2063:26;2056:66;2021:10;;1992:140;;;1996:3;2181:1;2176:2;2167:6;2156:9;2152:22;2148:31;2141:42;2251:2;2244;2240:7;2235:2;2227:6;2223:15;2219:29;2208:9;2204:45;2200:54;2192:62;;;;1712:548;;;;:::o;2265:315::-;2333:6;2341;2394:2;2382:9;2373:7;2369:23;2365:32;2362:52;;;2410:1;2407;2400:12;2362:52;2449:9;2436:23;2468:31;2493:5;2468:31;:::i;:::-;2518:5;2570:2;2555:18;;;;2542:32;;-1:-1:-1;;;2265:315:1:o;2959:118::-;3045:5;3038:13;3031:21;3024:5;3021:32;3011:60;;3067:1;3064;3057:12;3082:156;3148:20;;3208:4;3197:16;;3187:27;;3177:55;;3228:1;3225;3218:12;3177:55;3082:156;;;:::o;3243:588::-;3326:6;3334;3342;3350;3358;3411:3;3399:9;3390:7;3386:23;3382:33;3379:53;;;3428:1;3425;3418:12;3379:53;3467:9;3454:23;3486:28;3508:5;3486:28;:::i;:::-;3533:5;-1:-1:-1;3590:2:1;3575:18;;3562:32;3603:30;3562:32;3603:30;:::i;:::-;3652:7;-1:-1:-1;3678:36:1;3710:2;3695:18;;3678:36;:::i;:::-;3668:46;;3733:36;3765:2;3754:9;3750:18;3733:36;:::i;:::-;3723:46;;3788:37;3820:3;3809:9;3805:19;3788:37;:::i;:::-;3778:47;;3243:588;;;;;;;;:::o;3836:456::-;3913:6;3921;3929;3982:2;3970:9;3961:7;3957:23;3953:32;3950:52;;;3998:1;3995;3988:12;3950:52;4037:9;4024:23;4056:31;4081:5;4056:31;:::i;:::-;4106:5;-1:-1:-1;4163:2:1;4148:18;;4135:32;4176:33;4135:32;4176:33;:::i;:::-;3836:456;;4228:7;;-1:-1:-1;;;4282:2:1;4267:18;;;;4254:32;;3836:456::o;4486:309::-;4551:6;4559;4612:2;4600:9;4591:7;4587:23;4583:32;4580:52;;;4628:1;4625;4618:12;4580:52;4667:9;4654:23;4686:28;4708:5;4686:28;:::i;5026:180::-;5085:6;5138:2;5126:9;5117:7;5113:23;5109:32;5106:52;;;5154:1;5151;5144:12;5106:52;-1:-1:-1;5177:23:1;;5026:180;-1:-1:-1;5026:180:1:o;6391:248::-;6459:6;6467;6520:2;6508:9;6499:7;6495:23;6491:32;6488:52;;;6536:1;6533;6526:12;6488:52;-1:-1:-1;;6559:23:1;;;6629:2;6614:18;;;6601:32;;-1:-1:-1;6391:248:1:o;6644:382::-;6709:6;6717;6770:2;6758:9;6749:7;6745:23;6741:32;6738:52;;;6786:1;6783;6776:12;6738:52;6825:9;6812:23;6844:31;6869:5;6844:31;:::i;:::-;6894:5;-1:-1:-1;6951:2:1;6936:18;;6923:32;6964:30;6923:32;6964:30;:::i;:::-;7013:7;7003:17;;;6644:382;;;;;:::o;7420:454::-;7515:6;7523;7531;7539;7547;7600:3;7588:9;7579:7;7575:23;7571:33;7568:53;;;7617:1;7614;7607:12;7568:53;-1:-1:-1;;7640:23:1;;;7710:2;7695:18;;7682:32;;-1:-1:-1;7761:2:1;7746:18;;7733:32;;7812:2;7797:18;;7784:32;;-1:-1:-1;7863:3:1;7848:19;7835:33;;-1:-1:-1;7420:454:1;-1:-1:-1;7420:454:1:o;7879:127::-;7940:10;7935:3;7931:20;7928:1;7921:31;7971:4;7968:1;7961:15;7995:4;7992:1;7985:15;8011:275;8082:2;8076:9;8147:2;8128:13;;-1:-1:-1;;8124:27:1;8112:40;;8182:18;8167:34;;8203:22;;;8164:62;8161:88;;;8229:18;;:::i;:::-;8265:2;8258:22;8011:275;;-1:-1:-1;8011:275:1:o;8291:183::-;8351:4;8384:18;8376:6;8373:30;8370:56;;;8406:18;;:::i;:::-;-1:-1:-1;8451:1:1;8447:14;8463:4;8443:25;;8291:183::o;8479:662::-;8533:5;8586:3;8579:4;8571:6;8567:17;8563:27;8553:55;;8604:1;8601;8594:12;8553:55;8640:6;8627:20;8666:4;8690:60;8706:43;8746:2;8706:43;:::i;:::-;8690:60;:::i;:::-;8784:15;;;8870:1;8866:10;;;;8854:23;;8850:32;;;8815:12;;;;8894:15;;;8891:35;;;8922:1;8919;8912:12;8891:35;8958:2;8950:6;8946:15;8970:142;8986:6;8981:3;8978:15;8970:142;;;9052:17;;9040:30;;9090:12;;;;9003;;8970:142;;;-1:-1:-1;9130:5:1;8479:662;-1:-1:-1;;;;;;8479:662:1:o;9146:1215::-;9264:6;9272;9325:2;9313:9;9304:7;9300:23;9296:32;9293:52;;;9341:1;9338;9331:12;9293:52;9381:9;9368:23;9410:18;9451:2;9443:6;9440:14;9437:34;;;9467:1;9464;9457:12;9437:34;9505:6;9494:9;9490:22;9480:32;;9550:7;9543:4;9539:2;9535:13;9531:27;9521:55;;9572:1;9569;9562:12;9521:55;9608:2;9595:16;9630:4;9654:60;9670:43;9710:2;9670:43;:::i;9654:60::-;9748:15;;;9830:1;9826:10;;;;9818:19;;9814:28;;;9779:12;;;;9854:19;;;9851:39;;;9886:1;9883;9876:12;9851:39;9910:11;;;;9930:217;9946:6;9941:3;9938:15;9930:217;;;10026:3;10013:17;10043:31;10068:5;10043:31;:::i;:::-;10087:18;;9963:12;;;;10125;;;;9930:217;;;10166:5;-1:-1:-1;;10209:18:1;;10196:32;;-1:-1:-1;;10240:16:1;;;10237:36;;;10269:1;10266;10259:12;10237:36;;10292:63;10347:7;10336:8;10325:9;10321:24;10292:63;:::i;:::-;10282:73;;;9146:1215;;;;;:::o;11302:584::-;11403:6;11411;11419;11427;11435;11443;11496:3;11484:9;11475:7;11471:23;11467:33;11464:53;;;11513:1;11510;11503:12;11464:53;11549:9;11536:23;11526:33;;11606:2;11595:9;11591:18;11578:32;11568:42;;11657:2;11646:9;11642:18;11629:32;11619:42;;11708:2;11697:9;11693:18;11680:32;11670:42;;11759:3;11748:9;11744:19;11731:33;11721:43;;11814:3;11803:9;11799:19;11786:33;11828:28;11850:5;11828:28;:::i;:::-;11875:5;11865:15;;;11302:584;;;;;;;;:::o;11891:388::-;11959:6;11967;12020:2;12008:9;11999:7;11995:23;11991:32;11988:52;;;12036:1;12033;12026:12;11988:52;12075:9;12062:23;12094:31;12119:5;12094:31;:::i;:::-;12144:5;-1:-1:-1;12201:2:1;12186:18;;12173:32;12214:33;12173:32;12214:33;:::i;12284:316::-;12361:6;12369;12377;12430:2;12418:9;12409:7;12405:23;12401:32;12398:52;;;12446:1;12443;12436:12;12398:52;-1:-1:-1;;12469:23:1;;;12539:2;12524:18;;12511:32;;-1:-1:-1;12590:2:1;12575:18;;;12562:32;;12284:316;-1:-1:-1;12284:316:1:o;12868:653::-;12945:6;12953;12961;12969;13022:3;13010:9;13001:7;12997:23;12993:33;12990:53;;;13039:1;13036;13029:12;12990:53;13078:9;13065:23;13097:31;13122:5;13097:31;:::i;:::-;13147:5;-1:-1:-1;13204:2:1;13189:18;;13176:32;13217:30;13176:32;13217:30;:::i;:::-;13266:7;-1:-1:-1;13325:2:1;13310:18;;13297:32;13338:30;13297:32;13338:30;:::i;:::-;13387:7;-1:-1:-1;13446:2:1;13431:18;;13418:32;13459:30;13418:32;13459:30;:::i;:::-;12868:653;;;;-1:-1:-1;12868:653:1;;-1:-1:-1;;12868:653:1:o;13526:127::-;13587:10;13582:3;13578:20;13575:1;13568:31;13618:4;13615:1;13608:15;13642:4;13639:1;13632:15;13658:128;13725:9;;;13746:11;;;13743:37;;;13760:18;;:::i;13791:380::-;13870:1;13866:12;;;;13913;;;13934:61;;13988:4;13980:6;13976:17;13966:27;;13934:61;14041:2;14033:6;14030:14;14010:18;14007:38;14004:161;;14087:10;14082:3;14078:20;14075:1;14068:31;14122:4;14119:1;14112:15;14150:4;14147:1;14140:15;14004:161;;13791:380;;;:::o;16150:125::-;16215:9;;;16236:10;;;16233:36;;;16249:18;;:::i;16280:356::-;16482:2;16464:21;;;16501:18;;;16494:30;16560:34;16555:2;16540:18;;16533:62;16627:2;16612:18;;16280:356::o;17482:251::-;17552:6;17605:2;17593:9;17584:7;17580:23;17576:32;17573:52;;;17621:1;17618;17611:12;17573:52;17653:9;17647:16;17672:31;17697:5;17672:31;:::i;17738:127::-;17799:10;17794:3;17790:20;17787:1;17780:31;17830:4;17827:1;17820:15;17854:4;17851:1;17844:15;17870:461;17923:3;17961:5;17955:12;17988:6;17983:3;17976:19;18014:4;18043:2;18038:3;18034:12;18027:19;;18080:2;18073:5;18069:14;18101:1;18111:195;18125:6;18122:1;18119:13;18111:195;;;18190:13;;-1:-1:-1;;;;;18186:39:1;18174:52;;18246:12;;;;18281:15;;;;18222:1;18140:9;18111:195;;;-1:-1:-1;18322:3:1;;17870:461;-1:-1:-1;;;;;17870:461:1:o;18336:510::-;18607:6;18596:9;18589:25;18650:3;18645:2;18634:9;18630:18;18623:31;18570:4;18671:57;18723:3;18712:9;18708:19;18700:6;18671:57;:::i;:::-;-1:-1:-1;;;;;18764:32:1;;;;18759:2;18744:18;;18737:60;-1:-1:-1;18828:2:1;18813:18;18806:34;18663:65;18336:510;-1:-1:-1;;18336:510:1:o;19600:184::-;19670:6;19723:2;19711:9;19702:7;19698:23;19694:32;19691:52;;;19739:1;19736;19729:12;19691:52;-1:-1:-1;19762:16:1;;19600:184;-1:-1:-1;19600:184:1:o;20068:245::-;20135:6;20188:2;20176:9;20167:7;20163:23;20159:32;20156:52;;;20204:1;20201;20194:12;20156:52;20236:9;20230:16;20255:28;20277:5;20255:28;:::i;20318:168::-;20391:9;;;20422;;20439:15;;;20433:22;;20419:37;20409:71;;20460:18;;:::i;24340:422::-;24429:1;24472:5;24429:1;24486:270;24507:7;24497:8;24494:21;24486:270;;;24566:4;24562:1;24558:6;24554:17;24548:4;24545:27;24542:53;;;24575:18;;:::i;:::-;24625:7;24615:8;24611:22;24608:55;;;24645:16;;;;24608:55;24724:22;;;;24684:15;;;;24486:270;;;24490:3;24340:422;;;;;:::o;24767:806::-;24816:5;24846:8;24836:80;;-1:-1:-1;24887:1:1;24901:5;;24836:80;24935:4;24925:76;;-1:-1:-1;24972:1:1;24986:5;;24925:76;25017:4;25035:1;25030:59;;;;25103:1;25098:130;;;;25010:218;;25030:59;25060:1;25051:10;;25074:5;;;25098:130;25135:3;25125:8;25122:17;25119:43;;;25142:18;;:::i;:::-;-1:-1:-1;;25198:1:1;25184:16;;25213:5;;25010:218;;25312:2;25302:8;25299:16;25293:3;25287:4;25284:13;25280:36;25274:2;25264:8;25261:16;25256:2;25250:4;25247:12;25243:35;25240:77;25237:159;;;-1:-1:-1;25349:19:1;;;25381:5;;25237:159;25428:34;25453:8;25447:4;25428:34;:::i;:::-;25498:6;25494:1;25490:6;25486:19;25477:7;25474:32;25471:58;;;25509:18;;:::i;:::-;25547:20;;24767:806;-1:-1:-1;;;24767:806:1:o;25578:140::-;25636:5;25665:47;25706:4;25696:8;25692:19;25686:4;25665:47;:::i;25723:135::-;25762:3;25783:17;;;25780:43;;25803:18;;:::i;:::-;-1:-1:-1;25850:1:1;25839:13;;25723:135::o;25863:217::-;25903:1;25929;25919:132;;25973:10;25968:3;25964:20;25961:1;25954:31;26008:4;26005:1;25998:15;26036:4;26033:1;26026:15;25919:132;-1:-1:-1;26065:9:1;;25863:217::o;34710:402::-;34912:2;34894:21;;;34951:2;34931:18;;;34924:30;34990:34;34985:2;34970:18;;34963:62;-1:-1:-1;;;35056:2:1;35041:18;;35034:36;35102:3;35087:19;;34710:402::o;35729:306::-;35817:6;35825;35833;35886:2;35874:9;35865:7;35861:23;35857:32;35854:52;;;35902:1;35899;35892:12;35854:52;35931:9;35925:16;35915:26;;35981:2;35970:9;35966:18;35960:25;35950:35;;36025:2;36014:9;36010:18;36004:25;35994:35;;35729:306;;;;;:::o;36395:582::-;36694:6;36683:9;36676:25;36737:6;36732:2;36721:9;36717:18;36710:34;36780:3;36775:2;36764:9;36760:18;36753:31;36657:4;36801:57;36853:3;36842:9;36838:19;36830:6;36801:57;:::i;:::-;-1:-1:-1;;;;;36894:32:1;;;;36889:2;36874:18;;36867:60;-1:-1:-1;36958:3:1;36943:19;36936:35;36793:65;36395:582;-1:-1:-1;;;36395:582:1:o
Swarm Source
ipfs://5681036d742d62cc09bfd472026f24ef1a2e5abfc980fdc80156920f3c8a5e13
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.