ERC-20
Deflationary Token
Overview
Max Total Supply
21,000,000 $CHOO
Holders
602 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
82.945248901346169522 $CHOOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ChookyInu
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-12-16 */ /** *Submitted for verification at Etherscan.io on 2022-12-16 */ //SPDX-License-Identifier: MIT pragma solidity ^0.8.17; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The defaut value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ 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"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ 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"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } /** This function will be used to generate the total supply * while deploying the contract * * This function can never be called again after deploying contract */ function _tokengeneration(address account, uint256 amount) internal virtual { _totalSupply = amount; _balances[account] = amount; emit Transfer(address(0), account, 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), "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); } } 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 WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface referralLogic { function referralBuy(address _buyer, uint256 _amount) external; } contract ChookyInu is ERC20, Ownable { using Address for address payable; IRouter public router; address public pair; address public referralContract; bool private _interlock = false; bool public providingLiquidity = false; bool public tradingEnabled = false; uint256 public tokenLiquidityThreshold = 21_000 * 10**18; uint256 public maxBuyLimit = 210_000 * 10**18; uint256 public maxSellLimit = 210_000 * 10**18; uint256 public maxWalletLimit = 210_000 * 10**18; uint256 public genesis_block; address public marketingWallet = 0xb172C5bF1c12B0ecDFb04192C40095a095cdEf43; address public constant deadWallet = 0x000000000000000000000000000000000000dEaD; struct Taxes { uint256 marketing; uint256 liquidity; uint256 burn; } Taxes public taxes = Taxes(4, 0, 0); Taxes public sellTaxes = Taxes(8, 0, 0); Taxes public transferTaxes = Taxes(0, 0, 0); mapping(address => bool) public exemptFee; bool public referralActive = false; modifier lockTheSwap() { if (!_interlock) { _interlock = true; _; _interlock = false; } } constructor() ERC20("Chooky Inu", "$CHOO") { _tokengeneration(msg.sender, 21_000_000 * 10**decimals()); exemptFee[msg.sender] = true; IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH()); router = _router; pair = _pair; exemptFee[address(this)] = true; exemptFee[marketingWallet] = true; exemptFee[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, "ERC20: 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, "ERC20: 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"); if (!exemptFee[sender] && !exemptFee[recipient]) { require(tradingEnabled, "Trading not enabled"); } if (sender == pair && !exemptFee[recipient] && !_interlock) { require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit"); require( balanceOf(recipient) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } if ( sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_interlock ) { require(amount <= maxSellLimit, "You are exceeding maxSellLimit"); if (recipient != pair) { require( balanceOf(recipient) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } } //Referral logic if(sender == pair && referralActive) { referralLogic(referralContract).referralBuy(recipient, amount); } uint256 feeswap; uint256 feesum; uint256 fee; Taxes memory currentTaxes; //set fee to zero if fees in contract are handled or exempted if (_interlock || exemptFee[sender] || exemptFee[recipient]) fee = 0; //calculate fee else if (recipient == pair) { feeswap = sellTaxes.liquidity + sellTaxes.marketing + sellTaxes.burn; feesum = feeswap; currentTaxes = sellTaxes; } else if (sender == pair) { feeswap = taxes.liquidity + taxes.marketing + taxes.burn ; feesum = feeswap; currentTaxes = taxes; } else { feeswap = transferTaxes.liquidity + transferTaxes.marketing + transferTaxes.burn ; feesum = feeswap; currentTaxes = transferTaxes; } fee = (amount * feesum) / 100; //send fees if threshold has been reached //don't do this on buys, breaks swap if (providingLiquidity && sender != pair) Liquify(feeswap, currentTaxes); //rest to recipient super._transfer(sender, recipient, amount - fee); if (fee > 0) { //send the fee to the contract if (feeswap > 0) { uint256 burnAmount = (amount * currentTaxes.burn) / 100; uint256 feeAmount = (amount * feeswap) / 100 - burnAmount; super._transfer(sender, address(this), feeAmount); super._transfer(sender, deadWallet, burnAmount); } } } function Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap { if(feeswap == 0){ return; } uint256 contractBalance = balanceOf(address(this)); if (contractBalance >= tokenLiquidityThreshold) { if (tokenLiquidityThreshold > 1) { contractBalance = tokenLiquidityThreshold; } // 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; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity); uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity; if (ethToAddLiquidityWith > 0) { // Add liquidity to pancake addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith); } uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing; if (marketingAmt > 0) { payable(marketingWallet).sendValue(marketingAmt); } } } function swapTokensForETH(uint256 tokenAmount) private { // generate the pancake pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{ value: ethAmount }( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadWallet, block.timestamp ); } function updateLiquidityProvide(bool state) external onlyOwner { //update liquidity providing state providingLiquidity = state; } function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner { //update the treshhold require(new_amount <= 420_000 && new_amount > 0, "Swap threshold amount should be lower or euqal to 1% of tokens"); tokenLiquidityThreshold = new_amount * 10**decimals(); } function SetBuyTaxes( uint256 _marketing, uint256 _liquidity, uint256 _burn ) external onlyOwner { taxes = Taxes(_marketing, _liquidity, _burn); require((_marketing + _liquidity + _burn) <= 12, "Must keep fees at 12% or less"); } function SetSellTaxes( uint256 _marketing, uint256 _liquidity, uint256 _burn ) external onlyOwner { sellTaxes = Taxes(_marketing, _liquidity, _burn); require((_marketing + _liquidity + _burn) <= 12, "Must keep fees at 12% or less"); } function SetTransferTaxes( uint256 _marketing, uint256 _liquidity, uint256 _burn ) external onlyOwner { transferTaxes = Taxes(_marketing, _liquidity, _burn); require((_marketing + _liquidity + _burn) <= 12, "Must keep fees at 12% or less"); } function updateRouterAndPair(address newRouter, address newPair) external onlyOwner { router = IRouter(newRouter); pair = newPair; } function updateReferralContract(address _newReferralContract) external onlyOwner { require(_newReferralContract != address(0),"Fee Address cannot be zero address"); referralContract = _newReferralContract; } function toggleReferral(bool status) external onlyOwner{ referralActive = status; } function _openTrading() external onlyOwner { require(!tradingEnabled, "Cannot re-enable trading"); tradingEnabled = true; providingLiquidity = true; genesis_block = block.number; } function _toggleTrading(bool status) external onlyOwner { tradingEnabled = status; } function updateMarketingWallet(address newWallet) external onlyOwner { require(newWallet != address(0),"Fee Address cannot be zero address"); marketingWallet = newWallet; } function updateExemptFee(address _address, bool state) external onlyOwner { exemptFee[_address] = state; } function bulkExemptFee(address[] memory accounts, bool state) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { exemptFee[accounts[i]] = state; } } function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner { require(maxBuy >= 21_000, "Cannot set max buy amount lower than 0.1%"); require(maxSell >= 21_000, "Cannot set max sell amount lower than 0.1%"); require(maxWallet >= 210_000, "Cannot set max wallet amount lower than 1%"); maxBuyLimit = maxBuy * 10**decimals(); maxSellLimit = maxSell * 10**decimals(); maxWalletLimit = maxWallet * 10**decimals(); } function rescueBNB(uint256 weiAmount) external onlyOwner { payable(owner()).transfer(weiAmount); } function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner { require(tokenAdd != address(this), "Owner can't claim contract's balance of its own tokens"); IERC20(tokenAdd).transfer(owner(), amount); } // fallbacks receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"SetBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"SetTransferTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"_toggleTrading","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"toggleReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[],"name":"transferTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newReferralContract","type":"address"}],"name":"updateReferralContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6008805462ffffff60a01b19168155690472698b413b43200000600955692c781f708c509f400000600a819055600b819055600c55600e80546001600160a01b03191673b172c5bf1c12b0ecdfb04192c40095a095cdef4317905560046080819052600060a081905260c0819052600f919091556010819055601181905560e0829052610100819052610120819052601291909155601381905560148190556101a0604052610140819052610160819052610180819052601581905560168190556017556019805460ff19169055348015620000da57600080fd5b506040518060400160405280600a81526020016943686f6f6b7920496e7560b01b815250604051806040016040528060058152602001642443484f4f60d81b81525081600390816200012d9190620004e2565b5060046200013c8282620004e2565b50505062000159620001536200039360201b60201c565b62000397565b62000182336200016c6012600a620006c3565b6200017c906301406f40620006db565b620003e9565b336000908152601860209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa158015620001ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002139190620006f5565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000261573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002879190620006f5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fb9190620006f5565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260186020526040808220805460ff199081166001908117909255600e549094168352908220805484168217905561dead9091527fe3ec2099396b7359df1c566dfdf9dfdb5e22fd64a6ede9d61aa32b2f63968fd6805490921617905562000720565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200046857607f821691505b6020821081036200048957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004dd57600081815260208120601f850160051c81016020861015620004b85750805b601f850160051c820191505b81811015620004d957828155600101620004c4565b5050505b505050565b81516001600160401b03811115620004fe57620004fe6200043d565b62000516816200050f845462000453565b846200048f565b602080601f8311600181146200054e5760008415620005355750858301515b600019600386901b1c1916600185901b178555620004d9565b600085815260208120601f198616915b828110156200057f578886015182559484019460019091019084016200055e565b50858210156200059e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000605578160001904821115620005e957620005e9620005ae565b80851615620005f757918102915b93841c9390800290620005c9565b509250929050565b6000826200061e57506001620006bd565b816200062d57506000620006bd565b8160018114620006465760028114620006515762000671565b6001915050620006bd565b60ff841115620006655762000665620005ae565b50506001821b620006bd565b5060208310610133831016604e8410600b841016171562000696575081810a620006bd565b620006a28383620005c4565b8060001904821115620006b957620006b9620005ae565b0290505b92915050565b6000620006d460ff8416836200060d565b9392505050565b8082028115828204841417620006bd57620006bd620005ae565b6000602082840312156200070857600080fd5b81516001600160a01b0381168114620006d457600080fd5b61292380620007306000396000f3fe60806040526004361061028c5760003560e01c806366a88d961161015a578063a8aa1b31116100c1578063dd62ed3e1161007a578063dd62ed3e146107c7578063e1b450ad1461080d578063f2fde38b1461082d578063f66895a31461084d578063f887ea401461086c578063fbe6324e1461088c57600080fd5b8063a8aa1b31146106fd578063a9059cbb1461071d578063aacebbe31461073d578063c5d32bb21461075d578063c653df6f1461078d578063d3460d8a146107a757600080fd5b80637dad19db116101135780637dad19db1461065457806385141a77146106745780638cd4426d1461068a5780638da5cb5b146106aa57806395d89b41146106c8578063a457c2d7146106dd57600080fd5b806366a88d96146105865780636aa5b37f1461059c57806370a08231146105b2578063715018a6146105e8578063728f8eea146105fd57806375f0a8741461061c57600080fd5b8063274a533c116101fe578063441b1d30116101b7578063441b1d30146104b55780634a2b3b13146104d55780634ada218b146104f55780634e736f22146105165780635331803c14610536578063652e2f041461057057600080fd5b8063274a533c14610403578063313ce56714610419578063355496ca14610435578063395093511461045557806340b28c2f1461047557806342b6fa111461049557600080fd5b80631340538f116102505780631340538f146103555780631675d8021461037557806318160ddd146103995780631c1702f3146103ae57806323b872dd146103c3578063244cffa5146103e357600080fd5b8063012ab8cb1461029857806306fdde03146102ba57806307b405bb146102e5578063095ea7b3146103055780630e375a5c1461033557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b3366004612317565b6108ad565b005b3480156102c657600080fd5b506102cf6108fe565b6040516102dc919061233b565b60405180910390f35b3480156102f157600080fd5b506102b8610300366004612317565b610990565b34801561031157600080fd5b506103256103203660046123a9565b6109cd565b60405190151581526020016102dc565b34801561034157600080fd5b506102b86103503660046123eb565b6109e4565b34801561036157600080fd5b506102b8610370366004612317565b610a7a565b34801561038157600080fd5b5061038b60095481565b6040519081526020016102dc565b3480156103a557600080fd5b5060025461038b565b3480156103ba57600080fd5b506102b8610ac2565b3480156103cf57600080fd5b506103256103de3660046124c2565b610b61565b3480156103ef57600080fd5b506102b86103fe366004612503565b610c12565b34801561040f57600080fd5b5061038b600d5481565b34801561042557600080fd5b50604051601281526020016102dc565b34801561044157600080fd5b506102b861045036600461252f565b610cc8565b34801561046157600080fd5b506103256104703660046123a9565b610d1d565b34801561048157600080fd5b506102b8610490366004612568565b610d54565b3480156104a157600080fd5b506102b86104b0366004612596565b610dac565b3480156104c157600080fd5b506102b86104d0366004612596565b610e77565b3480156104e157600080fd5b506102b86104f0366004612503565b610edf565b34801561050157600080fd5b5060085461032590600160b01b900460ff1681565b34801561052257600080fd5b506102b8610531366004612503565b610f3d565b34801561054257600080fd5b5060155460165460175461055592919083565b604080519384526020840192909252908201526060016102dc565b34801561057c57600080fd5b5061038b600b5481565b34801561059257600080fd5b5061038b600c5481565b3480156105a857600080fd5b5061038b600a5481565b3480156105be57600080fd5b5061038b6105cd3660046125af565b6001600160a01b031660009081526020819052604090205490565b3480156105f457600080fd5b506102b8610f9b565b34801561060957600080fd5b50600f5460105460115461055592919083565b34801561062857600080fd5b50600e5461063c906001600160a01b031681565b6040516001600160a01b0390911681526020016102dc565b34801561066057600080fd5b5060085461063c906001600160a01b031681565b34801561068057600080fd5b5061063c61dead81565b34801561069657600080fd5b506102b86106a53660046123a9565b610fd1565b3480156106b657600080fd5b506005546001600160a01b031661063c565b3480156106d457600080fd5b506102cf611104565b3480156106e957600080fd5b506103256106f83660046123a9565b611113565b34801561070957600080fd5b5060075461063c906001600160a01b031681565b34801561072957600080fd5b506103256107383660046123a9565b6111ae565b34801561074957600080fd5b506102b86107583660046125af565b6111bb565b34801561076957600080fd5b506103256107783660046125af565b60186020526000908152604090205460ff1681565b34801561079957600080fd5b506019546103259060ff1681565b3480156107b357600080fd5b506102b86107c23660046125af565b61122d565b3480156107d357600080fd5b5061038b6107e2366004612568565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561081957600080fd5b506102b8610828366004612503565b61129f565b34801561083957600080fd5b506102b86108483660046125af565b611449565b34801561085957600080fd5b5060125460135460145461055592919083565b34801561087857600080fd5b5060065461063c906001600160a01b031681565b34801561089857600080fd5b5060085461032590600160a81b900460ff1681565b6005546001600160a01b031633146108e05760405162461bcd60e51b81526004016108d7906125cc565b60405180910390fd5b60088054911515600160b01b0260ff60b01b19909216919091179055565b60606003805461090d90612601565b80601f016020809104026020016040519081016040528092919081815260200182805461093990612601565b80156109865780601f1061095b57610100808354040283529160200191610986565b820191906000526020600020905b81548152906001019060200180831161096957829003601f168201915b5050505050905090565b6005546001600160a01b031633146109ba5760405162461bcd60e51b81526004016108d7906125cc565b6019805460ff1916911515919091179055565b60006109da3384846114e4565b5060015b92915050565b6005546001600160a01b03163314610a0e5760405162461bcd60e51b81526004016108d7906125cc565b60005b8251811015610a75578160186000858481518110610a3157610a3161263b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a6d81612667565b915050610a11565b505050565b6005546001600160a01b03163314610aa45760405162461bcd60e51b81526004016108d7906125cc565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610aec5760405162461bcd60e51b81526004016108d7906125cc565b600854600160b01b900460ff1615610b465760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016108d7565b6008805461ffff60a81b191661010160a81b17905543600d55565b6000610b6e848484611608565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bf35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108d7565b610c078533610c028685612680565b6114e4565b506001949350505050565b6005546001600160a01b03163314610c3c5760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052601583905560168290556017819055600c81610c708486612693565b610c7a9190612693565b1115610a755760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313225206f72206c65737300000060448201526064016108d7565b6005546001600160a01b03163314610cf25760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109da918590610c02908690612693565b6005546001600160a01b03163314610d7e5760405162461bcd60e51b81526004016108d7906125cc565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610dd65760405162461bcd60e51b81526004016108d7906125cc565b620668a08111158015610de95750600081115b610e5b5760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f203125206f6620746f6b656e73000060648201526084016108d7565b610e676012600a61278a565b610e719082612799565b60095550565b6005546001600160a01b03163314610ea15760405162461bcd60e51b81526004016108d7906125cc565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610edb573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610f095760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052600f83905560108290556011819055600c81610c708486612693565b6005546001600160a01b03163314610f675760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052601283905560138290556014819055600c81610c708486612693565b6005546001600160a01b03163314610fc55760405162461bcd60e51b81526004016108d7906125cc565b610fcf6000611c6d565b565b6005546001600160a01b03163314610ffb5760405162461bcd60e51b81526004016108d7906125cc565b306001600160a01b038316036110725760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016108d7565b816001600160a01b031663a9059cbb6110936005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af11580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7591906127b0565b60606004805461090d90612601565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108d7565b6111a43385610c028685612680565b5060019392505050565b60006109da338484611608565b6005546001600160a01b031633146111e55760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03811661120b5760405162461bcd60e51b81526004016108d7906127cd565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112575760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03811661127d5760405162461bcd60e51b81526004016108d7906127cd565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112c95760405162461bcd60e51b81526004016108d7906125cc565b61520883101561132d5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108d7565b6152088210156113925760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108d7565b620334508110156113f85760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b60648201526084016108d7565b6114046012600a61278a565b61140e9084612799565b600a55601261141e90600a61278a565b6114289083612799565b600b556114376012600a61278a565b6114419082612799565b600c55505050565b6005546001600160a01b031633146114735760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b0381166114d85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d7565b6114e181611c6d565b50565b6001600160a01b0383166115465760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108d7565b6001600160a01b0382166115a75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000811161166a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108d7565b6001600160a01b03831660009081526018602052604090205460ff161580156116ac57506001600160a01b03821660009081526018602052604090205460ff16155b1561170057600854600160b01b900460ff166117005760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108d7565b6007546001600160a01b03848116911614801561173657506001600160a01b03821660009081526018602052604090205460ff16155b801561174c5750600854600160a01b900460ff16155b1561181e57600a548111156117a35760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016108d7565b600c54816117c6846001600160a01b031660009081526020819052604090205490565b6117d09190612693565b111561181e5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108d7565b6007546001600160a01b0384811691161480159061185557506001600160a01b03821660009081526018602052604090205460ff16155b801561187a57506001600160a01b03831660009081526018602052604090205460ff16155b80156118905750600854600160a01b900460ff16155b1561197757600b548111156118e75760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016108d7565b6007546001600160a01b0383811691161461197757600c548161191f846001600160a01b031660009081526020819052604090205490565b6119299190612693565b11156119775760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108d7565b6007546001600160a01b038481169116148015611996575060195460ff165b15611a02576008546040516329a9b55b60e01b81526001600160a01b03848116600483015260248201849052909116906329a9b55b90604401600060405180830381600087803b1580156119e957600080fd5b505af11580156119fd573d6000803e3d6000fd5b505050505b6000806000611a2b60405180606001604052806000815260200160008152602001600081525090565b600854600160a01b900460ff1680611a5b57506001600160a01b03871660009081526018602052604090205460ff165b80611a7e57506001600160a01b03861660009081526018602052604090205460ff165b15611a8c5760009150611b95565b6007546001600160a01b0390811690871603611aed57601454601254601354611ab59190612693565b611abf9190612693565b6040805160608101825260125481526013546020820152601454918101919091529094508493509050611b95565b6007546001600160a01b0390811690881603611b4e57601154600f54601054611b169190612693565b611b209190612693565b60408051606081018252600f5481526010546020820152601154918101919091529094508493509050611b95565b601754601554601654611b619190612693565b611b6b9190612693565b60408051606081018252601554815260165460208201526017549181019190915290945084935090505b6064611ba18487612799565b611bab919061280f565b600854909250600160a81b900460ff168015611bd557506007546001600160a01b03888116911614155b15611be457611be48482611cbf565b611bf88787611bf38589612680565b611dfc565b8115611c64578315611c645760006064826040015187611c189190612799565b611c22919061280f565b90506000816064611c33888a612799565b611c3d919061280f565b611c479190612680565b9050611c54893083611dfc565b611c618961dead84611dfc565b50505b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600854600160a01b900460ff16610edb576008805460ff60a01b1916600160a01b1790558115611deb57306000908152602081905260409020546009548110611de95760016009541115611d1257506009545b6000611d1f846002612799565b9050600081846020015184611d349190612799565b611d3e919061280f565b90506000611d4c8285612680565b905047611d5882611fd4565b6000611d648247612680565b90506000876020015186611d789190612680565b611d82908361280f565b90506000886020015182611d969190612799565b90508015611da857611da8868261212e565b8851600090611db8846002612799565b611dc29190612799565b90508015611de057600e54611de0906001600160a01b0316826121e0565b50505050505050505b505b6008805460ff60a01b191690555050565b6001600160a01b038316611e605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108d7565b6001600160a01b038216611ec25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108d7565b6001600160a01b03831660009081526020819052604090205481811015611f3a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108d7565b611f448282612680565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611f7a908490612693565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fc691815260200190565b60405180910390a350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120095761200961263b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612062573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120869190612831565b816001815181106120995761209961263b565b6001600160a01b0392831660209182029290920101526006546120bf91309116846114e4565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906120f890859060009086903090429060040161284e565b600060405180830381600087803b15801561211257600080fd5b505af1158015612126573d6000803e3d6000fd5b505050505050565b6006546121469030906001600160a01b0316846114e4565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156121b4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121d991906128bf565b5050505050565b804710156122305760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108d7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461227d576040519150601f19603f3d011682016040523d82523d6000602084013e612282565b606091505b5050905080610a755760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108d7565b80151581146114e157600080fd5b8035612312816122f9565b919050565b60006020828403121561232957600080fd5b8135612334816122f9565b9392505050565b600060208083528351808285015260005b818110156123685785810183015185820160400152820161234c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114e157600080fd5b803561231281612389565b600080604083850312156123bc57600080fd5b82356123c781612389565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156123fe57600080fd5b823567ffffffffffffffff8082111561241657600080fd5b818501915085601f83011261242a57600080fd5b813560208282111561243e5761243e6123d5565b8160051b604051601f19603f83011681018181108682111715612463576124636123d5565b60405292835281830193508481018201928984111561248157600080fd5b948201945b838610156124a6576124978661239e565b85529482019493820193612486565b96506124b59050878201612307565b9450505050509250929050565b6000806000606084860312156124d757600080fd5b83356124e281612389565b925060208401356124f281612389565b929592945050506040919091013590565b60008060006060848603121561251857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561254257600080fd5b823561254d81612389565b9150602083013561255d816122f9565b809150509250929050565b6000806040838503121561257b57600080fd5b823561258681612389565b9150602083013561255d81612389565b6000602082840312156125a857600080fd5b5035919050565b6000602082840312156125c157600080fd5b813561233481612389565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061261557607f821691505b60208210810361263557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161267957612679612651565b5060010190565b818103818111156109de576109de612651565b808201808211156109de576109de612651565b600181815b808511156126e15781600019048211156126c7576126c7612651565b808516156126d457918102915b93841c93908002906126ab565b509250929050565b6000826126f8575060016109de565b81612705575060006109de565b816001811461271b576002811461272557612741565b60019150506109de565b60ff84111561273657612736612651565b50506001821b6109de565b5060208310610133831016604e8410600b8410161715612764575081810a6109de565b61276e83836126a6565b806000190482111561278257612782612651565b029392505050565b600061233460ff8416836126e9565b80820281158282048414176109de576109de612651565b6000602082840312156127c257600080fd5b8151612334816122f9565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b60008261282c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561284357600080fd5b815161233481612389565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561289e5784516001600160a01b031683529383019391830191600101612879565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156128d457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220697c38ebb91cab31d4000832ec3b856b72cdb1bca16c85f7566d359c6df7ead464736f6c63430008110033
Deployed Bytecode
0x60806040526004361061028c5760003560e01c806366a88d961161015a578063a8aa1b31116100c1578063dd62ed3e1161007a578063dd62ed3e146107c7578063e1b450ad1461080d578063f2fde38b1461082d578063f66895a31461084d578063f887ea401461086c578063fbe6324e1461088c57600080fd5b8063a8aa1b31146106fd578063a9059cbb1461071d578063aacebbe31461073d578063c5d32bb21461075d578063c653df6f1461078d578063d3460d8a146107a757600080fd5b80637dad19db116101135780637dad19db1461065457806385141a77146106745780638cd4426d1461068a5780638da5cb5b146106aa57806395d89b41146106c8578063a457c2d7146106dd57600080fd5b806366a88d96146105865780636aa5b37f1461059c57806370a08231146105b2578063715018a6146105e8578063728f8eea146105fd57806375f0a8741461061c57600080fd5b8063274a533c116101fe578063441b1d30116101b7578063441b1d30146104b55780634a2b3b13146104d55780634ada218b146104f55780634e736f22146105165780635331803c14610536578063652e2f041461057057600080fd5b8063274a533c14610403578063313ce56714610419578063355496ca14610435578063395093511461045557806340b28c2f1461047557806342b6fa111461049557600080fd5b80631340538f116102505780631340538f146103555780631675d8021461037557806318160ddd146103995780631c1702f3146103ae57806323b872dd146103c3578063244cffa5146103e357600080fd5b8063012ab8cb1461029857806306fdde03146102ba57806307b405bb146102e5578063095ea7b3146103055780630e375a5c1461033557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b3366004612317565b6108ad565b005b3480156102c657600080fd5b506102cf6108fe565b6040516102dc919061233b565b60405180910390f35b3480156102f157600080fd5b506102b8610300366004612317565b610990565b34801561031157600080fd5b506103256103203660046123a9565b6109cd565b60405190151581526020016102dc565b34801561034157600080fd5b506102b86103503660046123eb565b6109e4565b34801561036157600080fd5b506102b8610370366004612317565b610a7a565b34801561038157600080fd5b5061038b60095481565b6040519081526020016102dc565b3480156103a557600080fd5b5060025461038b565b3480156103ba57600080fd5b506102b8610ac2565b3480156103cf57600080fd5b506103256103de3660046124c2565b610b61565b3480156103ef57600080fd5b506102b86103fe366004612503565b610c12565b34801561040f57600080fd5b5061038b600d5481565b34801561042557600080fd5b50604051601281526020016102dc565b34801561044157600080fd5b506102b861045036600461252f565b610cc8565b34801561046157600080fd5b506103256104703660046123a9565b610d1d565b34801561048157600080fd5b506102b8610490366004612568565b610d54565b3480156104a157600080fd5b506102b86104b0366004612596565b610dac565b3480156104c157600080fd5b506102b86104d0366004612596565b610e77565b3480156104e157600080fd5b506102b86104f0366004612503565b610edf565b34801561050157600080fd5b5060085461032590600160b01b900460ff1681565b34801561052257600080fd5b506102b8610531366004612503565b610f3d565b34801561054257600080fd5b5060155460165460175461055592919083565b604080519384526020840192909252908201526060016102dc565b34801561057c57600080fd5b5061038b600b5481565b34801561059257600080fd5b5061038b600c5481565b3480156105a857600080fd5b5061038b600a5481565b3480156105be57600080fd5b5061038b6105cd3660046125af565b6001600160a01b031660009081526020819052604090205490565b3480156105f457600080fd5b506102b8610f9b565b34801561060957600080fd5b50600f5460105460115461055592919083565b34801561062857600080fd5b50600e5461063c906001600160a01b031681565b6040516001600160a01b0390911681526020016102dc565b34801561066057600080fd5b5060085461063c906001600160a01b031681565b34801561068057600080fd5b5061063c61dead81565b34801561069657600080fd5b506102b86106a53660046123a9565b610fd1565b3480156106b657600080fd5b506005546001600160a01b031661063c565b3480156106d457600080fd5b506102cf611104565b3480156106e957600080fd5b506103256106f83660046123a9565b611113565b34801561070957600080fd5b5060075461063c906001600160a01b031681565b34801561072957600080fd5b506103256107383660046123a9565b6111ae565b34801561074957600080fd5b506102b86107583660046125af565b6111bb565b34801561076957600080fd5b506103256107783660046125af565b60186020526000908152604090205460ff1681565b34801561079957600080fd5b506019546103259060ff1681565b3480156107b357600080fd5b506102b86107c23660046125af565b61122d565b3480156107d357600080fd5b5061038b6107e2366004612568565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561081957600080fd5b506102b8610828366004612503565b61129f565b34801561083957600080fd5b506102b86108483660046125af565b611449565b34801561085957600080fd5b5060125460135460145461055592919083565b34801561087857600080fd5b5060065461063c906001600160a01b031681565b34801561089857600080fd5b5060085461032590600160a81b900460ff1681565b6005546001600160a01b031633146108e05760405162461bcd60e51b81526004016108d7906125cc565b60405180910390fd5b60088054911515600160b01b0260ff60b01b19909216919091179055565b60606003805461090d90612601565b80601f016020809104026020016040519081016040528092919081815260200182805461093990612601565b80156109865780601f1061095b57610100808354040283529160200191610986565b820191906000526020600020905b81548152906001019060200180831161096957829003601f168201915b5050505050905090565b6005546001600160a01b031633146109ba5760405162461bcd60e51b81526004016108d7906125cc565b6019805460ff1916911515919091179055565b60006109da3384846114e4565b5060015b92915050565b6005546001600160a01b03163314610a0e5760405162461bcd60e51b81526004016108d7906125cc565b60005b8251811015610a75578160186000858481518110610a3157610a3161263b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a6d81612667565b915050610a11565b505050565b6005546001600160a01b03163314610aa45760405162461bcd60e51b81526004016108d7906125cc565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610aec5760405162461bcd60e51b81526004016108d7906125cc565b600854600160b01b900460ff1615610b465760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016108d7565b6008805461ffff60a81b191661010160a81b17905543600d55565b6000610b6e848484611608565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bf35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108d7565b610c078533610c028685612680565b6114e4565b506001949350505050565b6005546001600160a01b03163314610c3c5760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052601583905560168290556017819055600c81610c708486612693565b610c7a9190612693565b1115610a755760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313225206f72206c65737300000060448201526064016108d7565b6005546001600160a01b03163314610cf25760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109da918590610c02908690612693565b6005546001600160a01b03163314610d7e5760405162461bcd60e51b81526004016108d7906125cc565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610dd65760405162461bcd60e51b81526004016108d7906125cc565b620668a08111158015610de95750600081115b610e5b5760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f203125206f6620746f6b656e73000060648201526084016108d7565b610e676012600a61278a565b610e719082612799565b60095550565b6005546001600160a01b03163314610ea15760405162461bcd60e51b81526004016108d7906125cc565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610edb573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610f095760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052600f83905560108290556011819055600c81610c708486612693565b6005546001600160a01b03163314610f675760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052601283905560138290556014819055600c81610c708486612693565b6005546001600160a01b03163314610fc55760405162461bcd60e51b81526004016108d7906125cc565b610fcf6000611c6d565b565b6005546001600160a01b03163314610ffb5760405162461bcd60e51b81526004016108d7906125cc565b306001600160a01b038316036110725760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016108d7565b816001600160a01b031663a9059cbb6110936005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af11580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7591906127b0565b60606004805461090d90612601565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108d7565b6111a43385610c028685612680565b5060019392505050565b60006109da338484611608565b6005546001600160a01b031633146111e55760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03811661120b5760405162461bcd60e51b81526004016108d7906127cd565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112575760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03811661127d5760405162461bcd60e51b81526004016108d7906127cd565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112c95760405162461bcd60e51b81526004016108d7906125cc565b61520883101561132d5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108d7565b6152088210156113925760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108d7565b620334508110156113f85760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b60648201526084016108d7565b6114046012600a61278a565b61140e9084612799565b600a55601261141e90600a61278a565b6114289083612799565b600b556114376012600a61278a565b6114419082612799565b600c55505050565b6005546001600160a01b031633146114735760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b0381166114d85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d7565b6114e181611c6d565b50565b6001600160a01b0383166115465760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108d7565b6001600160a01b0382166115a75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000811161166a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108d7565b6001600160a01b03831660009081526018602052604090205460ff161580156116ac57506001600160a01b03821660009081526018602052604090205460ff16155b1561170057600854600160b01b900460ff166117005760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108d7565b6007546001600160a01b03848116911614801561173657506001600160a01b03821660009081526018602052604090205460ff16155b801561174c5750600854600160a01b900460ff16155b1561181e57600a548111156117a35760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016108d7565b600c54816117c6846001600160a01b031660009081526020819052604090205490565b6117d09190612693565b111561181e5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108d7565b6007546001600160a01b0384811691161480159061185557506001600160a01b03821660009081526018602052604090205460ff16155b801561187a57506001600160a01b03831660009081526018602052604090205460ff16155b80156118905750600854600160a01b900460ff16155b1561197757600b548111156118e75760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016108d7565b6007546001600160a01b0383811691161461197757600c548161191f846001600160a01b031660009081526020819052604090205490565b6119299190612693565b11156119775760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108d7565b6007546001600160a01b038481169116148015611996575060195460ff165b15611a02576008546040516329a9b55b60e01b81526001600160a01b03848116600483015260248201849052909116906329a9b55b90604401600060405180830381600087803b1580156119e957600080fd5b505af11580156119fd573d6000803e3d6000fd5b505050505b6000806000611a2b60405180606001604052806000815260200160008152602001600081525090565b600854600160a01b900460ff1680611a5b57506001600160a01b03871660009081526018602052604090205460ff165b80611a7e57506001600160a01b03861660009081526018602052604090205460ff165b15611a8c5760009150611b95565b6007546001600160a01b0390811690871603611aed57601454601254601354611ab59190612693565b611abf9190612693565b6040805160608101825260125481526013546020820152601454918101919091529094508493509050611b95565b6007546001600160a01b0390811690881603611b4e57601154600f54601054611b169190612693565b611b209190612693565b60408051606081018252600f5481526010546020820152601154918101919091529094508493509050611b95565b601754601554601654611b619190612693565b611b6b9190612693565b60408051606081018252601554815260165460208201526017549181019190915290945084935090505b6064611ba18487612799565b611bab919061280f565b600854909250600160a81b900460ff168015611bd557506007546001600160a01b03888116911614155b15611be457611be48482611cbf565b611bf88787611bf38589612680565b611dfc565b8115611c64578315611c645760006064826040015187611c189190612799565b611c22919061280f565b90506000816064611c33888a612799565b611c3d919061280f565b611c479190612680565b9050611c54893083611dfc565b611c618961dead84611dfc565b50505b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600854600160a01b900460ff16610edb576008805460ff60a01b1916600160a01b1790558115611deb57306000908152602081905260409020546009548110611de95760016009541115611d1257506009545b6000611d1f846002612799565b9050600081846020015184611d349190612799565b611d3e919061280f565b90506000611d4c8285612680565b905047611d5882611fd4565b6000611d648247612680565b90506000876020015186611d789190612680565b611d82908361280f565b90506000886020015182611d969190612799565b90508015611da857611da8868261212e565b8851600090611db8846002612799565b611dc29190612799565b90508015611de057600e54611de0906001600160a01b0316826121e0565b50505050505050505b505b6008805460ff60a01b191690555050565b6001600160a01b038316611e605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108d7565b6001600160a01b038216611ec25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108d7565b6001600160a01b03831660009081526020819052604090205481811015611f3a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108d7565b611f448282612680565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611f7a908490612693565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fc691815260200190565b60405180910390a350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120095761200961263b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612062573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120869190612831565b816001815181106120995761209961263b565b6001600160a01b0392831660209182029290920101526006546120bf91309116846114e4565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906120f890859060009086903090429060040161284e565b600060405180830381600087803b15801561211257600080fd5b505af1158015612126573d6000803e3d6000fd5b505050505050565b6006546121469030906001600160a01b0316846114e4565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156121b4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121d991906128bf565b5050505050565b804710156122305760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108d7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461227d576040519150601f19603f3d011682016040523d82523d6000602084013e612282565b606091505b5050905080610a755760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108d7565b80151581146114e157600080fd5b8035612312816122f9565b919050565b60006020828403121561232957600080fd5b8135612334816122f9565b9392505050565b600060208083528351808285015260005b818110156123685785810183015185820160400152820161234c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114e157600080fd5b803561231281612389565b600080604083850312156123bc57600080fd5b82356123c781612389565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156123fe57600080fd5b823567ffffffffffffffff8082111561241657600080fd5b818501915085601f83011261242a57600080fd5b813560208282111561243e5761243e6123d5565b8160051b604051601f19603f83011681018181108682111715612463576124636123d5565b60405292835281830193508481018201928984111561248157600080fd5b948201945b838610156124a6576124978661239e565b85529482019493820193612486565b96506124b59050878201612307565b9450505050509250929050565b6000806000606084860312156124d757600080fd5b83356124e281612389565b925060208401356124f281612389565b929592945050506040919091013590565b60008060006060848603121561251857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561254257600080fd5b823561254d81612389565b9150602083013561255d816122f9565b809150509250929050565b6000806040838503121561257b57600080fd5b823561258681612389565b9150602083013561255d81612389565b6000602082840312156125a857600080fd5b5035919050565b6000602082840312156125c157600080fd5b813561233481612389565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061261557607f821691505b60208210810361263557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161267957612679612651565b5060010190565b818103818111156109de576109de612651565b808201808211156109de576109de612651565b600181815b808511156126e15781600019048211156126c7576126c7612651565b808516156126d457918102915b93841c93908002906126ab565b509250929050565b6000826126f8575060016109de565b81612705575060006109de565b816001811461271b576002811461272557612741565b60019150506109de565b60ff84111561273657612736612651565b50506001821b6109de565b5060208310610133831016604e8410600b8410161715612764575081810a6109de565b61276e83836126a6565b806000190482111561278257612782612651565b029392505050565b600061233460ff8416836126e9565b80820281158282048414176109de576109de612651565b6000602082840312156127c257600080fd5b8151612334816122f9565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b60008261282c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561284357600080fd5b815161233481612389565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561289e5784516001600160a01b031683529383019391830191600101612879565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156128d457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220697c38ebb91cab31d4000832ec3b856b72cdb1bca16c85f7566d359c6df7ead464736f6c63430008110033
Deployed Bytecode Sourcemap
11914:12434:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22769:98;;;;;;;;;;-1:-1:-1;22769:98:0;;;;;:::i;:::-;;:::i;:::-;;2444:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22435:97;;;;;;;;;;-1:-1:-1;22435:97:0;;;;;:::i;:::-;;:::i;13672:161::-;;;;;;;;;;-1:-1:-1;13672:161:0;;;;;:::i;:::-;;:::i;:::-;;;1829:14:1;;1822:22;1804:41;;1792:2;1777:18;13672:161:0;1664:187:1;23206:202:0;;;;;;;;;;-1:-1:-1;23206:202:0;;;;;:::i;:::-;;:::i;20666:152::-;;;;;;;;;;-1:-1:-1;20666:152:0;;;;;:::i;:::-;;:::i;12220:56::-;;;;;;;;;;;;;;;;;;;3330:25:1;;;3318:2;3303:18;12220:56:0;3184:177:1;3564:108:0;;;;;;;;;;-1:-1:-1;3652:12:0;;3564:108;;22540:221;;;;;;;;;;;;;:::i;13841:448::-;;;;;;;;;;-1:-1:-1;13841:448:0;;;;;:::i;:::-;;:::i;21728:298::-;;;;;;;;;;-1:-1:-1;21728:298:0;;;;;:::i;:::-;;:::i;12445:28::-;;;;;;;;;;;;;;;;3406:93;;;;;;;;;;-1:-1:-1;3406:93:0;;3489:2;4290:36:1;;4278:2;4263:18;3406:93:0;4148:184:1;23078:120:0;;;;;;;;;;-1:-1:-1;23078:120:0;;;;;:::i;:::-;;:::i;14297:248::-;;;;;;;;;;-1:-1:-1;14297:248:0;;;;;:::i;:::-;;:::i;22034:155::-;;;;;;;;;;-1:-1:-1;22034:155:0;;;;;:::i;:::-;;:::i;20826:302::-;;;;;;;;;;-1:-1:-1;20826:302:0;;;;;:::i;:::-;;:::i;23932:112::-;;;;;;;;;;-1:-1:-1;23932:112:0;;;;;:::i;:::-;;:::i;21136:286::-;;;;;;;;;;-1:-1:-1;21136:286:0;;;;;:::i;:::-;;:::i;12177:34::-;;;;;;;;;;-1:-1:-1;12177:34:0;;;;-1:-1:-1;;;12177:34:0;;;;;;21430:290;;;;;;;;;;-1:-1:-1;21430:290:0;;;;;:::i;:::-;;:::i;12845:43::-;;;;;;;;;;-1:-1:-1;12845:43:0;;;;;;;;;;;;;;;;5504:25:1;;;5560:2;5545:18;;5538:34;;;;5588:18;;;5581:34;5492:2;5477:18;12845:43:0;5302:319:1;12335:46:0;;;;;;;;;;;;;;;;12388:48;;;;;;;;;;;;;;;;12283:45;;;;;;;;;;;;;;;;3735:127;;;;;;;;;;-1:-1:-1;3735:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3836:18:0;3809:7;3836:18;;;;;;;;;;;;3735:127;10476:94;;;;;;;;;;;;;:::i;12757:35::-;;;;;;;;;;-1:-1:-1;12757:35:0;;;;;;;;;;;;12482:75;;;;;;;;;;-1:-1:-1;12482:75:0;;;;-1:-1:-1;;;;;12482:75:0;;;;;;-1:-1:-1;;;;;6042:32:1;;;6024:51;;6012:2;5997:18;12482:75:0;5878:203:1;12054:31:0;;;;;;;;;;-1:-1:-1;12054:31:0;;;;-1:-1:-1;;;;;12054:31:0;;;12561:79;;;;;;;;;;;;12598:42;12561:79;;24052:238;;;;;;;;;;-1:-1:-1;24052:238:0;;;;;:::i;:::-;;:::i;10253:87::-;;;;;;;;;;-1:-1:-1;10326:6:0;;-1:-1:-1;;;;;10326:6:0;10253:87;;2663:104;;;;;;;;;;;;;:::i;14553:410::-;;;;;;;;;;-1:-1:-1;14553:410:0;;;;;:::i;:::-;;:::i;12028:19::-;;;;;;;;;;-1:-1:-1;12028:19:0;;;;-1:-1:-1;;;;;12028:19:0;;;14971:165;;;;;;;;;;-1:-1:-1;14971:165:0;;;;;:::i;:::-;;:::i;22875:195::-;;;;;;;;;;-1:-1:-1;22875:195:0;;;;;:::i;:::-;;:::i;12897:41::-;;;;;;;;;;-1:-1:-1;12897:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12947:34;;;;;;;;;;-1:-1:-1;12947:34:0;;;;;;;;22197:230;;;;;;;;;;-1:-1:-1;22197:230:0;;;;;:::i;:::-;;:::i;4354:201::-;;;;;;;;;;-1:-1:-1;4354:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4520:18:0;;;4488:7;4520:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4354:201;23416:508;;;;;;;;;;-1:-1:-1;23416:508:0;;;;;:::i;:::-;;:::i;10578:192::-;;;;;;;;;;-1:-1:-1;10578:192:0;;;;;:::i;:::-;;:::i;12799:39::-;;;;;;;;;;-1:-1:-1;12799:39:0;;;;;;;;;;;;12000:21;;;;;;;;;;-1:-1:-1;12000:21:0;;;;-1:-1:-1;;;;;12000:21:0;;;12132:38;;;;;;;;;;-1:-1:-1;12132:38:0;;;;-1:-1:-1;;;12132:38:0;;;;;;22769:98;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;;;;;;;;;22836:14:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;22836:23:0::1;-1:-1:-1::0;;;;22836:23:0;;::::1;::::0;;;::::1;::::0;;22769:98::o;2444:100::-;2498:13;2531:5;2524:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2444:100;:::o;22435:97::-;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;22501:14:::1;:23:::0;;-1:-1:-1;;22501:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22435:97::o;13672:161::-;13747:4;13764:39;246:10;13787:7;13796:6;13764:8;:39::i;:::-;-1:-1:-1;13821:4:0;13672:161;;;;;:::o;23206:202::-;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;23303:9:::1;23298:103;23322:8;:15;23318:1;:19;23298:103;;;23384:5;23359:9;:22;23369:8;23378:1;23369:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23359:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23359:22:0;:30;;-1:-1:-1;;23359:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23339:3;::::1;::::0;::::1;:::i;:::-;;;;23298:103;;;;23206:202:::0;;:::o;20666:152::-;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;20784:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;20784:26:0::1;-1:-1:-1::0;;;;20784:26:0;;::::1;::::0;;;::::1;::::0;;20666:152::o;22540:221::-;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;22603:14:::1;::::0;-1:-1:-1;;;22603:14:0;::::1;;;22602:15;22594:52;;;::::0;-1:-1:-1;;;22594:52:0;;7661:2:1;22594:52:0::1;::::0;::::1;7643:21:1::0;7700:2;7680:18;;;7673:30;7739:26;7719:18;;;7712:54;7783:18;;22594:52:0::1;7459:348:1::0;22594:52:0::1;22657:14;:21:::0;;-1:-1:-1;;;;22689:25:0;-1:-1:-1;;;22689:25:0;;;22741:12:::1;22725:13;:28:::0;22540:221::o;13841:448::-;13973:4;13990:36;14000:6;14008:9;14019:6;13990:9;:36::i;:::-;-1:-1:-1;;;;;14066:19:0;;14039:24;14066:19;;;:11;:19;;;;;;;;246:10;14066:33;;;;;;;;14118:26;;;;14110:79;;;;-1:-1:-1;;;14110:79:0;;8014:2:1;14110:79:0;;;7996:21:1;8053:2;8033:18;;;8026:30;8092:34;8072:18;;;8065:62;-1:-1:-1;;;8143:18:1;;;8136:38;8191:19;;14110:79:0;7812:404:1;14110:79:0;14200:57;14209:6;246:10;14231:25;14250:6;14231:16;:25;:::i;:::-;14200:8;:57::i;:::-;-1:-1:-1;14277:4:0;;13841:448;-1:-1:-1;;;;13841:448:0:o;21728:298::-;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;21889:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;21873:13:::1;:53:::0;;;;;;;;;;;21982:2:::1;21920:5:::0;21946:23:::1;21907:10:::0;21895;21946:23:::1;:::i;:::-;:31;;;;:::i;:::-;21945:39;;21937:81;;;::::0;-1:-1:-1;;;21937:81:0;;8686:2:1;21937:81:0::1;::::0;::::1;8668:21:1::0;8725:2;8705:18;;;8698:30;8764:31;8744:18;;;8737:59;8813:18;;21937:81:0::1;8484:353:1::0;23078:120:0;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23163:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;23163:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23078:120::o;14297:248::-;246:10;14413:4;14467:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14467:34:0;;;;;;;;;;14413:4;;14435:80;;14458:7;;14467:47;;14504:10;;14467:47;:::i;22034:155::-;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;22129:6:::1;:27:::0;;-1:-1:-1;;;;;22129:27:0;;::::1;-1:-1:-1::0;;;;;;22129:27:0;;::::1;;::::0;;;22167:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;22034:155::o;20826:302::-;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;20964:7:::1;20950:10;:21;;:39;;;;;20988:1;20975:10;:14;20950:39;20942:114;;;::::0;-1:-1:-1;;;20942:114:0;;9044:2:1;20942:114:0::1;::::0;::::1;9026:21:1::0;9083:2;9063:18;;;9056:30;9122:34;9102:18;;;9095:62;9193:32;9173:18;;;9166:60;9243:19;;20942:114:0::1;8842:426:1::0;20942:114:0::1;21106:14;3489:2:::0;21106::::1;:14;:::i;:::-;21093:27;::::0;:10;:27:::1;:::i;:::-;21067:23;:53:::0;-1:-1:-1;20826:302:0:o;23932:112::-;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;10326:6;;24000:36:::1;::::0;-1:-1:-1;;;;;10326:6:0;;;;24000:36;::::1;;;::::0;24026:9;;24000:36:::1;::::0;;;24026:9;10326:6;24000:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23932:112:::0;:::o;21136:286::-;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;21284:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;21276:5:::1;:45:::0;;;;;;;;;;;21378:2:::1;21315:5:::0;21341:23:::1;21302:10:::0;21290;21341:23:::1;:::i;21430:290::-:0;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;21583:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;21571:9:::1;:49:::0;;;;;;;;;;;21676:2:::1;21614:5:::0;21640:23:::1;21601:10:::0;21589;21640:23:::1;:::i;10476:94::-:0;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;10541:21:::1;10559:1;10541:9;:21::i;:::-;10476:94::o:0;24052:238::-;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;24165:4:::1;-1:-1:-1::0;;;;;24145:25:0;::::1;::::0;24137:92:::1;;;::::0;-1:-1:-1;;;24137:92:0;;11031:2:1;24137:92:0::1;::::0;::::1;11013:21:1::0;11070:2;11050:18;;;11043:30;11109:34;11089:18;;;11082:62;-1:-1:-1;;;11160:18:1;;;11153:52;11222:19;;24137:92:0::1;10829:418:1::0;24137:92:0::1;24247:8;-1:-1:-1::0;;;;;24240:25:0::1;;24266:7;10326:6:::0;;-1:-1:-1;;;;;10326:6:0;;10253:87;24266:7:::1;24240:42;::::0;-1:-1:-1;;;;;;24240:42:0::1;::::0;;;;;;-1:-1:-1;;;;;11444:32:1;;;24240:42:0::1;::::0;::::1;11426:51:1::0;11493:18;;;11486:34;;;11399:18;;24240:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2663:104::-:0;2719:13;2752:7;2745:14;;;;;:::i;14553:410::-;246:10;14674:4;14723:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14723:34:0;;;;;;;;;;14776:35;;;;14768:85;;;;-1:-1:-1;;;14768:85:0;;11983:2:1;14768:85:0;;;11965:21:1;12022:2;12002:18;;;11995:30;12061:34;12041:18;;;12034:62;-1:-1:-1;;;12112:18:1;;;12105:35;12157:19;;14768:85:0;11781:401:1;14768:85:0;14864:67;246:10;14887:7;14896:34;14915:15;14896:16;:34;:::i;14864:67::-;-1:-1:-1;14951:4:0;;14553:410;-1:-1:-1;;;14553:410:0:o;14971:165::-;15049:4;15066:40;15076:10;15088:9;15099:6;15066:9;:40::i;22875:195::-;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22963:23:0;::::1;22955:69;;;;-1:-1:-1::0;;;22955:69:0::1;;;;;;;:::i;:::-;23035:15;:27:::0;;-1:-1:-1;;;;;;23035:27:0::1;-1:-1:-1::0;;;;;23035:27:0;;;::::1;::::0;;;::::1;::::0;;22875:195::o;22197:230::-;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22297:34:0;::::1;22289:80;;;;-1:-1:-1::0;;;22289:80:0::1;;;;;;;:::i;:::-;22380:16;:39:::0;;-1:-1:-1;;;;;;22380:39:0::1;-1:-1:-1::0;;;;;22380:39:0;;;::::1;::::0;;;::::1;::::0;;22197:230::o;23416:508::-;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;23542:6:::1;23532;:16;;23524:70;;;::::0;-1:-1:-1;;;23524:70:0;;12792:2:1;23524:70:0::1;::::0;::::1;12774:21:1::0;12831:2;12811:18;;;12804:30;12870:34;12850:18;;;12843:62;-1:-1:-1;;;12921:18:1;;;12914:39;12970:19;;23524:70:0::1;12590:405:1::0;23524:70:0::1;23624:6;23613:7;:17;;23605:72;;;::::0;-1:-1:-1;;;23605:72:0;;13202:2:1;23605:72:0::1;::::0;::::1;13184:21:1::0;13241:2;13221:18;;;13214:30;13280:34;13260:18;;;13253:62;-1:-1:-1;;;13331:18:1;;;13324:40;13381:19;;23605:72:0::1;13000:406:1::0;23605:72:0::1;23709:7;23696:9;:20;;23688:75;;;::::0;-1:-1:-1;;;23688:75:0;;13613:2:1;23688:75:0::1;::::0;::::1;13595:21:1::0;13652:2;13632:18;;;13625:30;13691:34;13671:18;;;13664:62;-1:-1:-1;;;13742:18:1;;;13735:40;13792:19;;23688:75:0::1;13411:406:1::0;23688:75:0::1;23797:14;3489:2:::0;23797::::1;:14;:::i;:::-;23788:23;::::0;:6;:23:::1;:::i;:::-;23774:11;:37:::0;3489:2;23847:14:::1;::::0;:2:::1;:14;:::i;:::-;23837:24;::::0;:7;:24:::1;:::i;:::-;23822:12;:39:::0;23901:14:::1;3489:2:::0;23901::::1;:14;:::i;:::-;23889:26;::::0;:9;:26:::1;:::i;:::-;23872:14;:43:::0;-1:-1:-1;;;23416:508:0:o;10578:192::-;10326:6;;-1:-1:-1;;;;;10326:6:0;246:10;10388:23;10380:68;;;;-1:-1:-1;;;10380:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10667:22:0;::::1;10659:73;;;::::0;-1:-1:-1;;;10659:73:0;;14024:2:1;10659:73:0::1;::::0;::::1;14006:21:1::0;14063:2;14043:18;;;14036:30;14102:34;14082:18;;;14075:62;-1:-1:-1;;;14153:18:1;;;14146:36;14199:19;;10659:73:0::1;13822:402:1::0;10659:73:0::1;10743:19;10753:8;10743:9;:19::i;:::-;10578:192:::0;:::o;9286:380::-;-1:-1:-1;;;;;9422:19:0;;9414:68;;;;-1:-1:-1;;;9414:68:0;;14431:2:1;9414:68:0;;;14413:21:1;14470:2;14450:18;;;14443:30;14509:34;14489:18;;;14482:62;-1:-1:-1;;;14560:18:1;;;14553:34;14604:19;;9414:68:0;14229:400:1;9414:68:0;-1:-1:-1;;;;;9501:21:0;;9493:68;;;;-1:-1:-1;;;9493:68:0;;14836:2:1;9493:68:0;;;14818:21:1;14875:2;14855:18;;;14848:30;14914:34;14894:18;;;14887:62;-1:-1:-1;;;14965:18:1;;;14958:32;15007:19;;9493:68:0;14634:398:1;9493:68:0;-1:-1:-1;;;;;9574:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9626:32;;3330:25:1;;;9626:32:0;;3303:18:1;9626:32:0;;;;;;;9286:380;;;:::o;15144:3019::-;15294:1;15285:6;:10;15277:64;;;;-1:-1:-1;;;15277:64:0;;15239:2:1;15277:64:0;;;15221:21:1;15278:2;15258:18;;;15251:30;15317:34;15297:18;;;15290:62;-1:-1:-1;;;15368:18:1;;;15361:39;15417:19;;15277:64:0;15037:405:1;15277:64:0;-1:-1:-1;;;;;15359:17:0;;;;;;:9;:17;;;;;;;;15358:18;:43;;;;-1:-1:-1;;;;;;15381:20:0;;;;;;:9;:20;;;;;;;;15380:21;15358:43;15354:122;;;15426:14;;-1:-1:-1;;;15426:14:0;;;;15418:46;;;;-1:-1:-1;;;15418:46:0;;15649:2:1;15418:46:0;;;15631:21:1;15688:2;15668:18;;;15661:30;-1:-1:-1;;;15707:18:1;;;15700:49;15766:18;;15418:46:0;15447:343:1;15418:46:0;15502:4;;-1:-1:-1;;;;;15492:14:0;;;15502:4;;15492:14;:39;;;;-1:-1:-1;;;;;;15511:20:0;;;;;;:9;:20;;;;;;;;15510:21;15492:39;:54;;;;-1:-1:-1;15536:10:0;;-1:-1:-1;;;15536:10:0;;;;15535:11;15492:54;15488:306;;;15581:11;;15571:6;:21;;15563:63;;;;-1:-1:-1;;;15563:63:0;;15997:2:1;15563:63:0;;;15979:21:1;16036:2;16016:18;;;16009:30;16075:31;16055:18;;;16048:59;16124:18;;15563:63:0;15795:353:1;15563:63:0;15700:14;;15690:6;15667:20;15677:9;-1:-1:-1;;;;;3836:18:0;3809:7;3836:18;;;;;;;;;;;;3735:127;15667:20;:29;;;;:::i;:::-;:47;;15641:141;;;;-1:-1:-1;;;15641:141:0;;16355:2:1;15641:141:0;;;16337:21:1;;;16374:18;;;16367:30;16433:34;16413:18;;;16406:62;16485:18;;15641:141:0;16153:356:1;15641:141:0;15834:4;;-1:-1:-1;;;;;15824:14:0;;;15834:4;;15824:14;;;;:39;;-1:-1:-1;;;;;;15843:20:0;;;;;;:9;:20;;;;;;;;15842:21;15824:39;:61;;;;-1:-1:-1;;;;;;15868:17:0;;;;;;:9;:17;;;;;;;;15867:18;15824:61;:76;;;;-1:-1:-1;15890:10:0;;-1:-1:-1;;;15890:10:0;;;;15889:11;15824:76;15806:423;;;15945:12;;15935:6;:22;;15927:65;;;;-1:-1:-1;;;15927:65:0;;16716:2:1;15927:65:0;;;16698:21:1;16755:2;16735:18;;;16728:30;16794:32;16774:18;;;16767:60;16844:18;;15927:65:0;16514:354:1;15927:65:0;16024:4;;-1:-1:-1;;;;;16011:17:0;;;16024:4;;16011:17;16007:211;;16112:14;;16102:6;16079:20;16089:9;-1:-1:-1;;;;;3836:18:0;3809:7;3836:18;;;;;;;;;;;;3735:127;16079:20;:29;;;;:::i;:::-;:47;;16049:153;;;;-1:-1:-1;;;16049:153:0;;16355:2:1;16049:153:0;;;16337:21:1;;;16374:18;;;16367:30;16433:34;16413:18;;;16406:62;16485:18;;16049:153:0;16153:356:1;16049:153:0;16290:4;;-1:-1:-1;;;;;16280:14:0;;;16290:4;;16280:14;:32;;;;-1:-1:-1;16298:14:0;;;;16280:32;16277:126;;;16343:16;;16329:62;;-1:-1:-1;;;16329:62:0;;-1:-1:-1;;;;;11444:32:1;;;16329:62:0;;;11426:51:1;11493:18;;;11486:34;;;16343:16:0;;;;16329:43;;11399:18:1;;16329:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16277:126;16415:15;16441:14;16466:11;16488:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;16488:25:0;16601:10;;-1:-1:-1;;;16601:10:0;;;;;:31;;-1:-1:-1;;;;;;16615:17:0;;;;;;:9;:17;;;;;;;;16601:31;:55;;;-1:-1:-1;;;;;;16636:20:0;;;;;;:9;:20;;;;;;;;16601:55;16597:833;;;16677:1;16671:7;;16597:833;;;16742:4;;-1:-1:-1;;;;;16742:4:0;;;16729:17;;;;16725:705;;16868:14;;:9;16829:19;16790;;:58;;16829:19;16790:58;:::i;:::-;:92;;;;:::i;:::-;16928:24;;;;;;;;16943:9;16928:24;;;;;;;;;;;;;;;;;;16763:119;;-1:-1:-1;16763:119:0;;-1:-1:-1;16928:24:0;-1:-1:-1;16725:705:0;;;16984:4;;-1:-1:-1;;;;;16984:4:0;;;16974:14;;;;16970:460;;17102:10;;:5;17067:15;17032;;:50;;17067:15;17032:50;:::i;:::-;:80;;;;:::i;:::-;17159:20;;;;;;;;17174:5;17159:20;;;;;;;;;;;;;;;;;;17005:107;;-1:-1:-1;17005:107:0;;-1:-1:-1;17159:20:0;-1:-1:-1;16970:460:0;;;17325:18;;:13;17282:23;17239;;:66;;17282:23;17239:66;:::i;:::-;:104;;;;:::i;:::-;17390:28;;;;;;;;17405:13;17390:28;;;;;;;;;;;;;;;;;;17212:131;;-1:-1:-1;17212:131:0;;-1:-1:-1;17390:28:0;-1:-1:-1;16970:460:0;17468:3;17449:15;17458:6;17449;:15;:::i;:::-;17448:23;;;;:::i;:::-;17585:18;;17442:29;;-1:-1:-1;;;;17585:18:0;;;;:36;;;;-1:-1:-1;17617:4:0;;-1:-1:-1;;;;;17607:14:0;;;17617:4;;17607:14;;17585:36;17581:72;;;17623:30;17631:7;17640:12;17623:7;:30::i;:::-;17695:48;17711:6;17719:9;17730:12;17739:3;17730:6;:12;:::i;:::-;17695:15;:48::i;:::-;17758:7;;17754:402;;17830:11;;17826:317;;17862:18;17914:3;17893:12;:17;;;17884:6;:26;;;;:::i;:::-;17883:34;;;;:::i;:::-;17862:55;-1:-1:-1;17936:17:0;17862:55;17977:3;17957:16;17966:7;17957:6;:16;:::i;:::-;17956:24;;;;:::i;:::-;:37;;;;:::i;:::-;17936:57;;18012:49;18028:6;18044:4;18051:9;18012:15;:49::i;:::-;18080:47;18096:6;12598:42;18116:10;18080:15;:47::i;:::-;17843:300;;17826:317;15266:2897;;;;15144:3019;;;:::o;10778:173::-;10853:6;;;-1:-1:-1;;;;;10870:17:0;;;-1:-1:-1;;;;;;10870:17:0;;;;;;;10903:40;;10853:6;;;10870:17;10853:6;;10903:40;;10834:16;;10903:40;10823:128;10778:173;:::o;18171:1437::-;13029:10;;-1:-1:-1;;;13029:10:0;;;;13024:110;;13056:10;:17;;-1:-1:-1;;;;13056:17:0;-1:-1:-1;;;13056:17:0;;;18262:49;;18293:7:::1;18262:49;18367:4;18323:23;3836:18:::0;;;;;;;;;;;18407:23:::1;::::0;18388:42;::::1;18384:1217;;18477:1;18451:23;;:27;18447:109;;;-1:-1:-1::0;18517:23:0::1;::::0;18447:109:::1;18627:19;18649:11;:7:::0;18659:1:::1;18649:11;:::i;:::-;18627:33;;18675:32;18769:11;18729:9;:19;;;18711:15;:37;;;;:::i;:::-;18710:70;;;;:::i;:::-;18675:105:::0;-1:-1:-1;18795:14:0::1;18812:42;18675:105:::0;18812:15;:42:::1;:::i;:::-;18795:59:::0;-1:-1:-1;18896:21:0::1;18934:24;18795:59:::0;18934:16:::1;:24::i;:::-;18975:20;18998:38;19022:14:::0;18998:21:::1;:38;:::i;:::-;18975:61;;19051:19;19103:9;:19;;;19089:11;:33;;;;:::i;:::-;19073:50;::::0;:12;:50:::1;:::i;:::-;19051:72;;19138:29;19184:9;:19;;;19170:11;:33;;;;:::i;:::-;19138:65:::0;-1:-1:-1;19224:25:0;;19220:172:::1;;19315:61;19328:24;19354:21;19315:12;:61::i;:::-;19449:19:::0;;19408:20:::1;::::0;19431:15:::1;:11:::0;19445:1:::1;19431:15;:::i;:::-;:37;;;;:::i;:::-;19408:60:::0;-1:-1:-1;19487:16:0;;19483:105:::1;;19532:15;::::0;19524:48:::1;::::0;-1:-1:-1;;;;;19532:15:0::1;19559:12:::0;19524:34:::1;:48::i;:::-;18432:1169;;;;;;;;18384:1217;18249:1359;13088:1;13104:10:::0;:18;;-1:-1:-1;;;;13104:18:0;;;18171:1437;;:::o;7867:578::-;-1:-1:-1;;;;;8007:20:0;;7999:70;;;;-1:-1:-1;;;7999:70:0;;17297:2:1;7999:70:0;;;17279:21:1;17336:2;17316:18;;;17309:30;17375:34;17355:18;;;17348:62;-1:-1:-1;;;17426:18:1;;;17419:35;17471:19;;7999:70:0;17095:401:1;7999:70:0;-1:-1:-1;;;;;8088:23:0;;8080:71;;;;-1:-1:-1;;;8080:71:0;;17703:2:1;8080:71:0;;;17685:21:1;17742:2;17722:18;;;17715:30;17781:34;17761:18;;;17754:62;-1:-1:-1;;;17832:18:1;;;17825:33;17875:19;;8080:71:0;17501:399:1;8080:71:0;-1:-1:-1;;;;;8188:17:0;;8164:21;8188:17;;;;;;;;;;;8224:23;;;;8216:74;;;;-1:-1:-1;;;8216:74:0;;18107:2:1;8216:74:0;;;18089:21:1;18146:2;18126:18;;;18119:30;18185:34;18165:18;;;18158:62;-1:-1:-1;;;18236:18:1;;;18229:36;18282:19;;8216:74:0;17905:402:1;8216:74:0;8321:22;8337:6;8321:13;:22;:::i;:::-;-1:-1:-1;;;;;8301:17:0;;;:9;:17;;;;;;;;;;;:42;;;;8354:20;;;;;;;;:30;;8378:6;;8301:9;8354:30;;8378:6;;8354:30;:::i;:::-;;;;;;;;8419:9;-1:-1:-1;;;;;8402:35:0;8411:6;-1:-1:-1;;;;;8402:35:0;;8430:6;8402:35;;;;3330:25:1;;3318:2;3303:18;;3184:177;8402:35:0;;;;;;;;7988:457;7867:578;;;:::o;19616:534::-;19766:16;;;19780:1;19766:16;;;;;;;;19742:21;;19766:16;;;;;;;;;;-1:-1:-1;19766:16:0;19742:40;;19811:4;19793;19798:1;19793:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19793:23:0;;;:7;;;;;;;;;;:23;;;;19837:6;;:13;;;-1:-1:-1;;;19837:13:0;;;;:6;;;;;:11;;:13;;;;;19793:7;;19837:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19827:4;19832:1;19827:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19827:23:0;;;:7;;;;;;;;;:23;19895:6;;19863:53;;19880:4;;19895:6;19904:11;19863:8;:53::i;:::-;19955:6;;:187;;-1:-1:-1;;;19955:187:0;;-1:-1:-1;;;;;19955:6:0;;;;:57;;:187;;20027:11;;19955:6;;20069:4;;20096;;20116:15;;19955:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19671:479;19616:534;:::o;20158:500::-;20338:6;;20306:53;;20323:4;;-1:-1:-1;;;;;20338:6:0;20347:11;20306:8;:53::i;:::-;20402:6;;:248;;-1:-1:-1;;;20402:248:0;;20467:4;20402:248;;;19894:34:1;19944:18;;;19937:34;;;20402:6:0;19987:18:1;;;19980:34;;;20030:18;;;20023:34;12598:42:0;20073:19:1;;;20066:44;20624:15:0;20126:19:1;;;20119:35;-1:-1:-1;;;;;20402:6:0;;;;:22;;20433:9;;19828:19:1;;20402:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20158:500;;:::o;9696:319::-;9811:6;9786:21;:31;;9778:73;;;;-1:-1:-1;;;9778:73:0;;20678:2:1;9778:73:0;;;20660:21:1;20717:2;20697:18;;;20690:30;20756:31;20736:18;;;20729:59;20805:18;;9778:73:0;20476:353:1;9778:73:0;9865:12;9883:9;-1:-1:-1;;;;;9883:14:0;9906:6;9883:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9864:54;;;9937:7;9929:78;;;;-1:-1:-1;;;9929:78:0;;21246:2:1;9929:78:0;;;21228:21:1;21285:2;21265:18;;;21258:30;21324:34;21304:18;;;21297:62;21395:28;21375:18;;;21368:56;21441:19;;9929:78:0;21044:422:1;14:118;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:128;202:20;;231:28;202:20;231:28;:::i;:::-;137:128;;;:::o;270:241::-;326:6;379:2;367:9;358:7;354:23;350:32;347:52;;;395:1;392;385:12;347:52;434:9;421:23;453:28;475:5;453:28;:::i;:::-;500:5;270:241;-1:-1:-1;;;270:241:1:o;516:548::-;628:4;657:2;686;675:9;668:21;718:6;712:13;761:6;756:2;745:9;741:18;734:34;786:1;796:140;810:6;807:1;804:13;796:140;;;905:14;;;901:23;;895:30;871:17;;;890:2;867:26;860:66;825:10;;796:140;;;800:3;985:1;980:2;971:6;960:9;956:22;952:31;945:42;1055:2;1048;1044:7;1039:2;1031:6;1027:15;1023:29;1012:9;1008:45;1004:54;996:62;;;;516:548;;;;:::o;1069:131::-;-1:-1:-1;;;;;1144:31:1;;1134:42;;1124:70;;1190:1;1187;1180:12;1205:134;1273:20;;1302:31;1273:20;1302:31;:::i;1344:315::-;1412:6;1420;1473:2;1461:9;1452:7;1448:23;1444:32;1441:52;;;1489:1;1486;1479:12;1441:52;1528:9;1515:23;1547:31;1572:5;1547:31;:::i;:::-;1597:5;1649:2;1634:18;;;;1621:32;;-1:-1:-1;;;1344:315:1:o;1856:127::-;1917:10;1912:3;1908:20;1905:1;1898:31;1948:4;1945:1;1938:15;1972:4;1969:1;1962:15;1988:1191;2078:6;2086;2139:2;2127:9;2118:7;2114:23;2110:32;2107:52;;;2155:1;2152;2145:12;2107:52;2195:9;2182:23;2224:18;2265:2;2257:6;2254:14;2251:34;;;2281:1;2278;2271:12;2251:34;2319:6;2308:9;2304:22;2294:32;;2364:7;2357:4;2353:2;2349:13;2345:27;2335:55;;2386:1;2383;2376:12;2335:55;2422:2;2409:16;2444:4;2467:2;2463;2460:10;2457:36;;;2473:18;;:::i;:::-;2519:2;2516:1;2512:10;2551:2;2545:9;2614:2;2610:7;2605:2;2601;2597:11;2593:25;2585:6;2581:38;2669:6;2657:10;2654:22;2649:2;2637:10;2634:18;2631:46;2628:72;;;2680:18;;:::i;:::-;2716:2;2709:22;2766:18;;;2800:15;;;;-1:-1:-1;2842:11:1;;;2838:20;;;2870:19;;;2867:39;;;2902:1;2899;2892:12;2867:39;2926:11;;;;2946:148;2962:6;2957:3;2954:15;2946:148;;;3028:23;3047:3;3028:23;:::i;:::-;3016:36;;2979:12;;;;3072;;;;2946:148;;;3113:6;-1:-1:-1;3138:35:1;;-1:-1:-1;3154:18:1;;;3138:35;:::i;:::-;3128:45;;;;;;1988:1191;;;;;:::o;3366:456::-;3443:6;3451;3459;3512:2;3500:9;3491:7;3487:23;3483:32;3480:52;;;3528:1;3525;3518:12;3480:52;3567:9;3554:23;3586:31;3611:5;3586:31;:::i;:::-;3636:5;-1:-1:-1;3693:2:1;3678:18;;3665:32;3706:33;3665:32;3706:33;:::i;:::-;3366:456;;3758:7;;-1:-1:-1;;;3812:2:1;3797:18;;;;3784:32;;3366:456::o;3827:316::-;3904:6;3912;3920;3973:2;3961:9;3952:7;3948:23;3944:32;3941:52;;;3989:1;3986;3979:12;3941:52;-1:-1:-1;;4012:23:1;;;4082:2;4067:18;;4054:32;;-1:-1:-1;4133:2:1;4118:18;;;4105:32;;3827:316;-1:-1:-1;3827:316:1:o;4337:382::-;4402:6;4410;4463:2;4451:9;4442:7;4438:23;4434:32;4431:52;;;4479:1;4476;4469:12;4431:52;4518:9;4505:23;4537:31;4562:5;4537:31;:::i;:::-;4587:5;-1:-1:-1;4644:2:1;4629:18;;4616:32;4657:30;4616:32;4657:30;:::i;:::-;4706:7;4696:17;;;4337:382;;;;;:::o;4724:388::-;4792:6;4800;4853:2;4841:9;4832:7;4828:23;4824:32;4821:52;;;4869:1;4866;4859:12;4821:52;4908:9;4895:23;4927:31;4952:5;4927:31;:::i;:::-;4977:5;-1:-1:-1;5034:2:1;5019:18;;5006:32;5047:33;5006:32;5047:33;:::i;5117:180::-;5176:6;5229:2;5217:9;5208:7;5204:23;5200:32;5197:52;;;5245:1;5242;5235:12;5197:52;-1:-1:-1;5268:23:1;;5117:180;-1:-1:-1;5117:180:1:o;5626:247::-;5685:6;5738:2;5726:9;5717:7;5713:23;5709:32;5706:52;;;5754:1;5751;5744:12;5706:52;5793:9;5780:23;5812:31;5837:5;5812:31;:::i;6309:356::-;6511:2;6493:21;;;6530:18;;;6523:30;6589:34;6584:2;6569:18;;6562:62;6656:2;6641:18;;6309:356::o;6670:380::-;6749:1;6745:12;;;;6792;;;6813:61;;6867:4;6859:6;6855:17;6845:27;;6813:61;6920:2;6912:6;6909:14;6889:18;6886:38;6883:161;;6966:10;6961:3;6957:20;6954:1;6947:31;7001:4;6998:1;6991:15;7029:4;7026:1;7019:15;6883:161;;6670:380;;;:::o;7055:127::-;7116:10;7111:3;7107:20;7104:1;7097:31;7147:4;7144:1;7137:15;7171:4;7168:1;7161:15;7187:127;7248:10;7243:3;7239:20;7236:1;7229:31;7279:4;7276:1;7269:15;7303:4;7300:1;7293:15;7319:135;7358:3;7379:17;;;7376:43;;7399:18;;:::i;:::-;-1:-1:-1;7446:1:1;7435:13;;7319:135::o;8221:128::-;8288:9;;;8309:11;;;8306:37;;;8323:18;;:::i;8354:125::-;8419:9;;;8440:10;;;8437:36;;;8453:18;;:::i;9273:422::-;9362:1;9405:5;9362:1;9419:270;9440:7;9430:8;9427:21;9419:270;;;9499:4;9495:1;9491:6;9487:17;9481:4;9478:27;9475:53;;;9508:18;;:::i;:::-;9558:7;9548:8;9544:22;9541:55;;;9578:16;;;;9541:55;9657:22;;;;9617:15;;;;9419:270;;;9423:3;9273:422;;;;;:::o;9700:806::-;9749:5;9779:8;9769:80;;-1:-1:-1;9820:1:1;9834:5;;9769:80;9868:4;9858:76;;-1:-1:-1;9905:1:1;9919:5;;9858:76;9950:4;9968:1;9963:59;;;;10036:1;10031:130;;;;9943:218;;9963:59;9993:1;9984:10;;10007:5;;;10031:130;10068:3;10058:8;10055:17;10052:43;;;10075:18;;:::i;:::-;-1:-1:-1;;10131:1:1;10117:16;;10146:5;;9943:218;;10245:2;10235:8;10232:16;10226:3;10220:4;10217:13;10213:36;10207:2;10197:8;10194:16;10189:2;10183:4;10180:12;10176:35;10173:77;10170:159;;;-1:-1:-1;10282:19:1;;;10314:5;;10170:159;10361:34;10386:8;10380:4;10361:34;:::i;:::-;10431:6;10427:1;10423:6;10419:19;10410:7;10407:32;10404:58;;;10442:18;;:::i;:::-;10480:20;;9700:806;-1:-1:-1;;;9700:806:1:o;10511:140::-;10569:5;10598:47;10639:4;10629:8;10625:19;10619:4;10598:47;:::i;10656:168::-;10729:9;;;10760;;10777:15;;;10771:22;;10757:37;10747:71;;10798:18;;:::i;11531:245::-;11598:6;11651:2;11639:9;11630:7;11626:23;11622:32;11619:52;;;11667:1;11664;11657:12;11619:52;11699:9;11693:16;11718:28;11740:5;11718:28;:::i;12187:398::-;12389:2;12371:21;;;12428:2;12408:18;;;12401:30;12467:34;12462:2;12447:18;;12440:62;-1:-1:-1;;;12533:2:1;12518:18;;12511:32;12575:3;12560:19;;12187:398::o;16873:217::-;16913:1;16939;16929:132;;16983:10;16978:3;16974:20;16971:1;16964:31;17018:4;17015:1;17008:15;17046:4;17043:1;17036:15;16929:132;-1:-1:-1;17075:9:1;;16873:217::o;18312:251::-;18382:6;18435:2;18423:9;18414:7;18410:23;18406:32;18403:52;;;18451:1;18448;18441:12;18403:52;18483:9;18477:16;18502:31;18527:5;18502:31;:::i;18568:980::-;18830:4;18878:3;18867:9;18863:19;18909:6;18898:9;18891:25;18935:2;18973:6;18968:2;18957:9;18953:18;18946:34;19016:3;19011:2;19000:9;18996:18;18989:31;19040:6;19075;19069:13;19106:6;19098;19091:22;19144:3;19133:9;19129:19;19122:26;;19183:2;19175:6;19171:15;19157:29;;19204:1;19214:195;19228:6;19225:1;19222:13;19214:195;;;19293:13;;-1:-1:-1;;;;;19289:39:1;19277:52;;19384:15;;;;19349:12;;;;19325:1;19243:9;19214:195;;;-1:-1:-1;;;;;;;19465:32:1;;;;19460:2;19445:18;;19438:60;-1:-1:-1;;;19529:3:1;19514:19;19507:35;19426:3;18568:980;-1:-1:-1;;;18568:980:1:o;20165:306::-;20253:6;20261;20269;20322:2;20310:9;20301:7;20297:23;20293:32;20290:52;;;20338:1;20335;20328:12;20290:52;20367:9;20361:16;20351:26;;20417:2;20406:9;20402:18;20396:25;20386:35;;20461:2;20450:9;20446:18;20440:25;20430:35;;20165:306;;;;;:::o
Swarm Source
ipfs://697c38ebb91cab31d4000832ec3b856b72cdb1bca16c85f7566d359c6df7ead4
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.