Contract Address Details
0x420E7A174Eb616a5a77EB113Cb14Eb1d20DE6CB1
- Token
- ArabianDoge (ADoge)
- Creator
- 0xc830dc–a6d75d at 0x80a899–596290
- Balance
- 242.297881734667005375 Doge
- Tokens
-
Fetching tokens...
- Transactions
- 953 Transactions
- Transfers
- 3,112 Transfers
- Gas Used
- 42,679,327
- Last Balance Update
- 27080920
Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
- Contract name:
- ArabianDoge
- Optimization enabled
- true
- Compiler version
- v0.8.7+commit.e28d00a7
- Optimization runs
- 200
- EVM Version
- default
- Verified at
- 2022-08-22T18:39:35.272403Z
Contract source code
pragma solidity ^0.8.7; //SPDX-License-Identifier: UNLICENSED interface IDOGE { 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); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } interface IDOGEMetadata is IDOGE { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract DOGE is Context, IDOGE, IDOGEMetadata { mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; uint256 private _totalSupply; string private _name; string private _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, "DOGE: transfer amount exceeds allowance"); _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, "DOGE: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "DOGE: transfer from the zero address"); require(recipient != address(0), "DOGE: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "DOGE: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `to` cannot be the zero address. */ function _tokengeneration(address account, uint256 amount) internal virtual { require(account != address(0), "DOGE: generation to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = amount; _balances[account] = amount; emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "DOGE: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "DOGE: burn amount exceeds balance"); _balances[account] = accountBalance - amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "DOGE: approve from the zero address"); require(spender != address(0), "DOGE: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * generation and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be generated for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library Address { function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_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 { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WWDOGE() external pure returns (address); function addLiquidityWDOGE( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountWDOGEMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountWDOGE, uint256 liquidity ); function swapExactTokensForWDOGESupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract ArabianDoge is DOGE, Ownable { IRouter public router; using Address for address payable; address public pair; bool private _liquidityMutex = false; bool public Swapliquify = false; bool public tradingEnabled = false; uint256 public trading_start; uint256 private Earlybuy = 5; uint256 public swapThreshold = 10_000_000 * 10**18; uint256 public maxBuyLimit = 100_000_000 * 10**18; uint256 public maxSellLimit = 50_000_000 * 10**18; uint256 public maxWalletLimit = 50_000_000 * 10**18; address public marketingWallet = 0x6E090F3782D5a0039bBeBd56604bf0b4f8029e08; address public devWallet = 0x9d98a13E0b73DcaF9d5247876891ea460684d2D8; address public constant deadWallet = 0x000000000000000000000000000000000000dEaD; struct Taxes { uint256 marketing; uint256 liquidity; uint256 dev; } Taxes public taxes = Taxes(7, 2, 1); Taxes public sellTaxes = Taxes(7, 2, 1); mapping(address => bool) public taxexempt; mapping(address => bool) public isBot; uint256 private launchtax = 99; //Anti Dump mapping(address => uint256) private _lastSell; bool public coolDownEnabled = false; uint256 public coolDownTime = 60 seconds; modifier mutexLock() { if (!_liquidityMutex) { _liquidityMutex = true; _; _liquidityMutex = false; } } constructor() DOGE("ArabianDoge", "ADoge") { _tokengeneration(msg.sender, 1e10 * 10**decimals()); taxexempt[msg.sender] = true; IRouter _router = IRouter(0xa4EE06Ce40cb7e8c04E127c1F7D3dFB7F7039C81); // Create a pair for this new token address _pair = IFactory(_router.factory()).createPair(address(this), _router.WWDOGE()); router = _router; pair = _pair; taxexempt[address(this)] = true; taxexempt[marketingWallet] = true; taxexempt[devWallet] = true; taxexempt[deadWallet] = true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "DOGE: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public override returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public override returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "DOGE: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal override { require(amount > 0, "Transfer amount must be greater than zero"); require( !isBot[sender] && !isBot[recipient], "You can't transfer tokens" ); if (!taxexempt[sender] && !taxexempt[recipient]) { require(tradingEnabled, "Trading not enabled"); } if (sender == pair && !taxexempt[recipient] && !_liquidityMutex) { require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit"); require( balanceOf(recipient) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } if ( sender != pair && !taxexempt[recipient] && !taxexempt[sender] && !_liquidityMutex ) { require(amount <= maxSellLimit, "You are exceeding maxSellLimit"); if (recipient != pair) { require( balanceOf(recipient) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } if (coolDownEnabled) { uint256 timePassed = block.timestamp - _lastSell[sender]; require(timePassed >= coolDownTime, "Cooldown enabled"); _lastSell[sender] = block.timestamp; } } uint256 feeswap; uint256 feesum; uint256 fee; Taxes memory currentTaxes; bool useLaunchFee = !taxexempt[sender] && !taxexempt[recipient] && block.number < trading_start + Earlybuy; //set fee to zero if fees in contract are handled or exempted if (_liquidityMutex || taxexempt[sender] || taxexempt[recipient]) fee = 0; //calculate fee else if (recipient == pair && !useLaunchFee) { feeswap = sellTaxes.liquidity + sellTaxes.marketing + sellTaxes.dev ; feesum = feeswap; currentTaxes = sellTaxes; } else if (!useLaunchFee) { feeswap = taxes.liquidity + taxes.marketing + taxes.dev ; feesum = feeswap; currentTaxes = taxes; } else if (useLaunchFee) { feeswap = launchtax; feesum = launchtax; } fee = (amount * feesum) / 100; //send fees if threshold has been reached //don't do this on buys, breaks swap if (Swapliquify && sender != pair) handle_fees(feeswap, currentTaxes); //rest to recipient super._transfer(sender, recipient, amount - fee); if (fee > 0) { //send the fee to the contract if (feeswap > 0) { uint256 feeAmount = (amount * feeswap) / 100; super._transfer(sender, address(this), feeAmount); } } } function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock { if(feeswap == 0){ return; } uint256 contractBalance = balanceOf(address(this)); if (contractBalance >= swapThreshold) { if (swapThreshold > 1) { contractBalance = swapThreshold; } // Split the contract balance into halves uint256 denominator = feeswap * 2; uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) / denominator; uint256 toSwap = contractBalance - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForWDOGE(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity); uint256 dogeToAddLiquidityWith = unitBalance * swapTaxes.liquidity; if (dogeToAddLiquidityWith > 0) { // Add liquidity addLiquidity(tokensToAddLiquidityWith, dogeToAddLiquidityWith); } uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing; if (marketingAmt > 0) { payable(marketingWallet).sendValue(marketingAmt); } uint256 devAmt = unitBalance * 2 * swapTaxes.dev; if (devAmt > 0) { payable(devWallet).sendValue(devAmt); } } } function swapTokensForWDOGE(uint256 tokenAmount) private { // generate the pair path of token -> WDOGE address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WWDOGE(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForWDOGESupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 wdogeAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityWDOGE{ value: wdogeAmount }( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function updateLiquidityProvide(bool state) external onlyOwner { //update liquidity providing state Swapliquify = state; } function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner { //update the treshhold swapThreshold = new_amount * 10**decimals(); } function UpdateBuyTaxes( uint256 _marketing, uint256 _liquidity, uint256 _dev ) external onlyOwner { require((_marketing + _liquidity + _dev) <= 20, "Must keep fees at 20% or less"); taxes = Taxes(_marketing,_liquidity, _dev); } function SetSellTaxes( uint256 _marketing, uint256 _liquidity, uint256 _dev ) external onlyOwner { require(_dev >= 1,"Dev Tax can't go lower than 1%"); require((_marketing + _liquidity + _dev) <= 20, "Must keep fees at 20% or less"); sellTaxes = Taxes(_marketing,_liquidity, _dev); } function updateRouterAndPair(address newRouter, address newPair) external onlyOwner { router = IRouter(newRouter); pair = newPair; } function enableTrading() external onlyOwner { require(!tradingEnabled, "Trading is already enabled"); tradingEnabled = true; Swapliquify = true; trading_start = block.number; } function updateEarlybuy(uint256 _Earlybuy) external onlyOwner { require(!tradingEnabled, "Can't change when trading has started"); require (_Earlybuy < 5,"Earlybuy should be less than 5"); Earlybuy = _Earlybuy; } function updateMarketingWallet(address newWallet) external onlyOwner { marketingWallet = newWallet; } function updateDevWallet(address newWallet) external { require(msg.sender == devWallet,"Current Dev Wallet can update the address only"); devWallet = newWallet; } function updateCooldown(bool state, uint256 time) external onlyOwner { coolDownTime = time * 1 seconds; coolDownEnabled = state; require(time <= 60, "cooldown timer cannot exceed 1 minutes"); } function airdropTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner{ require(accounts.length == amounts.length, "Arrays must have same size"); for(uint256 i; i< accounts.length; i++){ super._transfer(msg.sender, accounts[i], amounts[i]); } } function bulkisBot(address[] memory accounts, bool state) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { isBot[accounts[i]] = state; } } function updateisBot(address account, bool state) external onlyOwner { isBot[account] = state; } function updateTaxexempt(address _address, bool state) external onlyOwner { taxexempt[_address] = state; } function bulkTaxexempt(address[] memory accounts, bool state) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { taxexempt[accounts[i]] = state; } } function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner { require( maxBuy >= 10_000_000, "Cannot set max buy amount lower than 0.1%" ); require( maxSell >= 10_000_000, "Cannot set max sell amount lower than 0.1%" ); require( maxWallet >= 10_000_000, "Cannot set max wallet amount lower than 0.1%" ); maxBuyLimit = maxBuy * 10**decimals(); maxSellLimit = maxSell * 10**decimals(); maxWalletLimit = maxWallet * 10**decimals(); } function rescueDOGE(uint256 weiAmount) external onlyOwner { payable(owner()).transfer(weiAmount); } function rescueDOGETOKENS(address tokenAdd, uint256 amount) external onlyOwner { IDOGE(tokenAdd).transfer(owner(), amount); } // fallbacks receive() external payable {} }
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SetSellTaxes","inputs":[{"type":"uint256","name":"_marketing","internalType":"uint256"},{"type":"uint256","name":"_liquidity","internalType":"uint256"},{"type":"uint256","name":"_dev","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"Swapliquify","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"UpdateBuyTaxes","inputs":[{"type":"uint256","name":"_marketing","internalType":"uint256"},{"type":"uint256","name":"_liquidity","internalType":"uint256"},{"type":"uint256","name":"_dev","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"airdropTokens","inputs":[{"type":"address[]","name":"accounts","internalType":"address[]"},{"type":"uint256[]","name":"amounts","internalType":"uint256[]"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"bulkTaxexempt","inputs":[{"type":"address[]","name":"accounts","internalType":"address[]"},{"type":"bool","name":"state","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"bulkisBot","inputs":[{"type":"address[]","name":"accounts","internalType":"address[]"},{"type":"bool","name":"state","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"coolDownEnabled","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"coolDownTime","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"deadWallet","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"devWallet","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"enableTrading","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isBot","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"marketingWallet","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxBuyLimit","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxSellLimit","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxWalletLimit","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pair","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"rescueDOGE","inputs":[{"type":"uint256","name":"weiAmount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"rescueDOGETOKENS","inputs":[{"type":"address","name":"tokenAdd","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IRouter"}],"name":"router","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"marketing","internalType":"uint256"},{"type":"uint256","name":"liquidity","internalType":"uint256"},{"type":"uint256","name":"dev","internalType":"uint256"}],"name":"sellTaxes","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"swapThreshold","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"marketing","internalType":"uint256"},{"type":"uint256","name":"liquidity","internalType":"uint256"},{"type":"uint256","name":"dev","internalType":"uint256"}],"name":"taxes","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"taxexempt","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"tradingEnabled","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"trading_start","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateCooldown","inputs":[{"type":"bool","name":"state","internalType":"bool"},{"type":"uint256","name":"time","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateDevWallet","inputs":[{"type":"address","name":"newWallet","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateEarlybuy","inputs":[{"type":"uint256","name":"_Earlybuy","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateLiquidityProvide","inputs":[{"type":"bool","name":"state","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateLiquidityTreshhold","inputs":[{"type":"uint256","name":"new_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateMarketingWallet","inputs":[{"type":"address","name":"newWallet","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateMaxTxLimit","inputs":[{"type":"uint256","name":"maxBuy","internalType":"uint256"},{"type":"uint256","name":"maxSell","internalType":"uint256"},{"type":"uint256","name":"maxWallet","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateRouterAndPair","inputs":[{"type":"address","name":"newRouter","internalType":"address"},{"type":"address","name":"newPair","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateTaxexempt","inputs":[{"type":"address","name":"_address","internalType":"address"},{"type":"bool","name":"state","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateisBot","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"bool","name":"state","internalType":"bool"}]},{"type":"receive","stateMutability":"payable"}]
Contract Creation Code
0x6007805462ffffff60a01b1916815560056009556a084595161401484a000000600a556a52b7d2dcc80cd2e4000000600b556a295be96e64066972000000600c819055600d55600e80546001600160a01b0319908116736e090f3782d5a0039bbebd56604bf0b4f8029e0817909155600f8054909116739d98a13e0b73dcaf9d5247876891ea460684d2d81790556080819052600260a0819052600160c081905260108390556011829055601281905561014060405260e08390526101008290526101208190526013929092556014556015556063601855601a805460ff19169055603c601b55348015620000f357600080fd5b50604080518082018252600b81526a4172616269616e446f676560a81b60208083019182528351808501909452600584526441446f676560d81b908401528151919291620001449160039162000505565b5080516200015a90600490602084019062000505565b5050506200017762000171620003f460201b60201c565b620003f8565b620001a1336200018a6012600a62000626565b6200019b906402540be400620006e7565b6200044a565b336000908152601660209081526040808320805460ff19166001179055805163c45a015560e01b8152905173a4ee06ce40cb7e8c04e127c1f7d3dfb7f7039c819392849263c45a01559260048083019392829003018186803b1580156200020757600080fd5b505afa1580156200021c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002429190620005ab565b6001600160a01b031663c9c6539630846001600160a01b0316634ed154606040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028b57600080fd5b505afa158015620002a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c69190620005ab565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200030f57600080fd5b505af115801562000324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034a9190620005ab565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260166020526040808220805460ff199081166001908117909255600e54851684528284208054821683179055600f549094168352908220805484168217905561dead9091527f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b5780549092161790556200075c565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620004b15760405162461bcd60e51b8152602060048201526024808201527f444f47453a2067656e65726174696f6e20746f20746865207a65726f206164646044820152637265737360e01b606482015260840160405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b828054620005139062000709565b90600052602060002090601f01602090048101928262000537576000855562000582565b82601f106200055257805160ff191683800117855562000582565b8280016001018555821562000582579182015b828111156200058257825182559160200191906001019062000565565b506200059092915062000594565b5090565b5b8082111562000590576000815560010162000595565b600060208284031215620005be57600080fd5b81516001600160a01b0381168114620005d657600080fd5b9392505050565b600181815b808511156200061e57816000190482111562000602576200060262000746565b808516156200061057918102915b93841c9390800290620005e2565b509250929050565b6000620005d660ff8416836000826200064257506001620006e1565b816200065157506000620006e1565b81600181146200066a5760028114620006755762000695565b6001915050620006e1565b60ff84111562000689576200068962000746565b50506001821b620006e1565b5060208310610133831016604e8410600b8410161715620006ba575081810a620006e1565b620006c68383620005dd565b8060001904821115620006dd57620006dd62000746565b0290505b92915050565b600081600019048311821515161562000704576200070462000746565b500290565b600181811c908216806200071e57607f821691505b602082108114156200074057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b612db4806200076c6000396000f3fe6080604052600436106102cd5760003560e01c806385141a7711610175578063acb6c7a8116100dc578063ee36e35911610095578063f66895a31161006f578063f66895a3146108d2578063f770c379146108f1578063f887ea4014610911578063f8bba9e81461093157600080fd5b8063ee36e35914610878578063f2fde38b14610892578063f5b4b0ec146108b257600080fd5b8063acb6c7a81461078c578063d2ce0db2146107ac578063dd62ed3e146107c2578063e16a491714610808578063e1b450ad14610838578063e517f2b91461085857600080fd5b80639ca3fb481161012e5780639ca3fb48146106cc5780639d282cd6146106ec578063a457c2d71461070c578063a8aa1b311461072c578063a9059cbb1461074c578063aacebbe31461076c57600080fd5b806385141a771461062d5780638a8c523c146106435780638da5cb5b146106585780638ea5220f146106765780638fa043131461069657806395d89b41146106b757600080fd5b806340b28c2f1161023457806366a88d96116101ed57806370a08231116101c757806370a0823114610570578063715018a6146105a6578063728f8eea146105bb57806375f0a874146105f557600080fd5b806366a88d96146105245780636aa5b37f1461053a578063706f69371461055057600080fd5b806340b28c2f1461047757806342b6fa11146104975780634ada218b146104b75780634e736f22146104d857806354be01a7146104f8578063652e2f041461050e57600080fd5b80631816467f116102865780631816467f146103ab57806323b872dd146103cb5780632b5f0670146103eb578063313ce5671461040b57806339509351146104275780633bbac5791461044757600080fd5b80630445b667146102d9578063065875f51461030257806306fdde0314610324578063095ea7b3146103465780631340538f1461037657806318160ddd1461039657600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ef600a5481565b6040519081526020015b60405180910390f35b34801561030e57600080fd5b5061032261031d3660046127e7565b610951565b005b34801561033057600080fd5b506103396109af565b6040516102f99190612a15565b34801561035257600080fd5b50610366610361366004612815565b610a41565b60405190151581526020016102f9565b34801561038257600080fd5b5061032261039136600461294a565b610a58565b3480156103a257600080fd5b506002546102ef565b3480156103b757600080fd5b506103226103c636600461272c565b610aa0565b3480156103d757600080fd5b506103666103e63660046127a6565b610b33565b3480156103f757600080fd5b506103226104063660046129a2565b610be3565b34801561041757600080fd5b50604051601281526020016102f9565b34801561043357600080fd5b50610366610442366004612815565b610cca565b34801561045357600080fd5b5061036661046236600461272c565b60176020526000908152604090205460ff1681565b34801561048357600080fd5b5061032261049236600461276d565b610d01565b3480156104a357600080fd5b506103226104b23660046129a2565b610d59565b3480156104c357600080fd5b5060075461036690600160b01b900460ff1681565b3480156104e457600080fd5b506103226104f33660046129bb565b610d9f565b34801561050457600080fd5b506102ef60085481565b34801561051a57600080fd5b506102ef600c5481565b34801561053057600080fd5b506102ef600d5481565b34801561054657600080fd5b506102ef600b5481565b34801561055c57600080fd5b5061032261056b366004612841565b610ea5565b34801561057c57600080fd5b506102ef61058b36600461272c565b6001600160a01b031660009081526020819052604090205490565b3480156105b257600080fd5b50610322610f80565b3480156105c757600080fd5b506010546011546012546105da92919083565b604080519384526020840192909252908201526060016102f9565b34801561060157600080fd5b50600e54610615906001600160a01b031681565b6040516001600160a01b0390911681526020016102f9565b34801561063957600080fd5b5061061561dead81565b34801561064f57600080fd5b50610322610fb6565b34801561066457600080fd5b506005546001600160a01b0316610615565b34801561068257600080fd5b50600f54610615906001600160a01b031681565b3480156106a257600080fd5b5060075461036690600160a81b900460ff1681565b3480156106c357600080fd5b50610339611055565b3480156106d857600080fd5b506103226106e7366004612903565b611064565b3480156106f857600080fd5b506103226107073660046129bb565b6110f5565b34801561071857600080fd5b50610366610727366004612815565b6111aa565b34801561073857600080fd5b50600754610615906001600160a01b031681565b34801561075857600080fd5b50610366610767366004612815565b611243565b34801561077857600080fd5b5061032261078736600461272c565b611250565b34801561079857600080fd5b506103226107a7366004612903565b61129c565b3480156107b857600080fd5b506102ef601b5481565b3480156107ce57600080fd5b506102ef6107dd36600461276d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561081457600080fd5b5061036661082336600461272c565b60166020526000908152604090205460ff1681565b34801561084457600080fd5b506103226108533660046129bb565b61132d565b34801561086457600080fd5b50610322610873366004612984565b6114da565b34801561088457600080fd5b50601a546103669060ff1681565b34801561089e57600080fd5b506103226108ad36600461272c565b611584565b3480156108be57600080fd5b506103226108cd3660046127e7565b61161f565b3480156108de57600080fd5b506013546014546015546105da92919083565b3480156108fd57600080fd5b5061032261090c366004612815565b611674565b34801561091d57600080fd5b50600654610615906001600160a01b031681565b34801561093d57600080fd5b5061032261094c3660046129a2565b61173f565b6005546001600160a01b031633146109845760405162461bcd60e51b815260040161097b90612a6a565b60405180910390fd5b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6060600380546109be90612cc3565b80601f01602080910402602001604051908101604052809291908181526020018280546109ea90612cc3565b8015610a375780601f10610a0c57610100808354040283529160200191610a37565b820191906000526020600020905b815481529060010190602001808311610a1a57829003601f168201915b5050505050905090565b6000610a4e3384846117a3565b5060015b92915050565b6005546001600160a01b03163314610a825760405162461bcd60e51b815260040161097b90612a6a565b60078054911515600160a81b0260ff60a81b19909216919091179055565b600f546001600160a01b03163314610b115760405162461bcd60e51b815260206004820152602e60248201527f43757272656e74204465762057616c6c65742063616e2075706461746520746860448201526d652061646472657373206f6e6c7960901b606482015260840161097b565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610b408484846118c6565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bc45760405162461bcd60e51b815260206004820152602760248201527f444f47453a207472616e7366657220616d6f756e74206578636565647320616c6044820152666c6f77616e636560c81b606482015260840161097b565b610bd88533610bd38685612cac565b6117a3565b506001949350505050565b6005546001600160a01b03163314610c0d5760405162461bcd60e51b815260040161097b90612a6a565b600754600160b01b900460ff1615610c755760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b606482015260840161097b565b60058110610cc55760405162461bcd60e51b815260206004820152601e60248201527f4561726c796275792073686f756c64206265206c657373207468616e20350000604482015260640161097b565b600955565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a4e918590610bd3908690612b65565b6005546001600160a01b03163314610d2b5760405162461bcd60e51b815260040161097b90612a6a565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610d835760405162461bcd60e51b815260040161097b90612a6a565b610d8f6012600a612be2565b610d999082612c8d565b600a5550565b6005546001600160a01b03163314610dc95760405162461bcd60e51b815260040161097b90612a6a565b6001811015610e1a5760405162461bcd60e51b815260206004820152601e60248201527f446576205461782063616e277420676f206c6f776572207468616e2031250000604482015260640161097b565b601481610e278486612b65565b610e319190612b65565b1115610e7f5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c657373000000604482015260640161097b565b604080516060810182528481526020810184905201819052601392909255601455601555565b6005546001600160a01b03163314610ecf5760405162461bcd60e51b815260040161097b90612a6a565b8051825114610f205760405162461bcd60e51b815260206004820152601a60248201527f417272617973206d75737420686176652073616d652073697a65000000000000604482015260640161097b565b60005b8251811015610f7b57610f6933848381518110610f4257610f42612d2f565b6020026020010151848481518110610f5c57610f5c612d2f565b6020026020010151611fa8565b80610f7381612cfe565b915050610f23565b505050565b6005546001600160a01b03163314610faa5760405162461bcd60e51b815260040161097b90612a6a565b610fb4600061217c565b565b6005546001600160a01b03163314610fe05760405162461bcd60e51b815260040161097b90612a6a565b600754600160b01b900460ff161561103a5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161097b565b6007805461ffff60a81b191661010160a81b17905543600855565b6060600480546109be90612cc3565b6005546001600160a01b0316331461108e5760405162461bcd60e51b815260040161097b90612a6a565b60005b8251811015610f7b5781601760008584815181106110b1576110b1612d2f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806110ed81612cfe565b915050611091565b6005546001600160a01b0316331461111f5760405162461bcd60e51b815260040161097b90612a6a565b60148161112c8486612b65565b6111369190612b65565b11156111845760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c657373000000604482015260640161097b565b604080516060810182528481526020810184905201819052601092909255601155601255565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561122a5760405162461bcd60e51b8152602060048201526024808201527f444f47453a2064656372656173656420616c6c6f77616e63652062656c6f77206044820152637a65726f60e01b606482015260840161097b565b6112393385610bd38685612cac565b5060019392505050565b6000610a4e3384846118c6565b6005546001600160a01b0316331461127a5760405162461bcd60e51b815260040161097b90612a6a565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112c65760405162461bcd60e51b815260040161097b90612a6a565b60005b8251811015610f7b5781601660008584815181106112e9576112e9612d2f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061132581612cfe565b9150506112c9565b6005546001600160a01b031633146113575760405162461bcd60e51b815260040161097b90612a6a565b629896808310156113bc5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b606482015260840161097b565b629896808210156114225760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b606482015260840161097b565b6298968081101561148a5760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e312560a01b606482015260840161097b565b6114966012600a612be2565b6114a09084612c8d565b600b556114af6012600a612be2565b6114b99083612c8d565b600c556114c86012600a612be2565b6114d29082612c8d565b600d55505050565b6005546001600160a01b031633146115045760405162461bcd60e51b815260040161097b90612a6a565b61150f816001612c8d565b601b55601a805460ff1916831515179055603c8111156115805760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642031206d604482015265696e7574657360d01b606482015260840161097b565b5050565b6005546001600160a01b031633146115ae5760405162461bcd60e51b815260040161097b90612a6a565b6001600160a01b0381166116135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161097b565b61161c8161217c565b50565b6005546001600160a01b031633146116495760405162461bcd60e51b815260040161097b90612a6a565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461169e5760405162461bcd60e51b815260040161097b90612a6a565b816001600160a01b031663a9059cbb6116bf6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b15801561170757600080fd5b505af115801561171b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7b9190612967565b6005546001600160a01b031633146117695760405162461bcd60e51b815260040161097b90612a6a565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611580573d6000803e3d6000fd5b6001600160a01b0383166118055760405162461bcd60e51b815260206004820152602360248201527f444f47453a20617070726f76652066726f6d20746865207a65726f206164647260448201526265737360e81b606482015260840161097b565b6001600160a01b0382166118655760405162461bcd60e51b815260206004820152602160248201527f444f47453a20617070726f766520746f20746865207a65726f206164647265736044820152607360f81b606482015260840161097b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116119285760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161097b565b6001600160a01b03831660009081526017602052604090205460ff1615801561196a57506001600160a01b03821660009081526017602052604090205460ff16155b6119b65760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e7300000000000000604482015260640161097b565b6001600160a01b03831660009081526016602052604090205460ff161580156119f857506001600160a01b03821660009081526016602052604090205460ff16155b15611a4c57600754600160b01b900460ff16611a4c5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161097b565b6007546001600160a01b038481169116148015611a8257506001600160a01b03821660009081526016602052604090205460ff16155b8015611a985750600754600160a01b900460ff16155b15611b6a57600b54811115611aef5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d6974000000604482015260640161097b565b600d5481611b12846001600160a01b031660009081526020819052604090205490565b611b1c9190612b65565b1115611b6a5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161097b565b6007546001600160a01b03848116911614801590611ba157506001600160a01b03821660009081526016602052604090205460ff16155b8015611bc657506001600160a01b03831660009081526016602052604090205460ff16155b8015611bdc5750600754600160a01b900460ff16155b15611d5557600c54811115611c335760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d69740000604482015260640161097b565b6007546001600160a01b03838116911614611cc357600d5481611c6b846001600160a01b031660009081526020819052604090205490565b611c759190612b65565b1115611cc35760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161097b565b601a5460ff1615611d55576001600160a01b038316600090815260196020526040812054611cf19042612cac565b9050601b54811015611d385760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b604482015260640161097b565b506001600160a01b03831660009081526019602052604090204290555b6000806000611d7e60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b03871660009081526016602052604081205460ff16158015611dc057506001600160a01b03871660009081526016602052604090205460ff16155b8015611dda5750600954600854611dd79190612b65565b43105b600754909150600160a01b900460ff1680611e0d57506001600160a01b03881660009081526016602052604090205460ff165b80611e3057506001600160a01b03871660009081526016602052604090205460ff165b15611e3e5760009250611f08565b6007546001600160a01b038881169116148015611e59575080155b15611ea957601554601354601454611e719190612b65565b611e7b9190612b65565b6040805160608101825260135481526014546020820152601554918101919091529095508594509150611f08565b80611ef957601254601054601154611ec19190612b65565b611ecb9190612b65565b6040805160608101825260105481526011546020820152601254918101919091529095508594509150611f08565b8015611f085760185494508493505b6064611f148588612c8d565b611f1e9190612b7d565b600754909350600160a81b900460ff168015611f4857506007546001600160a01b03898116911614155b15611f5757611f5785836121ce565b611f6b8888611f66868a612cac565b611fa8565b8215611f9e578415611f9e5760006064611f858789612c8d565b611f8f9190612b7d565b9050611f9c893083611fa8565b505b5050505050505050565b6001600160a01b03831661200a5760405162461bcd60e51b8152602060048201526024808201527f444f47453a207472616e736665722066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161097b565b6001600160a01b03821661206b5760405162461bcd60e51b815260206004820152602260248201527f444f47453a207472616e7366657220746f20746865207a65726f206164647265604482015261737360f01b606482015260840161097b565b6001600160a01b038316600090815260208190526040902054818110156120e25760405162461bcd60e51b815260206004820152602560248201527f444f47453a207472616e7366657220616d6f756e7420657863656564732062616044820152646c616e636560d81b606482015260840161097b565b6120ec8282612cac565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290612122908490612b65565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161216e91815260200190565b60405180910390a350505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16611580576007805460ff60a01b1916600160a01b179055816121fc5761233a565b30600090815260208190526040902054600a548110612338576001600a5411156122255750600a545b6000612232846002612c8d565b90506000818460200151846122479190612c8d565b6122519190612b7d565b9050600061225f8285612cac565b90504761226b8261234b565b60006122778247612cac565b9050600087602001518661228b9190612cac565b6122959083612b7d565b905060008860200151826122a99190612c8d565b905080156122bb576122bb86826124b4565b88516000906122cb846002612c8d565b6122d59190612c8d565b905080156122f357600e546122f3906001600160a01b031682612598565b60408a0151600090612306856002612c8d565b6123109190612c8d565b9050801561232e57600f5461232e906001600160a01b031682612598565b5050505050505050505b505b6007805460ff60a01b191690555050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061238057612380612d2f565b6001600160a01b03928316602091820292909201810191909152600654604080516302768aa360e51b815290519190931692634ed15460926004808301939192829003018186803b1580156123d457600080fd5b505afa1580156123e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240c9190612750565b8160018151811061241f5761241f612d2f565b6001600160a01b03928316602091820292909201015260065461244591309116846117a3565b60065460405163b43d9bbb60e01b81526001600160a01b039091169063b43d9bbb9061247e908590600090869030904290600401612a9f565b600060405180830381600087803b15801561249857600080fd5b505af11580156124ac573d6000803e3d6000fd5b505050505050565b6006546124cc9030906001600160a01b0316846117a3565b6006546001600160a01b031663e6529ab48230856000806124f56005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561255857600080fd5b505af115801561256c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061259191906129e7565b5050505050565b804710156125e85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161097b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612635576040519150601f19603f3d011682016040523d82523d6000602084013e61263a565b606091505b5050905080610f7b5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161097b565b600082601f8301126126c257600080fd5b813560206126d76126d283612b41565b612b10565b80838252828201915082860187848660051b89010111156126f757600080fd5b60005b8581101561271f57813561270d81612d5b565b845292840192908401906001016126fa565b5090979650505050505050565b60006020828403121561273e57600080fd5b813561274981612d5b565b9392505050565b60006020828403121561276257600080fd5b815161274981612d5b565b6000806040838503121561278057600080fd5b823561278b81612d5b565b9150602083013561279b81612d5b565b809150509250929050565b6000806000606084860312156127bb57600080fd5b83356127c681612d5b565b925060208401356127d681612d5b565b929592945050506040919091013590565b600080604083850312156127fa57600080fd5b823561280581612d5b565b9150602083013561279b81612d70565b6000806040838503121561282857600080fd5b823561283381612d5b565b946020939093013593505050565b6000806040838503121561285457600080fd5b823567ffffffffffffffff8082111561286c57600080fd5b612878868387016126b1565b935060209150818501358181111561288f57600080fd5b85019050601f810186136128a257600080fd5b80356128b06126d282612b41565b80828252848201915084840189868560051b87010111156128d057600080fd5b600094505b838510156128f35780358352600194909401939185019185016128d5565b5080955050505050509250929050565b6000806040838503121561291657600080fd5b823567ffffffffffffffff81111561292d57600080fd5b612939858286016126b1565b925050602083013561279b81612d70565b60006020828403121561295c57600080fd5b813561274981612d70565b60006020828403121561297957600080fd5b815161274981612d70565b6000806040838503121561299757600080fd5b823561283381612d70565b6000602082840312156129b457600080fd5b5035919050565b6000806000606084860312156129d057600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156129fc57600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015612a4257858101830151858201604001528201612a26565b81811115612a54576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612aef5784516001600160a01b031683529383019391830191600101612aca565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715612b3957612b39612d45565b604052919050565b600067ffffffffffffffff821115612b5b57612b5b612d45565b5060051b60200190565b60008219821115612b7857612b78612d19565b500190565b600082612b9a57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612bda578160001904821115612bc057612bc0612d19565b80851615612bcd57918102915b93841c9390800290612ba4565b509250929050565b600061274960ff841683600082612bfb57506001610a52565b81612c0857506000610a52565b8160018114612c1e5760028114612c2857612c44565b6001915050610a52565b60ff841115612c3957612c39612d19565b50506001821b610a52565b5060208310610133831016604e8410600b8410161715612c67575081810a610a52565b612c718383612b9f565b8060001904821115612c8557612c85612d19565b029392505050565b6000816000190483118215151615612ca757612ca7612d19565b500290565b600082821015612cbe57612cbe612d19565b500390565b600181811c90821680612cd757607f821691505b60208210811415612cf857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612d1257612d12612d19565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461161c57600080fd5b801515811461161c57600080fdfea26469706673582212202d9e2e9e17f6b20d4aa73ba1bfef78b9c49db0c09ac474a8aa8707274310b0e164736f6c63430008070033
Deployed ByteCode
0x6080604052600436106102cd5760003560e01c806385141a7711610175578063acb6c7a8116100dc578063ee36e35911610095578063f66895a31161006f578063f66895a3146108d2578063f770c379146108f1578063f887ea4014610911578063f8bba9e81461093157600080fd5b8063ee36e35914610878578063f2fde38b14610892578063f5b4b0ec146108b257600080fd5b8063acb6c7a81461078c578063d2ce0db2146107ac578063dd62ed3e146107c2578063e16a491714610808578063e1b450ad14610838578063e517f2b91461085857600080fd5b80639ca3fb481161012e5780639ca3fb48146106cc5780639d282cd6146106ec578063a457c2d71461070c578063a8aa1b311461072c578063a9059cbb1461074c578063aacebbe31461076c57600080fd5b806385141a771461062d5780638a8c523c146106435780638da5cb5b146106585780638ea5220f146106765780638fa043131461069657806395d89b41146106b757600080fd5b806340b28c2f1161023457806366a88d96116101ed57806370a08231116101c757806370a0823114610570578063715018a6146105a6578063728f8eea146105bb57806375f0a874146105f557600080fd5b806366a88d96146105245780636aa5b37f1461053a578063706f69371461055057600080fd5b806340b28c2f1461047757806342b6fa11146104975780634ada218b146104b75780634e736f22146104d857806354be01a7146104f8578063652e2f041461050e57600080fd5b80631816467f116102865780631816467f146103ab57806323b872dd146103cb5780632b5f0670146103eb578063313ce5671461040b57806339509351146104275780633bbac5791461044757600080fd5b80630445b667146102d9578063065875f51461030257806306fdde0314610324578063095ea7b3146103465780631340538f1461037657806318160ddd1461039657600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ef600a5481565b6040519081526020015b60405180910390f35b34801561030e57600080fd5b5061032261031d3660046127e7565b610951565b005b34801561033057600080fd5b506103396109af565b6040516102f99190612a15565b34801561035257600080fd5b50610366610361366004612815565b610a41565b60405190151581526020016102f9565b34801561038257600080fd5b5061032261039136600461294a565b610a58565b3480156103a257600080fd5b506002546102ef565b3480156103b757600080fd5b506103226103c636600461272c565b610aa0565b3480156103d757600080fd5b506103666103e63660046127a6565b610b33565b3480156103f757600080fd5b506103226104063660046129a2565b610be3565b34801561041757600080fd5b50604051601281526020016102f9565b34801561043357600080fd5b50610366610442366004612815565b610cca565b34801561045357600080fd5b5061036661046236600461272c565b60176020526000908152604090205460ff1681565b34801561048357600080fd5b5061032261049236600461276d565b610d01565b3480156104a357600080fd5b506103226104b23660046129a2565b610d59565b3480156104c357600080fd5b5060075461036690600160b01b900460ff1681565b3480156104e457600080fd5b506103226104f33660046129bb565b610d9f565b34801561050457600080fd5b506102ef60085481565b34801561051a57600080fd5b506102ef600c5481565b34801561053057600080fd5b506102ef600d5481565b34801561054657600080fd5b506102ef600b5481565b34801561055c57600080fd5b5061032261056b366004612841565b610ea5565b34801561057c57600080fd5b506102ef61058b36600461272c565b6001600160a01b031660009081526020819052604090205490565b3480156105b257600080fd5b50610322610f80565b3480156105c757600080fd5b506010546011546012546105da92919083565b604080519384526020840192909252908201526060016102f9565b34801561060157600080fd5b50600e54610615906001600160a01b031681565b6040516001600160a01b0390911681526020016102f9565b34801561063957600080fd5b5061061561dead81565b34801561064f57600080fd5b50610322610fb6565b34801561066457600080fd5b506005546001600160a01b0316610615565b34801561068257600080fd5b50600f54610615906001600160a01b031681565b3480156106a257600080fd5b5060075461036690600160a81b900460ff1681565b3480156106c357600080fd5b50610339611055565b3480156106d857600080fd5b506103226106e7366004612903565b611064565b3480156106f857600080fd5b506103226107073660046129bb565b6110f5565b34801561071857600080fd5b50610366610727366004612815565b6111aa565b34801561073857600080fd5b50600754610615906001600160a01b031681565b34801561075857600080fd5b50610366610767366004612815565b611243565b34801561077857600080fd5b5061032261078736600461272c565b611250565b34801561079857600080fd5b506103226107a7366004612903565b61129c565b3480156107b857600080fd5b506102ef601b5481565b3480156107ce57600080fd5b506102ef6107dd36600461276d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561081457600080fd5b5061036661082336600461272c565b60166020526000908152604090205460ff1681565b34801561084457600080fd5b506103226108533660046129bb565b61132d565b34801561086457600080fd5b50610322610873366004612984565b6114da565b34801561088457600080fd5b50601a546103669060ff1681565b34801561089e57600080fd5b506103226108ad36600461272c565b611584565b3480156108be57600080fd5b506103226108cd3660046127e7565b61161f565b3480156108de57600080fd5b506013546014546015546105da92919083565b3480156108fd57600080fd5b5061032261090c366004612815565b611674565b34801561091d57600080fd5b50600654610615906001600160a01b031681565b34801561093d57600080fd5b5061032261094c3660046129a2565b61173f565b6005546001600160a01b031633146109845760405162461bcd60e51b815260040161097b90612a6a565b60405180910390fd5b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6060600380546109be90612cc3565b80601f01602080910402602001604051908101604052809291908181526020018280546109ea90612cc3565b8015610a375780601f10610a0c57610100808354040283529160200191610a37565b820191906000526020600020905b815481529060010190602001808311610a1a57829003601f168201915b5050505050905090565b6000610a4e3384846117a3565b5060015b92915050565b6005546001600160a01b03163314610a825760405162461bcd60e51b815260040161097b90612a6a565b60078054911515600160a81b0260ff60a81b19909216919091179055565b600f546001600160a01b03163314610b115760405162461bcd60e51b815260206004820152602e60248201527f43757272656e74204465762057616c6c65742063616e2075706461746520746860448201526d652061646472657373206f6e6c7960901b606482015260840161097b565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610b408484846118c6565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bc45760405162461bcd60e51b815260206004820152602760248201527f444f47453a207472616e7366657220616d6f756e74206578636565647320616c6044820152666c6f77616e636560c81b606482015260840161097b565b610bd88533610bd38685612cac565b6117a3565b506001949350505050565b6005546001600160a01b03163314610c0d5760405162461bcd60e51b815260040161097b90612a6a565b600754600160b01b900460ff1615610c755760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b606482015260840161097b565b60058110610cc55760405162461bcd60e51b815260206004820152601e60248201527f4561726c796275792073686f756c64206265206c657373207468616e20350000604482015260640161097b565b600955565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a4e918590610bd3908690612b65565b6005546001600160a01b03163314610d2b5760405162461bcd60e51b815260040161097b90612a6a565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610d835760405162461bcd60e51b815260040161097b90612a6a565b610d8f6012600a612be2565b610d999082612c8d565b600a5550565b6005546001600160a01b03163314610dc95760405162461bcd60e51b815260040161097b90612a6a565b6001811015610e1a5760405162461bcd60e51b815260206004820152601e60248201527f446576205461782063616e277420676f206c6f776572207468616e2031250000604482015260640161097b565b601481610e278486612b65565b610e319190612b65565b1115610e7f5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c657373000000604482015260640161097b565b604080516060810182528481526020810184905201819052601392909255601455601555565b6005546001600160a01b03163314610ecf5760405162461bcd60e51b815260040161097b90612a6a565b8051825114610f205760405162461bcd60e51b815260206004820152601a60248201527f417272617973206d75737420686176652073616d652073697a65000000000000604482015260640161097b565b60005b8251811015610f7b57610f6933848381518110610f4257610f42612d2f565b6020026020010151848481518110610f5c57610f5c612d2f565b6020026020010151611fa8565b80610f7381612cfe565b915050610f23565b505050565b6005546001600160a01b03163314610faa5760405162461bcd60e51b815260040161097b90612a6a565b610fb4600061217c565b565b6005546001600160a01b03163314610fe05760405162461bcd60e51b815260040161097b90612a6a565b600754600160b01b900460ff161561103a5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161097b565b6007805461ffff60a81b191661010160a81b17905543600855565b6060600480546109be90612cc3565b6005546001600160a01b0316331461108e5760405162461bcd60e51b815260040161097b90612a6a565b60005b8251811015610f7b5781601760008584815181106110b1576110b1612d2f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806110ed81612cfe565b915050611091565b6005546001600160a01b0316331461111f5760405162461bcd60e51b815260040161097b90612a6a565b60148161112c8486612b65565b6111369190612b65565b11156111845760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c657373000000604482015260640161097b565b604080516060810182528481526020810184905201819052601092909255601155601255565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561122a5760405162461bcd60e51b8152602060048201526024808201527f444f47453a2064656372656173656420616c6c6f77616e63652062656c6f77206044820152637a65726f60e01b606482015260840161097b565b6112393385610bd38685612cac565b5060019392505050565b6000610a4e3384846118c6565b6005546001600160a01b0316331461127a5760405162461bcd60e51b815260040161097b90612a6a565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112c65760405162461bcd60e51b815260040161097b90612a6a565b60005b8251811015610f7b5781601660008584815181106112e9576112e9612d2f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061132581612cfe565b9150506112c9565b6005546001600160a01b031633146113575760405162461bcd60e51b815260040161097b90612a6a565b629896808310156113bc5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b606482015260840161097b565b629896808210156114225760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b606482015260840161097b565b6298968081101561148a5760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e312560a01b606482015260840161097b565b6114966012600a612be2565b6114a09084612c8d565b600b556114af6012600a612be2565b6114b99083612c8d565b600c556114c86012600a612be2565b6114d29082612c8d565b600d55505050565b6005546001600160a01b031633146115045760405162461bcd60e51b815260040161097b90612a6a565b61150f816001612c8d565b601b55601a805460ff1916831515179055603c8111156115805760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642031206d604482015265696e7574657360d01b606482015260840161097b565b5050565b6005546001600160a01b031633146115ae5760405162461bcd60e51b815260040161097b90612a6a565b6001600160a01b0381166116135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161097b565b61161c8161217c565b50565b6005546001600160a01b031633146116495760405162461bcd60e51b815260040161097b90612a6a565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461169e5760405162461bcd60e51b815260040161097b90612a6a565b816001600160a01b031663a9059cbb6116bf6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b15801561170757600080fd5b505af115801561171b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7b9190612967565b6005546001600160a01b031633146117695760405162461bcd60e51b815260040161097b90612a6a565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611580573d6000803e3d6000fd5b6001600160a01b0383166118055760405162461bcd60e51b815260206004820152602360248201527f444f47453a20617070726f76652066726f6d20746865207a65726f206164647260448201526265737360e81b606482015260840161097b565b6001600160a01b0382166118655760405162461bcd60e51b815260206004820152602160248201527f444f47453a20617070726f766520746f20746865207a65726f206164647265736044820152607360f81b606482015260840161097b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116119285760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161097b565b6001600160a01b03831660009081526017602052604090205460ff1615801561196a57506001600160a01b03821660009081526017602052604090205460ff16155b6119b65760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e7300000000000000604482015260640161097b565b6001600160a01b03831660009081526016602052604090205460ff161580156119f857506001600160a01b03821660009081526016602052604090205460ff16155b15611a4c57600754600160b01b900460ff16611a4c5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161097b565b6007546001600160a01b038481169116148015611a8257506001600160a01b03821660009081526016602052604090205460ff16155b8015611a985750600754600160a01b900460ff16155b15611b6a57600b54811115611aef5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d6974000000604482015260640161097b565b600d5481611b12846001600160a01b031660009081526020819052604090205490565b611b1c9190612b65565b1115611b6a5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161097b565b6007546001600160a01b03848116911614801590611ba157506001600160a01b03821660009081526016602052604090205460ff16155b8015611bc657506001600160a01b03831660009081526016602052604090205460ff16155b8015611bdc5750600754600160a01b900460ff16155b15611d5557600c54811115611c335760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d69740000604482015260640161097b565b6007546001600160a01b03838116911614611cc357600d5481611c6b846001600160a01b031660009081526020819052604090205490565b611c759190612b65565b1115611cc35760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161097b565b601a5460ff1615611d55576001600160a01b038316600090815260196020526040812054611cf19042612cac565b9050601b54811015611d385760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b604482015260640161097b565b506001600160a01b03831660009081526019602052604090204290555b6000806000611d7e60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b03871660009081526016602052604081205460ff16158015611dc057506001600160a01b03871660009081526016602052604090205460ff16155b8015611dda5750600954600854611dd79190612b65565b43105b600754909150600160a01b900460ff1680611e0d57506001600160a01b03881660009081526016602052604090205460ff165b80611e3057506001600160a01b03871660009081526016602052604090205460ff165b15611e3e5760009250611f08565b6007546001600160a01b038881169116148015611e59575080155b15611ea957601554601354601454611e719190612b65565b611e7b9190612b65565b6040805160608101825260135481526014546020820152601554918101919091529095508594509150611f08565b80611ef957601254601054601154611ec19190612b65565b611ecb9190612b65565b6040805160608101825260105481526011546020820152601254918101919091529095508594509150611f08565b8015611f085760185494508493505b6064611f148588612c8d565b611f1e9190612b7d565b600754909350600160a81b900460ff168015611f4857506007546001600160a01b03898116911614155b15611f5757611f5785836121ce565b611f6b8888611f66868a612cac565b611fa8565b8215611f9e578415611f9e5760006064611f858789612c8d565b611f8f9190612b7d565b9050611f9c893083611fa8565b505b5050505050505050565b6001600160a01b03831661200a5760405162461bcd60e51b8152602060048201526024808201527f444f47453a207472616e736665722066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161097b565b6001600160a01b03821661206b5760405162461bcd60e51b815260206004820152602260248201527f444f47453a207472616e7366657220746f20746865207a65726f206164647265604482015261737360f01b606482015260840161097b565b6001600160a01b038316600090815260208190526040902054818110156120e25760405162461bcd60e51b815260206004820152602560248201527f444f47453a207472616e7366657220616d6f756e7420657863656564732062616044820152646c616e636560d81b606482015260840161097b565b6120ec8282612cac565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290612122908490612b65565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161216e91815260200190565b60405180910390a350505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16611580576007805460ff60a01b1916600160a01b179055816121fc5761233a565b30600090815260208190526040902054600a548110612338576001600a5411156122255750600a545b6000612232846002612c8d565b90506000818460200151846122479190612c8d565b6122519190612b7d565b9050600061225f8285612cac565b90504761226b8261234b565b60006122778247612cac565b9050600087602001518661228b9190612cac565b6122959083612b7d565b905060008860200151826122a99190612c8d565b905080156122bb576122bb86826124b4565b88516000906122cb846002612c8d565b6122d59190612c8d565b905080156122f357600e546122f3906001600160a01b031682612598565b60408a0151600090612306856002612c8d565b6123109190612c8d565b9050801561232e57600f5461232e906001600160a01b031682612598565b5050505050505050505b505b6007805460ff60a01b191690555050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061238057612380612d2f565b6001600160a01b03928316602091820292909201810191909152600654604080516302768aa360e51b815290519190931692634ed15460926004808301939192829003018186803b1580156123d457600080fd5b505afa1580156123e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240c9190612750565b8160018151811061241f5761241f612d2f565b6001600160a01b03928316602091820292909201015260065461244591309116846117a3565b60065460405163b43d9bbb60e01b81526001600160a01b039091169063b43d9bbb9061247e908590600090869030904290600401612a9f565b600060405180830381600087803b15801561249857600080fd5b505af11580156124ac573d6000803e3d6000fd5b505050505050565b6006546124cc9030906001600160a01b0316846117a3565b6006546001600160a01b031663e6529ab48230856000806124f56005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561255857600080fd5b505af115801561256c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061259191906129e7565b5050505050565b804710156125e85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161097b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612635576040519150601f19603f3d011682016040523d82523d6000602084013e61263a565b606091505b5050905080610f7b5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161097b565b600082601f8301126126c257600080fd5b813560206126d76126d283612b41565b612b10565b80838252828201915082860187848660051b89010111156126f757600080fd5b60005b8581101561271f57813561270d81612d5b565b845292840192908401906001016126fa565b5090979650505050505050565b60006020828403121561273e57600080fd5b813561274981612d5b565b9392505050565b60006020828403121561276257600080fd5b815161274981612d5b565b6000806040838503121561278057600080fd5b823561278b81612d5b565b9150602083013561279b81612d5b565b809150509250929050565b6000806000606084860312156127bb57600080fd5b83356127c681612d5b565b925060208401356127d681612d5b565b929592945050506040919091013590565b600080604083850312156127fa57600080fd5b823561280581612d5b565b9150602083013561279b81612d70565b6000806040838503121561282857600080fd5b823561283381612d5b565b946020939093013593505050565b6000806040838503121561285457600080fd5b823567ffffffffffffffff8082111561286c57600080fd5b612878868387016126b1565b935060209150818501358181111561288f57600080fd5b85019050601f810186136128a257600080fd5b80356128b06126d282612b41565b80828252848201915084840189868560051b87010111156128d057600080fd5b600094505b838510156128f35780358352600194909401939185019185016128d5565b5080955050505050509250929050565b6000806040838503121561291657600080fd5b823567ffffffffffffffff81111561292d57600080fd5b612939858286016126b1565b925050602083013561279b81612d70565b60006020828403121561295c57600080fd5b813561274981612d70565b60006020828403121561297957600080fd5b815161274981612d70565b6000806040838503121561299757600080fd5b823561283381612d70565b6000602082840312156129b457600080fd5b5035919050565b6000806000606084860312156129d057600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156129fc57600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015612a4257858101830151858201604001528201612a26565b81811115612a54576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612aef5784516001600160a01b031683529383019391830191600101612aca565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715612b3957612b39612d45565b604052919050565b600067ffffffffffffffff821115612b5b57612b5b612d45565b5060051b60200190565b60008219821115612b7857612b78612d19565b500190565b600082612b9a57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612bda578160001904821115612bc057612bc0612d19565b80851615612bcd57918102915b93841c9390800290612ba4565b509250929050565b600061274960ff841683600082612bfb57506001610a52565b81612c0857506000610a52565b8160018114612c1e5760028114612c2857612c44565b6001915050610a52565b60ff841115612c3957612c39612d19565b50506001821b610a52565b5060208310610133831016604e8410600b8410161715612c67575081810a610a52565b612c718383612b9f565b8060001904821115612c8557612c85612d19565b029392505050565b6000816000190483118215151615612ca757612ca7612d19565b500290565b600082821015612cbe57612cbe612d19565b500390565b600181811c90821680612cd757607f821691505b60208210811415612cf857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612d1257612d12612d19565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461161c57600080fd5b801515811461161c57600080fdfea26469706673582212202d9e2e9e17f6b20d4aa73ba1bfef78b9c49db0c09ac474a8aa8707274310b0e164736f6c63430008070033