Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
500,000,000 CHIP
Holders
64
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000000150930891 CHIPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ChipToken
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-28 */ // SPDX-License-Identifier: MIT /** C-TEAM ALWAYS DREAMING BIG... CHIP, CHIP, CHIP!! * */ pragma solidity 0.8.13; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ 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); } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Pair { function sync() external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; } contract ChipToken is Context, IERC20, IERC20Metadata, Ownable { // Openzeppelin variables mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; // My variables bool private inSwap; uint256 internal _marketingFeeCollected; uint256 internal _donationFeeCollected; uint256 internal _liquidityFeeCollected; uint256 public minTokensBeforeSwap; address public marketing_wallet; address public donation_wallet; address public liquidity_wallet; IUniswapV2Router02 public router; address public pair; uint public _feeDecimal = 2; // index 0 = buy fee, index 1 = sell fee, index 2 = p2p fee uint[] public _marketingFee; uint[] public _donationFee; uint[] public _liquidityFee; bool public swapEnabled = true; bool public isFeeActive = false; mapping(address => bool) public isTaxless; mapping(address => bool) public isMaxTxExempt; mapping(address => bool) public blacklist; uint blocks_autoblacklist_active; mapping(address => bool) public whitelist; uint public maxTxAmount; uint public maxWalletAmount; bool public tradingOpen = true; bool public restrictionsEnabled = false; uint extra_fee_percent; mapping(address => uint) public lastTx; uint cooldown_period; event Swap(uint swaped, uint sentToMarketing, uint sentToDonation); event AutoLiquify(uint256 amountETH, uint256 amountTokens); // Openzeppelin functions /** * @dev Sets the values for {name} and {symbol}. * * The default 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() { // Editable string memory e_name = "Chip Token"; string memory e_symbol = "CHIP"; marketing_wallet = 0x2B7eE5c88E18E7343ec787c7261Cc62169C4902D; donation_wallet = 0xC985FEFf12c16F3F308A55202A6BD6b7B8E4f362; liquidity_wallet = 0x2d0B9D9B03c2B0cC2610150a427ee03A63c80B5B; uint e_totalSupply = 500_000_000 ether; minTokensBeforeSwap = e_totalSupply; // Off by default cooldown_period = 2 minutes; extra_fee_percent = 9000; // End editable _name = e_name; _symbol = e_symbol; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); router = _uniswapV2Router; _marketingFee.push(300); _marketingFee.push(300); _marketingFee.push(0); _donationFee.push(300); _donationFee.push(300); _donationFee.push(0); _liquidityFee.push(200); _liquidityFee.push(200); _liquidityFee.push(0); isTaxless[msg.sender] = true; isTaxless[address(this)] = true; isTaxless[marketing_wallet] = true; isTaxless[donation_wallet] = true; isTaxless[liquidity_wallet] = true; isTaxless[address(0)] = true; isMaxTxExempt[msg.sender] = true; isMaxTxExempt[address(this)] = true; isMaxTxExempt[marketing_wallet] = true; isMaxTxExempt[donation_wallet] = true; isMaxTxExempt[liquidity_wallet] = true; isMaxTxExempt[pair] = true; isMaxTxExempt[address(router)] = true; _mint(msg.sender, e_totalSupply); setMaxWalletPercentage(1000); // 100% setMaxTxPercentage(1000); // 100% } /** * @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: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, 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}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, 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}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, 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) { address owner = _msgSender(); _approve(owner, spender, _allowances[owner][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) { address owner = _msgSender(); uint256 currentAllowance = _allowances[owner][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This 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: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); // My implementation require(!blacklist[from] && !blacklist[to], "sender or recipient is blacklisted!"); require(isMaxTxExempt[from] || amount <= maxTxAmount, "Transfer exceeds limit!"); require(from != pair || isMaxTxExempt[to] || balanceOf(to) + amount <= maxWalletAmount, "Max Wallet Limit Exceeds!"); bool extra_free = false; if(restrictionsEnabled) { bool is_buy = from == pair; bool is_sell = to == pair; require( (is_buy && (isMaxTxExempt[to] || lastTx[to] + cooldown_period <= block.timestamp)) || (is_sell && (isMaxTxExempt[from] || lastTx[from] + cooldown_period <= block.timestamp)) || (!is_buy && !is_sell && lastTx[from] + cooldown_period <= block.timestamp) , "Must wait cooldown period"); if(is_buy) { lastTx[to] = block.timestamp; }else { lastTx[from] = block.timestamp; } if(is_buy && !whitelist[to] || !is_buy && !whitelist[from]) { extra_free = true; } } if(from == owner() && to == pair) { restrictionsEnabled = true; minTokensBeforeSwap = 1_000_000 ether; } if (swapEnabled && !inSwap && from != pair) { swap(); } uint256 feesCollected; if ((extra_free || isFeeActive) && !isTaxless[from] && !isTaxless[to] && !inSwap) { bool sell = to == pair; bool p2p = from != pair && to != pair; feesCollected = calculateFee(p2p ? 2 : sell ? 1 : 0, amount, extra_free); } amount -= feesCollected; _balances[from] -= feesCollected; _balances[address(this)] += feesCollected; // End my implementation uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "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); } /** * @dev Spend `amount` form the allowance of `owner` toward `spender`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} // My functions modifier lockTheSwap() { inSwap = true; _; inSwap = false; } function sendViaCall(address payable _to, uint amount) private { (bool sent, bytes memory data) = _to.call{value: amount}(""); data; require(sent, "Failed to send Ether"); } function swap() private lockTheSwap { // How much are we swaping? uint totalCollected = _marketingFeeCollected + _donationFeeCollected + _liquidityFeeCollected; uint amountToSwap = _marketingFeeCollected + _donationFeeCollected + (_liquidityFeeCollected / 2); uint amountTokensToLiquidity = totalCollected - amountToSwap; if(minTokensBeforeSwap > totalCollected) return; // Let's swap for eth now address[] memory sellPath = new address[](2); sellPath[0] = address(this); sellPath[1] = router.WETH(); uint balanceBefore = address(this).balance; _approve(address(this), address(router), amountToSwap); router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, sellPath, address(this), block.timestamp ); uint amountFee = address(this).balance - balanceBefore; // Send to marketing uint amountMarketing = (amountFee * _marketingFeeCollected) / totalCollected; if(amountMarketing > 0) sendViaCall(payable(marketing_wallet), amountMarketing); // Send to donations uint amountDonation = (amountFee * _donationFeeCollected) / totalCollected; if(amountDonation > 0) sendViaCall(payable(donation_wallet), amountDonation); // Send to LP uint256 amountETHLiquidity = address(this).balance; if(amountTokensToLiquidity > 0){ _approve(address(this), address(router), amountTokensToLiquidity); router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountTokensToLiquidity, 0, 0, liquidity_wallet, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountTokensToLiquidity); } _marketingFeeCollected = 0; _donationFeeCollected = 0; _liquidityFeeCollected = 0; emit Swap(totalCollected, amountMarketing, amountDonation); } function calculateFee(uint256 feeIndex, uint256 amount, bool extra_fee) internal returns(uint256) { if(extra_fee) { uint256 extraFee = (amount * extra_fee_percent) / (10**(_feeDecimal + 2)); _marketingFeeCollected += extraFee; return extraFee; } uint256 marketingFee = (amount * _marketingFee[feeIndex]) / (10**(_feeDecimal + 2)); uint256 donationFee = (amount * _donationFee[feeIndex]) / (10**(_feeDecimal + 2)); uint256 liquidityFee = (amount * _liquidityFee[feeIndex]) / (10**(_feeDecimal + 2)); _marketingFeeCollected += marketingFee; _donationFeeCollected += donationFee; _liquidityFeeCollected += liquidityFee; return marketingFee + donationFee + liquidityFee; } function setMaxTxPercentage(uint256 percentage) public onlyOwner { maxTxAmount = (_totalSupply * percentage) / 10000; } function setMaxWalletPercentage(uint256 percentage) public onlyOwner { maxWalletAmount = (_totalSupply * percentage) / 10000; } function setMinTokensBeforeSwap(uint256 amount) external onlyOwner { minTokensBeforeSwap = amount; } function setMarketingWallet(address wallet) external onlyOwner { marketing_wallet = wallet; } function setDonationWallet(address wallet) external onlyOwner { donation_wallet = wallet; } function setLiquidityWallet(address wallet) external onlyOwner { liquidity_wallet = wallet; } function setMarketingFees(uint256 buy, uint256 sell, uint256 p2p) external onlyOwner { _marketingFee[0] = buy; _marketingFee[1] = sell; _marketingFee[2] = p2p; } function setDonationFees(uint256 buy, uint256 sell, uint256 p2p) external onlyOwner { _donationFee[0] = buy; _donationFee[1] = sell; _donationFee[2] = p2p; } function setLiquidityFees(uint256 buy, uint256 sell, uint256 p2p) external onlyOwner { _liquidityFee[0] = buy; _liquidityFee[1] = sell; _liquidityFee[2] = p2p; } function setSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function setFeeActive(bool value) external onlyOwner { isFeeActive = value; } function setTaxless(address account, bool value) external onlyOwner { isTaxless[account] = value; } function setMaxTxExempt(address account, bool value) external onlyOwner { isMaxTxExempt[account] = value; } function setBlacklist(address account, bool isBlacklisted) external onlyOwner { blacklist[account] = isBlacklisted; } function multiBlacklist(address[] memory addresses, bool areBlacklisted) external onlyOwner { for (uint256 i = 0;i < addresses.length; i++){ blacklist[addresses[i]] = areBlacklisted; } } function setWhitelist(address account, bool isWhitelisted) external onlyOwner { whitelist[account] = isWhitelisted; } function multiWhitelist(address[] memory addresses, bool areWhitelisted) external onlyOwner { for (uint256 i = 0;i < addresses.length; i++){ whitelist[addresses[i]] = areWhitelisted; } } function setRestrictionsEnabled(bool value) external onlyOwner { restrictionsEnabled = value; } // switch Trading function setTrading(bool _status) public onlyOwner { tradingOpen = _status; } fallback() external payable {} 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":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","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":false,"internalType":"uint256","name":"swaped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sentToMarketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sentToDonation","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_donationFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeDecimal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"donation_wallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isFeeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxTxExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTaxless","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidity_wallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing_wallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"areBlacklisted","type":"bool"}],"name":"multiBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"areWhitelisted","type":"bool"}],"name":"multiWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictionsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"p2p","type":"uint256"}],"name":"setDonationFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setDonationWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setFeeActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"p2p","type":"uint256"}],"name":"setLiquidityFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"p2p","type":"uint256"}],"name":"setMarketingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setMaxTxExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"setMaxTxPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"setMaxWalletPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMinTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setRestrictionsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setTaxless","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isWhitelisted","type":"bool"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600260105560148054600161ffff199182168117909255601c805490911690911790553480156200003457600080fd5b506200004033620004d5565b604080518082018252600a8082526921b434b8102a37b5b2b760b11b602080840191825284518086019095526004808652630434849560e41b91860191909152600b80546001600160a01b0319908116732b7ee5c88e18e7343ec787c7261cc62169c4902d17909155600c8054821673c985feff12c16f3f308a55202a6bd6b7b8e4f362179055600d8054909116732d0b9d9b03c2b0cc2610150a427ee03a63c80b5b1790556b019d971e4fe8401e74000000928390556078601f55612328601d558351939493620001139290620006ee565b50815162000129906005906020850190620006ee565b506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000182573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a8919062000794565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021c919062000794565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000794565b600f80546001600160a01b03199081166001600160a01b03938416178255600e8054909116848416178155601180546001818101835561012c7f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6892830181905583548083018555830181905583548083019094556000939092018390556012805480830182557fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec344490810184905581548084018355810193909355805480830190915590910182905560138054808301825560c87f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0909182018190558254808501845582015581548084019092550182905533808352601560209081526040808520805460ff199081168617909155308087528287208054831687179055600b80548b1688528388208054841688179055600c80548c1689528489208054851689179055600d80548d168a52858a20805486168a1790557fa31547ce6245cdb9ecea19cf8c7eb9f5974025bb4075011409251ae855b30aed805486168a179055878a52601690965284892080548516891790559188528388208054841688179055548a168752828720805483168717905554891686528186208054821686179055915488168552808520805483168517905595548716845285842080548216841790559354909516825292902080549091169091179055620004b1908362000525565b620004be6103e86200060e565b620004cb6103e86200067e565b5050505062000878565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620005815760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060036000828254620005959190620007dc565b90915550506001600160a01b03821660009081526001602052604081208054839290620005c4908490620007dc565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000546001600160a01b03163314620006595760405162461bcd60e51b81526020600482018190526024820152600080516020620031b4833981519152604482015260640162000578565b612710816003546200066c9190620007f7565b62000678919062000819565b601b5550565b6000546001600160a01b03163314620006c95760405162461bcd60e51b81526020600482018190526024820152600080516020620031b4833981519152604482015260640162000578565b61271081600354620006dc9190620007f7565b620006e8919062000819565b601a5550565b828054620006fc906200083c565b90600052602060002090601f0160209004810192826200072057600085556200076b565b82601f106200073b57805160ff19168380011785556200076b565b828001600101855582156200076b579182015b828111156200076b5782518255916020019190600101906200074e565b50620007799291506200077d565b5090565b5b808211156200077957600081556001016200077e565b600060208284031215620007a757600080fd5b81516001600160a01b0381168114620007bf57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115620007f257620007f2620007c6565b500190565b6000816000190483118215151615620008145762000814620007c6565b500290565b6000826200083757634e487b7160e01b600052601260045260246000fd5b500490565b600181811c908216806200085157607f821691505b6020821081036200087257634e487b7160e01b600052602260045260246000fd5b50919050565b61292c80620008886000396000f3fe60806040526004361061030f5760003560e01c80638da5cb5b11610196578063b7bfff65116100eb578063e5d41c6b1161008f578063f31d942b1161006c578063f31d942b146109b8578063f887ea40146109d7578063f9f92be4146109f7578063ffb54a9914610a2757005b8063e5d41c6b14610962578063f149bc8514610978578063f2fde38b1461099857005b8063dd62ed3e116100c8578063dd62ed3e146108bd578063e01af92c14610903578063e228c60c14610923578063e43504da1461094357005b8063b7bfff651461084d578063c1ec8d4b1461086d578063d573c42e1461089d57005b8063a457c2d711610152578063a62b48ce1161012f578063a62b48ce146107ca578063a8aa1b31146107f7578063a9059cbb14610817578063aa4bde281461083757005b8063a457c2d71461075a578063a4a3ce121461077a578063a5ae2d2f1461079a57005b80638da5cb5b146106975780638f70ccf7146106b557806391cc19c2146106d557806395d89b41146106f55780639b19251a1461070a578063a0c000041461073a57005b806347f2dc5b116102645780636ddd1713116102085780637a845ece116101e55780637a845ece146106215780637d7d3aaf14610641578063894e6d43146106615780638c0b5e221461068157005b80636ddd1713146105bc57806370a08231146105d6578063715018a61461060c57005b80635a96cdd7116102415780635a96cdd71461053c5780635d098b381461055c578063645b25711461057c578063680bb6d51461059c57005b806347f2dc5b146104dc57806348a46473146104fc57806353d6fd591461051c57005b806319db457d116102cb578063296f0a0c116102a8578063296f0a0c14610460578063313ce56714610480578063395093511461049c57806340e19609146104bc57005b806319db457d1461040a57806323b872dd1461042057806328141d5b1461044057005b806306fdde0314610318578063095ea7b314610343578063098b3066146103735780630f67cd1114610393578063153b0d1e146103cb57806318160ddd146103eb57005b3661031657005b005b34801561032457600080fd5b5061032d610a41565b60405161033a9190612357565b60405180910390f35b34801561034f57600080fd5b5061036361035e3660046123d1565b610ad3565b604051901515815260200161033a565b34801561037f57600080fd5b5061031661038e3660046123fd565b610aed565b34801561039f57600080fd5b50600d546103b3906001600160a01b031681565b6040516001600160a01b03909116815260200161033a565b3480156103d757600080fd5b506103166103e6366004612439565b610b8c565b3480156103f757600080fd5b506003545b60405190815260200161033a565b34801561041657600080fd5b506103fc60105481565b34801561042c57600080fd5b5061036361043b36600461246e565b610be1565b34801561044c57600080fd5b5061031661045b3660046124af565b610c07565b34801561046c57600080fd5b5061031661047b3660046124c8565b610c52565b34801561048c57600080fd5b506040516012815260200161033a565b3480156104a857600080fd5b506103636104b73660046123d1565b610c9e565b3480156104c857600080fd5b50600b546103b3906001600160a01b031681565b3480156104e857600080fd5b506103166104f7366004612439565b610cdd565b34801561050857600080fd5b506103166105173660046124af565b610d32565b34801561052857600080fd5b50610316610537366004612439565b610d61565b34801561054857600080fd5b506103166105573660046124c8565b610db6565b34801561056857600080fd5b506103166105773660046124c8565b610e02565b34801561058857600080fd5b506103166105973660046123fd565b610e4e565b3480156105a857600080fd5b506103166105b73660046124e5565b610ed3565b3480156105c857600080fd5b506014546103639060ff1681565b3480156105e257600080fd5b506103fc6105f13660046124c8565b6001600160a01b031660009081526001602052604090205490565b34801561061857600080fd5b50610316610f17565b34801561062d57600080fd5b5061031661063c3660046124af565b610f4d565b34801561064d57600080fd5b5061031661065c366004612439565b610f98565b34801561066d57600080fd5b506103fc61067c3660046124af565b610fed565b34801561068d57600080fd5b506103fc601a5481565b3480156106a357600080fd5b506000546001600160a01b03166103b3565b3480156106c157600080fd5b506103166106d03660046124e5565b61100e565b3480156106e157600080fd5b506103fc6106f03660046124af565b61104b565b34801561070157600080fd5b5061032d61105b565b34801561071657600080fd5b506103636107253660046124c8565b60196020526000908152604090205460ff1681565b34801561074657600080fd5b506103166107553660046123fd565b61106a565b34801561076657600080fd5b506103636107753660046123d1565b6110ef565b34801561078657600080fd5b50610316610795366004612516565b61118c565b3480156107a657600080fd5b506103636107b53660046124c8565b60156020526000908152604090205460ff1681565b3480156107d657600080fd5b506103fc6107e53660046124c8565b601e6020526000908152604090205481565b34801561080357600080fd5b50600f546103b3906001600160a01b031681565b34801561082357600080fd5b506103636108323660046123d1565b611222565b34801561084357600080fd5b506103fc601b5481565b34801561085957600080fd5b506103166108683660046124e5565b611230565b34801561087957600080fd5b506103636108883660046124c8565b60166020526000908152604090205460ff1681565b3480156108a957600080fd5b506103fc6108b83660046124af565b611274565b3480156108c957600080fd5b506103fc6108d83660046125ed565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561090f57600080fd5b5061031661091e3660046124e5565b611284565b34801561092f57600080fd5b5061031661093e366004612516565b6112c1565b34801561094f57600080fd5b5060145461036390610100900460ff1681565b34801561096e57600080fd5b506103fc600a5481565b34801561098457600080fd5b50600c546103b3906001600160a01b031681565b3480156109a457600080fd5b506103166109b33660046124c8565b611352565b3480156109c457600080fd5b50601c5461036390610100900460ff1681565b3480156109e357600080fd5b50600e546103b3906001600160a01b031681565b348015610a0357600080fd5b50610363610a123660046124c8565b60176020526000908152604090205460ff1681565b348015610a3357600080fd5b50601c546103639060ff1681565b606060048054610a5090612626565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7c90612626565b8015610ac95780601f10610a9e57610100808354040283529160200191610ac9565b820191906000526020600020905b815481529060010190602001808311610aac57829003601f168201915b5050505050905090565b600033610ae18185856113ed565b60019150505b92915050565b6000546001600160a01b03163314610b205760405162461bcd60e51b8152600401610b1790612660565b60405180910390fd5b826013600081548110610b3557610b35612695565b9060005260206000200181905550816013600181548110610b5857610b58612695565b9060005260206000200181905550806013600281548110610b7b57610b7b612695565b600091825260209091200155505050565b6000546001600160a01b03163314610bb65760405162461bcd60e51b8152600401610b1790612660565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b600033610bef858285611511565b610bfa8585856115a3565b60019150505b9392505050565b6000546001600160a01b03163314610c315760405162461bcd60e51b8152600401610b1790612660565b61271081600354610c4291906126c1565b610c4c91906126e0565b601a5550565b6000546001600160a01b03163314610c7c5760405162461bcd60e51b8152600401610b1790612660565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909190610ae19082908690610cd8908790612702565b6113ed565b6000546001600160a01b03163314610d075760405162461bcd60e51b8152600401610b1790612660565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d5c5760405162461bcd60e51b8152600401610b1790612660565b600a55565b6000546001600160a01b03163314610d8b5760405162461bcd60e51b8152600401610b1790612660565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610de05760405162461bcd60e51b8152600401610b1790612660565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e2c5760405162461bcd60e51b8152600401610b1790612660565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e785760405162461bcd60e51b8152600401610b1790612660565b826011600081548110610e8d57610e8d612695565b9060005260206000200181905550816011600181548110610eb057610eb0612695565b9060005260206000200181905550806011600281548110610b7b57610b7b612695565b6000546001600160a01b03163314610efd5760405162461bcd60e51b8152600401610b1790612660565b601c80549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610f415760405162461bcd60e51b8152600401610b1790612660565b610f4b6000611d04565b565b6000546001600160a01b03163314610f775760405162461bcd60e51b8152600401610b1790612660565b61271081600354610f8891906126c1565b610f9291906126e0565b601b5550565b6000546001600160a01b03163314610fc25760405162461bcd60e51b8152600401610b1790612660565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b60138181548110610ffd57600080fd5b600091825260209091200154905081565b6000546001600160a01b031633146110385760405162461bcd60e51b8152600401610b1790612660565b601c805460ff1916911515919091179055565b60118181548110610ffd57600080fd5b606060058054610a5090612626565b6000546001600160a01b031633146110945760405162461bcd60e51b8152600401610b1790612660565b8260126000815481106110a9576110a9612695565b90600052602060002001819055508160126001815481106110cc576110cc612695565b9060005260206000200181905550806012600281548110610b7b57610b7b612695565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909190838110156111745760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b17565b61118182868684036113ed565b506001949350505050565b6000546001600160a01b031633146111b65760405162461bcd60e51b8152600401610b1790612660565b60005b825181101561121d5781601760008584815181106111d9576111d9612695565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806112158161271a565b9150506111b9565b505050565b600033610ae18185856115a3565b6000546001600160a01b0316331461125a5760405162461bcd60e51b8152600401610b1790612660565b601480549115156101000261ff0019909216919091179055565b60128181548110610ffd57600080fd5b6000546001600160a01b031633146112ae5760405162461bcd60e51b8152600401610b1790612660565b6014805460ff1916911515919091179055565b6000546001600160a01b031633146112eb5760405162461bcd60e51b8152600401610b1790612660565b60005b825181101561121d57816019600085848151811061130e5761130e612695565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061134a8161271a565b9150506112ee565b6000546001600160a01b0316331461137c5760405162461bcd60e51b8152600401610b1790612660565b6001600160a01b0381166113e15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b17565b6113ea81611d04565b50565b6001600160a01b03831661144f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b17565b6001600160a01b0382166114b05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b17565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260026020908152604080832093861683529290522054600019811461159d57818110156115905760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b17565b61159d84848484036113ed565b50505050565b6001600160a01b0383166116075760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b17565b6001600160a01b0382166116695760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b17565b6001600160a01b03831660009081526017602052604090205460ff161580156116ab57506001600160a01b03821660009081526017602052604090205460ff16155b6117035760405162461bcd60e51b815260206004820152602360248201527f73656e646572206f7220726563697069656e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610b17565b6001600160a01b03831660009081526016602052604090205460ff168061172c5750601a548111155b6117785760405162461bcd60e51b815260206004820152601760248201527f5472616e736665722065786365656473206c696d6974210000000000000000006044820152606401610b17565b600f546001600160a01b0384811691161415806117ad57506001600160a01b03821660009081526016602052604090205460ff165b806117e35750601b54816117d6846001600160a01b031660009081526001602052604090205490565b6117e09190612702565b11155b61182f5760405162461bcd60e51b815260206004820152601960248201527f4d61782057616c6c6574204c696d6974204578636565647321000000000000006044820152606401610b17565b601c54600090610100900460ff1615611a3857600f546001600160a01b039081168582168114918516148180156118ad57506001600160a01b03851660009081526016602052604090205460ff16806118ad5750601f546001600160a01b0386166000908152601e602052604090205442916118aa91612702565b11155b80611907575080801561190757506001600160a01b03861660009081526016602052604090205460ff16806119075750601f546001600160a01b0387166000908152601e6020526040902054429161190491612702565b11155b8061194a575081158015611919575080155b801561194a5750601f546001600160a01b0387166000908152601e6020526040902054429161194791612702565b11155b6119965760405162461bcd60e51b815260206004820152601960248201527f4d757374207761697420636f6f6c646f776e20706572696f64000000000000006044820152606401610b17565b81156119bc576001600160a01b0385166000908152601e602052604090204290556119d8565b6001600160a01b0386166000908152601e602052604090204290555b8180156119fe57506001600160a01b03851660009081526019602052604090205460ff16155b80611a2b575081158015611a2b57506001600160a01b03861660009081526019602052604090205460ff16155b15611a3557600192505b50505b6000546001600160a01b038581169116148015611a625750600f546001600160a01b038481169116145b15611a8557601c805461ff00191661010017905569d3c21bcecceda1000000600a555b60145460ff168015611a9a575060065460ff16155b8015611ab45750600f546001600160a01b03858116911614155b15611ac157611ac1611d54565b60008180611ad65750601454610100900460ff165b8015611afb57506001600160a01b03851660009081526015602052604090205460ff16155b8015611b2057506001600160a01b03841660009081526015602052604090205460ff16155b8015611b2f575060065460ff16155b15611b9957600f546001600160a01b0385811691811691821491600091881614801590611b6a5750600f546001600160a01b03878116911614155b9050611b9481611b875782611b80576000611b8a565b6001611b8a565b60025b60ff168686612101565b925050505b611ba38184612733565b6001600160a01b038616600090815260016020526040812080549295508392909190611bd0908490612733565b90915550503060009081526001602052604081208054839290611bf4908490612702565b90915550506001600160a01b03851660009081526001602052604090205483811015611c715760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b17565b6001600160a01b03808716600090815260016020526040808220878503905591871681529081208054869290611ca8908490612702565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611cf491815260200190565b60405180910390a3505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6006805460ff1916600117905560095460085460075460009291611d7791612702565b611d819190612702565b905060006002600954611d9491906126e0565b600854600754611da49190612702565b611dae9190612702565b90506000611dbc8284612733565b905082600a541115611dd0575050506120f5565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e0557611e05612695565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e82919061274a565b81600181518110611e9557611e95612695565b6001600160a01b039283166020918202929092010152600e544791611ebd91309116866113ed565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ef6908790600090879030904290600401612767565b600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b5050505060008147611f369190612733565b905060008660075483611f4991906126c1565b611f5391906126e0565b90508015611f7157600b54611f71906001600160a01b0316826122bb565b60008760085484611f8291906126c1565b611f8c91906126e0565b90508015611faa57600c54611faa906001600160a01b0316826122bb565b47861561209b57600e54611fc99030906001600160a01b0316896113ed565b600e54600d5460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612039573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061205e91906127d8565b505060408051838152602081018a90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b600060078190556008819055600955604080518a8152602081018590529081018390527f92d941e0c114cd4379ba1e7d068a433f9e84070e2bd5213006935001f2720c3c9060600160405180910390a15050505050505050505b6006805460ff19169055565b6000811561215e576000601054600261211a9190612702565b61212590600a6128ea565b601d5461213290866126c1565b61213c91906126e0565b905080600760008282546121509190612702565b90915550909150610c009050565b6000601054600261216f9190612702565b61217a90600a6128ea565b6011868154811061218d5761218d612695565b9060005260206000200154856121a391906126c1565b6121ad91906126e0565b9050600060105460026121c09190612702565b6121cb90600a6128ea565b601287815481106121de576121de612695565b9060005260206000200154866121f491906126c1565b6121fe91906126e0565b9050600060105460026122119190612702565b61221c90600a6128ea565b6013888154811061222f5761222f612695565b90600052602060002001548761224591906126c1565b61224f91906126e0565b905082600760008282546122639190612702565b92505081905550816008600082825461227c9190612702565b9250508190555080600960008282546122959190612702565b909155508190506122a68385612702565b6122b09190612702565b979650505050505050565b600080836001600160a01b03168360405160006040518083038185875af1925050503d8060008114612309576040519150601f19603f3d011682016040523d82523d6000602084013e61230e565b606091505b50915091508161159d5760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b6044820152606401610b17565b600060208083528351808285015260005b8181101561238457858101830151858201604001528201612368565b81811115612396576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146113ea57600080fd5b80356123cc816123ac565b919050565b600080604083850312156123e457600080fd5b82356123ef816123ac565b946020939093013593505050565b60008060006060848603121561241257600080fd5b505081359360208301359350604090920135919050565b803580151581146123cc57600080fd5b6000806040838503121561244c57600080fd5b8235612457816123ac565b915061246560208401612429565b90509250929050565b60008060006060848603121561248357600080fd5b833561248e816123ac565b9250602084013561249e816123ac565b929592945050506040919091013590565b6000602082840312156124c157600080fd5b5035919050565b6000602082840312156124da57600080fd5b8135610c00816123ac565b6000602082840312156124f757600080fd5b610c0082612429565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561252957600080fd5b823567ffffffffffffffff8082111561254157600080fd5b818501915085601f83011261255557600080fd5b813560208282111561256957612569612500565b8160051b604051601f19603f8301168101818110868211171561258e5761258e612500565b6040529283528183019350848101820192898411156125ac57600080fd5b948201945b838610156125d1576125c2866123c1565b855294820194938201936125b1565b96506125e09050878201612429565b9450505050509250929050565b6000806040838503121561260057600080fd5b823561260b816123ac565b9150602083013561261b816123ac565b809150509250929050565b600181811c9082168061263a57607f821691505b60208210810361265a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156126db576126db6126ab565b500290565b6000826126fd57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612715576127156126ab565b500190565b60006001820161272c5761272c6126ab565b5060010190565b600082821015612745576127456126ab565b500390565b60006020828403121561275c57600080fd5b8151610c00816123ac565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127b75784516001600160a01b031683529383019391830191600101612792565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156127ed57600080fd5b8351925060208401519150604084015190509250925092565b600181815b80851115612841578160001904821115612827576128276126ab565b8085161561283457918102915b93841c939080029061280b565b509250929050565b60008261285857506001610ae7565b8161286557506000610ae7565b816001811461287b5760028114612885576128a1565b6001915050610ae7565b60ff841115612896576128966126ab565b50506001821b610ae7565b5060208310610133831016604e8410600b84101617156128c4575081810a610ae7565b6128ce8383612806565b80600019048211156128e2576128e26126ab565b029392505050565b6000610c00838361284956fea26469706673582212201d862cfa9e8989462eadf989d77955d396a5e6407a2f15495cc278713a94210d64736f6c634300080d00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x60806040526004361061030f5760003560e01c80638da5cb5b11610196578063b7bfff65116100eb578063e5d41c6b1161008f578063f31d942b1161006c578063f31d942b146109b8578063f887ea40146109d7578063f9f92be4146109f7578063ffb54a9914610a2757005b8063e5d41c6b14610962578063f149bc8514610978578063f2fde38b1461099857005b8063dd62ed3e116100c8578063dd62ed3e146108bd578063e01af92c14610903578063e228c60c14610923578063e43504da1461094357005b8063b7bfff651461084d578063c1ec8d4b1461086d578063d573c42e1461089d57005b8063a457c2d711610152578063a62b48ce1161012f578063a62b48ce146107ca578063a8aa1b31146107f7578063a9059cbb14610817578063aa4bde281461083757005b8063a457c2d71461075a578063a4a3ce121461077a578063a5ae2d2f1461079a57005b80638da5cb5b146106975780638f70ccf7146106b557806391cc19c2146106d557806395d89b41146106f55780639b19251a1461070a578063a0c000041461073a57005b806347f2dc5b116102645780636ddd1713116102085780637a845ece116101e55780637a845ece146106215780637d7d3aaf14610641578063894e6d43146106615780638c0b5e221461068157005b80636ddd1713146105bc57806370a08231146105d6578063715018a61461060c57005b80635a96cdd7116102415780635a96cdd71461053c5780635d098b381461055c578063645b25711461057c578063680bb6d51461059c57005b806347f2dc5b146104dc57806348a46473146104fc57806353d6fd591461051c57005b806319db457d116102cb578063296f0a0c116102a8578063296f0a0c14610460578063313ce56714610480578063395093511461049c57806340e19609146104bc57005b806319db457d1461040a57806323b872dd1461042057806328141d5b1461044057005b806306fdde0314610318578063095ea7b314610343578063098b3066146103735780630f67cd1114610393578063153b0d1e146103cb57806318160ddd146103eb57005b3661031657005b005b34801561032457600080fd5b5061032d610a41565b60405161033a9190612357565b60405180910390f35b34801561034f57600080fd5b5061036361035e3660046123d1565b610ad3565b604051901515815260200161033a565b34801561037f57600080fd5b5061031661038e3660046123fd565b610aed565b34801561039f57600080fd5b50600d546103b3906001600160a01b031681565b6040516001600160a01b03909116815260200161033a565b3480156103d757600080fd5b506103166103e6366004612439565b610b8c565b3480156103f757600080fd5b506003545b60405190815260200161033a565b34801561041657600080fd5b506103fc60105481565b34801561042c57600080fd5b5061036361043b36600461246e565b610be1565b34801561044c57600080fd5b5061031661045b3660046124af565b610c07565b34801561046c57600080fd5b5061031661047b3660046124c8565b610c52565b34801561048c57600080fd5b506040516012815260200161033a565b3480156104a857600080fd5b506103636104b73660046123d1565b610c9e565b3480156104c857600080fd5b50600b546103b3906001600160a01b031681565b3480156104e857600080fd5b506103166104f7366004612439565b610cdd565b34801561050857600080fd5b506103166105173660046124af565b610d32565b34801561052857600080fd5b50610316610537366004612439565b610d61565b34801561054857600080fd5b506103166105573660046124c8565b610db6565b34801561056857600080fd5b506103166105773660046124c8565b610e02565b34801561058857600080fd5b506103166105973660046123fd565b610e4e565b3480156105a857600080fd5b506103166105b73660046124e5565b610ed3565b3480156105c857600080fd5b506014546103639060ff1681565b3480156105e257600080fd5b506103fc6105f13660046124c8565b6001600160a01b031660009081526001602052604090205490565b34801561061857600080fd5b50610316610f17565b34801561062d57600080fd5b5061031661063c3660046124af565b610f4d565b34801561064d57600080fd5b5061031661065c366004612439565b610f98565b34801561066d57600080fd5b506103fc61067c3660046124af565b610fed565b34801561068d57600080fd5b506103fc601a5481565b3480156106a357600080fd5b506000546001600160a01b03166103b3565b3480156106c157600080fd5b506103166106d03660046124e5565b61100e565b3480156106e157600080fd5b506103fc6106f03660046124af565b61104b565b34801561070157600080fd5b5061032d61105b565b34801561071657600080fd5b506103636107253660046124c8565b60196020526000908152604090205460ff1681565b34801561074657600080fd5b506103166107553660046123fd565b61106a565b34801561076657600080fd5b506103636107753660046123d1565b6110ef565b34801561078657600080fd5b50610316610795366004612516565b61118c565b3480156107a657600080fd5b506103636107b53660046124c8565b60156020526000908152604090205460ff1681565b3480156107d657600080fd5b506103fc6107e53660046124c8565b601e6020526000908152604090205481565b34801561080357600080fd5b50600f546103b3906001600160a01b031681565b34801561082357600080fd5b506103636108323660046123d1565b611222565b34801561084357600080fd5b506103fc601b5481565b34801561085957600080fd5b506103166108683660046124e5565b611230565b34801561087957600080fd5b506103636108883660046124c8565b60166020526000908152604090205460ff1681565b3480156108a957600080fd5b506103fc6108b83660046124af565b611274565b3480156108c957600080fd5b506103fc6108d83660046125ed565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561090f57600080fd5b5061031661091e3660046124e5565b611284565b34801561092f57600080fd5b5061031661093e366004612516565b6112c1565b34801561094f57600080fd5b5060145461036390610100900460ff1681565b34801561096e57600080fd5b506103fc600a5481565b34801561098457600080fd5b50600c546103b3906001600160a01b031681565b3480156109a457600080fd5b506103166109b33660046124c8565b611352565b3480156109c457600080fd5b50601c5461036390610100900460ff1681565b3480156109e357600080fd5b50600e546103b3906001600160a01b031681565b348015610a0357600080fd5b50610363610a123660046124c8565b60176020526000908152604090205460ff1681565b348015610a3357600080fd5b50601c546103639060ff1681565b606060048054610a5090612626565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7c90612626565b8015610ac95780601f10610a9e57610100808354040283529160200191610ac9565b820191906000526020600020905b815481529060010190602001808311610aac57829003601f168201915b5050505050905090565b600033610ae18185856113ed565b60019150505b92915050565b6000546001600160a01b03163314610b205760405162461bcd60e51b8152600401610b1790612660565b60405180910390fd5b826013600081548110610b3557610b35612695565b9060005260206000200181905550816013600181548110610b5857610b58612695565b9060005260206000200181905550806013600281548110610b7b57610b7b612695565b600091825260209091200155505050565b6000546001600160a01b03163314610bb65760405162461bcd60e51b8152600401610b1790612660565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b600033610bef858285611511565b610bfa8585856115a3565b60019150505b9392505050565b6000546001600160a01b03163314610c315760405162461bcd60e51b8152600401610b1790612660565b61271081600354610c4291906126c1565b610c4c91906126e0565b601a5550565b6000546001600160a01b03163314610c7c5760405162461bcd60e51b8152600401610b1790612660565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909190610ae19082908690610cd8908790612702565b6113ed565b6000546001600160a01b03163314610d075760405162461bcd60e51b8152600401610b1790612660565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d5c5760405162461bcd60e51b8152600401610b1790612660565b600a55565b6000546001600160a01b03163314610d8b5760405162461bcd60e51b8152600401610b1790612660565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610de05760405162461bcd60e51b8152600401610b1790612660565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e2c5760405162461bcd60e51b8152600401610b1790612660565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e785760405162461bcd60e51b8152600401610b1790612660565b826011600081548110610e8d57610e8d612695565b9060005260206000200181905550816011600181548110610eb057610eb0612695565b9060005260206000200181905550806011600281548110610b7b57610b7b612695565b6000546001600160a01b03163314610efd5760405162461bcd60e51b8152600401610b1790612660565b601c80549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610f415760405162461bcd60e51b8152600401610b1790612660565b610f4b6000611d04565b565b6000546001600160a01b03163314610f775760405162461bcd60e51b8152600401610b1790612660565b61271081600354610f8891906126c1565b610f9291906126e0565b601b5550565b6000546001600160a01b03163314610fc25760405162461bcd60e51b8152600401610b1790612660565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b60138181548110610ffd57600080fd5b600091825260209091200154905081565b6000546001600160a01b031633146110385760405162461bcd60e51b8152600401610b1790612660565b601c805460ff1916911515919091179055565b60118181548110610ffd57600080fd5b606060058054610a5090612626565b6000546001600160a01b031633146110945760405162461bcd60e51b8152600401610b1790612660565b8260126000815481106110a9576110a9612695565b90600052602060002001819055508160126001815481106110cc576110cc612695565b9060005260206000200181905550806012600281548110610b7b57610b7b612695565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909190838110156111745760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b17565b61118182868684036113ed565b506001949350505050565b6000546001600160a01b031633146111b65760405162461bcd60e51b8152600401610b1790612660565b60005b825181101561121d5781601760008584815181106111d9576111d9612695565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806112158161271a565b9150506111b9565b505050565b600033610ae18185856115a3565b6000546001600160a01b0316331461125a5760405162461bcd60e51b8152600401610b1790612660565b601480549115156101000261ff0019909216919091179055565b60128181548110610ffd57600080fd5b6000546001600160a01b031633146112ae5760405162461bcd60e51b8152600401610b1790612660565b6014805460ff1916911515919091179055565b6000546001600160a01b031633146112eb5760405162461bcd60e51b8152600401610b1790612660565b60005b825181101561121d57816019600085848151811061130e5761130e612695565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061134a8161271a565b9150506112ee565b6000546001600160a01b0316331461137c5760405162461bcd60e51b8152600401610b1790612660565b6001600160a01b0381166113e15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b17565b6113ea81611d04565b50565b6001600160a01b03831661144f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b17565b6001600160a01b0382166114b05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b17565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260026020908152604080832093861683529290522054600019811461159d57818110156115905760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b17565b61159d84848484036113ed565b50505050565b6001600160a01b0383166116075760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b17565b6001600160a01b0382166116695760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b17565b6001600160a01b03831660009081526017602052604090205460ff161580156116ab57506001600160a01b03821660009081526017602052604090205460ff16155b6117035760405162461bcd60e51b815260206004820152602360248201527f73656e646572206f7220726563697069656e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610b17565b6001600160a01b03831660009081526016602052604090205460ff168061172c5750601a548111155b6117785760405162461bcd60e51b815260206004820152601760248201527f5472616e736665722065786365656473206c696d6974210000000000000000006044820152606401610b17565b600f546001600160a01b0384811691161415806117ad57506001600160a01b03821660009081526016602052604090205460ff165b806117e35750601b54816117d6846001600160a01b031660009081526001602052604090205490565b6117e09190612702565b11155b61182f5760405162461bcd60e51b815260206004820152601960248201527f4d61782057616c6c6574204c696d6974204578636565647321000000000000006044820152606401610b17565b601c54600090610100900460ff1615611a3857600f546001600160a01b039081168582168114918516148180156118ad57506001600160a01b03851660009081526016602052604090205460ff16806118ad5750601f546001600160a01b0386166000908152601e602052604090205442916118aa91612702565b11155b80611907575080801561190757506001600160a01b03861660009081526016602052604090205460ff16806119075750601f546001600160a01b0387166000908152601e6020526040902054429161190491612702565b11155b8061194a575081158015611919575080155b801561194a5750601f546001600160a01b0387166000908152601e6020526040902054429161194791612702565b11155b6119965760405162461bcd60e51b815260206004820152601960248201527f4d757374207761697420636f6f6c646f776e20706572696f64000000000000006044820152606401610b17565b81156119bc576001600160a01b0385166000908152601e602052604090204290556119d8565b6001600160a01b0386166000908152601e602052604090204290555b8180156119fe57506001600160a01b03851660009081526019602052604090205460ff16155b80611a2b575081158015611a2b57506001600160a01b03861660009081526019602052604090205460ff16155b15611a3557600192505b50505b6000546001600160a01b038581169116148015611a625750600f546001600160a01b038481169116145b15611a8557601c805461ff00191661010017905569d3c21bcecceda1000000600a555b60145460ff168015611a9a575060065460ff16155b8015611ab45750600f546001600160a01b03858116911614155b15611ac157611ac1611d54565b60008180611ad65750601454610100900460ff165b8015611afb57506001600160a01b03851660009081526015602052604090205460ff16155b8015611b2057506001600160a01b03841660009081526015602052604090205460ff16155b8015611b2f575060065460ff16155b15611b9957600f546001600160a01b0385811691811691821491600091881614801590611b6a5750600f546001600160a01b03878116911614155b9050611b9481611b875782611b80576000611b8a565b6001611b8a565b60025b60ff168686612101565b925050505b611ba38184612733565b6001600160a01b038616600090815260016020526040812080549295508392909190611bd0908490612733565b90915550503060009081526001602052604081208054839290611bf4908490612702565b90915550506001600160a01b03851660009081526001602052604090205483811015611c715760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b17565b6001600160a01b03808716600090815260016020526040808220878503905591871681529081208054869290611ca8908490612702565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611cf491815260200190565b60405180910390a3505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6006805460ff1916600117905560095460085460075460009291611d7791612702565b611d819190612702565b905060006002600954611d9491906126e0565b600854600754611da49190612702565b611dae9190612702565b90506000611dbc8284612733565b905082600a541115611dd0575050506120f5565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e0557611e05612695565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e82919061274a565b81600181518110611e9557611e95612695565b6001600160a01b039283166020918202929092010152600e544791611ebd91309116866113ed565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ef6908790600090879030904290600401612767565b600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b5050505060008147611f369190612733565b905060008660075483611f4991906126c1565b611f5391906126e0565b90508015611f7157600b54611f71906001600160a01b0316826122bb565b60008760085484611f8291906126c1565b611f8c91906126e0565b90508015611faa57600c54611faa906001600160a01b0316826122bb565b47861561209b57600e54611fc99030906001600160a01b0316896113ed565b600e54600d5460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612039573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061205e91906127d8565b505060408051838152602081018a90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b600060078190556008819055600955604080518a8152602081018590529081018390527f92d941e0c114cd4379ba1e7d068a433f9e84070e2bd5213006935001f2720c3c9060600160405180910390a15050505050505050505b6006805460ff19169055565b6000811561215e576000601054600261211a9190612702565b61212590600a6128ea565b601d5461213290866126c1565b61213c91906126e0565b905080600760008282546121509190612702565b90915550909150610c009050565b6000601054600261216f9190612702565b61217a90600a6128ea565b6011868154811061218d5761218d612695565b9060005260206000200154856121a391906126c1565b6121ad91906126e0565b9050600060105460026121c09190612702565b6121cb90600a6128ea565b601287815481106121de576121de612695565b9060005260206000200154866121f491906126c1565b6121fe91906126e0565b9050600060105460026122119190612702565b61221c90600a6128ea565b6013888154811061222f5761222f612695565b90600052602060002001548761224591906126c1565b61224f91906126e0565b905082600760008282546122639190612702565b92505081905550816008600082825461227c9190612702565b9250508190555080600960008282546122959190612702565b909155508190506122a68385612702565b6122b09190612702565b979650505050505050565b600080836001600160a01b03168360405160006040518083038185875af1925050503d8060008114612309576040519150601f19603f3d011682016040523d82523d6000602084013e61230e565b606091505b50915091508161159d5760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b6044820152606401610b17565b600060208083528351808285015260005b8181101561238457858101830151858201604001528201612368565b81811115612396576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146113ea57600080fd5b80356123cc816123ac565b919050565b600080604083850312156123e457600080fd5b82356123ef816123ac565b946020939093013593505050565b60008060006060848603121561241257600080fd5b505081359360208301359350604090920135919050565b803580151581146123cc57600080fd5b6000806040838503121561244c57600080fd5b8235612457816123ac565b915061246560208401612429565b90509250929050565b60008060006060848603121561248357600080fd5b833561248e816123ac565b9250602084013561249e816123ac565b929592945050506040919091013590565b6000602082840312156124c157600080fd5b5035919050565b6000602082840312156124da57600080fd5b8135610c00816123ac565b6000602082840312156124f757600080fd5b610c0082612429565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561252957600080fd5b823567ffffffffffffffff8082111561254157600080fd5b818501915085601f83011261255557600080fd5b813560208282111561256957612569612500565b8160051b604051601f19603f8301168101818110868211171561258e5761258e612500565b6040529283528183019350848101820192898411156125ac57600080fd5b948201945b838610156125d1576125c2866123c1565b855294820194938201936125b1565b96506125e09050878201612429565b9450505050509250929050565b6000806040838503121561260057600080fd5b823561260b816123ac565b9150602083013561261b816123ac565b809150509250929050565b600181811c9082168061263a57607f821691505b60208210810361265a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156126db576126db6126ab565b500290565b6000826126fd57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612715576127156126ab565b500190565b60006001820161272c5761272c6126ab565b5060010190565b600082821015612745576127456126ab565b500390565b60006020828403121561275c57600080fd5b8151610c00816123ac565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127b75784516001600160a01b031683529383019391830191600101612792565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156127ed57600080fd5b8351925060208401519150604084015190509250925092565b600181815b80851115612841578160001904821115612827576128276126ab565b8085161561283457918102915b93841c939080029061280b565b509250929050565b60008261285857506001610ae7565b8161286557506000610ae7565b816001811461287b5760028114612885576128a1565b6001915050610ae7565b60ff841115612896576128966126ab565b50506001821b610ae7565b5060208310610133831016604e8410600b84101617156128c4575081810a610ae7565b6128ce8383612806565b80600019048211156128e2576128e26126ab565b029392505050565b6000610c00838361284956fea26469706673582212201d862cfa9e8989462eadf989d77955d396a5e6407a2f15495cc278713a94210d64736f6c634300080d0033
Deployed Bytecode Sourcemap
7415:22927:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11401:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13752:201;;;;;;;;;;-1:-1:-1;13752:201:0;;;;;:::i;:::-;;:::i;:::-;;;1376:14:1;;1369:22;1351:41;;1339:2;1324:18;13752:201:0;1211:187:1;28635:193:0;;;;;;;;;;-1:-1:-1;28635:193:0;;;;;:::i;:::-;;:::i;8051:31::-;;;;;;;;;;-1:-1:-1;8051:31:0;;;;-1:-1:-1;;;;;8051:31:0;;;;;;-1:-1:-1;;;;;1888:32:1;;;1870:51;;1858:2;1843:18;8051:31:0;1724:203:1;29290:131:0;;;;;;;;;;-1:-1:-1;29290:131:0;;;;;:::i;:::-;;:::i;12521:108::-;;;;;;;;;;-1:-1:-1;12609:12:0;;12521:108;;;2563:25:1;;;2551:2;2536:18;12521:108:0;2417:177:1;8158:27:0;;;;;;;;;;;;;;;;14533:295;;;;;;;;;;-1:-1:-1;14533:295:0;;;;;:::i;:::-;;:::i;27479:133::-;;;;;;;;;;-1:-1:-1;27479:133:0;;;;;:::i;:::-;;:::i;28121:108::-;;;;;;;;;;-1:-1:-1;28121:108:0;;;;;:::i;:::-;;:::i;12363:93::-;;;;;;;;;;-1:-1:-1;12363:93:0;;12446:2;3639:36:1;;3627:2;3612:18;12363:93:0;3497:184:1;15237:240:0;;;;;;;;;;-1:-1:-1;15237:240:0;;;;;:::i;:::-;;:::i;7976:31::-;;;;;;;;;;-1:-1:-1;7976:31:0;;;;-1:-1:-1;;;;;7976:31:0;;;29040:113;;;;;;;;;;-1:-1:-1;29040:113:0;;;;;:::i;:::-;;:::i;27769:114::-;;;;;;;;;;-1:-1:-1;27769:114:0;;;;;:::i;:::-;;:::i;29659:131::-;;;;;;;;;;-1:-1:-1;29659:131:0;;;;;:::i;:::-;;:::i;28007:106::-;;;;;;;;;;-1:-1:-1;28007:106:0;;;;;:::i;:::-;;:::i;27891:108::-;;;;;;;;;;-1:-1:-1;27891:108:0;;;;;:::i;:::-;;:::i;28237:193::-;;;;;;;;;;-1:-1:-1;28237:193:0;;;;;:::i;:::-;;:::i;30028:109::-;;;;;;;;;;-1:-1:-1;30028:109:0;;;;;:::i;:::-;;:::i;8360:30::-;;;;;;;;;;-1:-1:-1;8360:30:0;;;;;;;;12692:127;;;;;;;;;;-1:-1:-1;12692:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;12793:18:0;12766:7;12793:18;;;:9;:18;;;;;;;12692:127;4499:103;;;;;;;;;;;;;:::i;27620:141::-;;;;;;;;;;-1:-1:-1;27620:141:0;;;;;:::i;:::-;;:::i;29161:121::-;;;;;;;;;;-1:-1:-1;29161:121:0;;;;;:::i;:::-;;:::i;8324:27::-;;;;;;;;;;-1:-1:-1;8324:27:0;;;;;:::i;:::-;;:::i;8678:23::-;;;;;;;;;;;;;;;;3848:87;;;;;;;;;;-1:-1:-1;3894:7:0;3921:6;-1:-1:-1;;;;;3921:6:0;3848:87;;30167:97;;;;;;;;;;-1:-1:-1;30167:97:0;;;;;:::i;:::-;;:::i;8257:27::-;;;;;;;;;;-1:-1:-1;8257:27:0;;;;;:::i;:::-;;:::i;11620:104::-;;;;;;;;;;;;;:::i;8628:41::-;;;;;;;;;;-1:-1:-1;8628:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28438:189;;;;;;;;;;-1:-1:-1;28438:189:0;;;;;:::i;:::-;;:::i;15980:438::-;;;;;;;;;;-1:-1:-1;15980:438:0;;;;;:::i;:::-;;:::i;29429:222::-;;;;;;;;;;-1:-1:-1;29429:222:0;;;;;:::i;:::-;;:::i;8437:41::-;;;;;;;;;;-1:-1:-1;8437:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8856:38;;;;;;;;;;-1:-1:-1;8856:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;8130:19;;;;;;;;;;-1:-1:-1;8130:19:0;;;;-1:-1:-1;;;;;8130:19:0;;;13025:193;;;;;;;;;;-1:-1:-1;13025:193:0;;;;;:::i;:::-;;:::i;8708:27::-;;;;;;;;;;;;;;;;28941:91;;;;;;;;;;-1:-1:-1;28941:91:0;;;;;:::i;:::-;;:::i;8485:45::-;;;;;;;;;;-1:-1:-1;8485:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8291:26;;;;;;;;;;-1:-1:-1;8291:26:0;;;;;:::i;:::-;;:::i;13281:151::-;;;;;;;;;;-1:-1:-1;13281:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;13397:18:0;;;13370:7;13397:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13281:151;28836:97;;;;;;;;;;-1:-1:-1;28836:97:0;;;;;:::i;:::-;;:::i;29798:222::-;;;;;;;;;;-1:-1:-1;29798:222:0;;;;;:::i;:::-;;:::i;8397:31::-;;;;;;;;;;-1:-1:-1;8397:31:0;;;;;;;;;;;7929:34;;;;;;;;;;;;;;;;8014:30;;;;;;;;;;-1:-1:-1;8014:30:0;;;;-1:-1:-1;;;;;8014:30:0;;;4757:201;;;;;;;;;;-1:-1:-1;4757:201:0;;;;;:::i;:::-;;:::i;8781:39::-;;;;;;;;;;-1:-1:-1;8781:39:0;;;;;;;;;;;8091:32;;;;;;;;;;-1:-1:-1;8091:32:0;;;;-1:-1:-1;;;;;8091:32:0;;;8539:41;;;;;;;;;;-1:-1:-1;8539:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8744:30;;;;;;;;;;-1:-1:-1;8744:30:0;;;;;;;;11401:100;11455:13;11488:5;11481:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11401:100;:::o;13752:201::-;13835:4;237:10;13891:32;237:10;13907:7;13916:6;13891:8;:32::i;:::-;13941:4;13934:11;;;13752:201;;;;;:::o;28635:193::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;;;;;;;;;28750:3:::1;28731:13;28745:1;28731:16;;;;;;;;:::i;:::-;;;;;;;;:22;;;;28783:4;28764:13;28778:1;28764:16;;;;;;;;:::i;:::-;;;;;;;;:23;;;;28817:3;28798:13;28812:1;28798:16;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;:22:::0;-1:-1:-1;;;28635:193:0:o;29290:131::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29379:18:0;;;::::1;;::::0;;;:9:::1;:18;::::0;;;;:34;;-1:-1:-1;;29379:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29290:131::o;14533:295::-;14664:4;237:10;14722:38;14738:4;237:10;14753:6;14722:15;:38::i;:::-;14771:27;14781:4;14787:2;14791:6;14771:9;:27::i;:::-;14816:4;14809:11;;;14533:295;;;;;;:::o;27479:133::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;27599:5:::1;27585:10;27570:12;;:25;;;;:::i;:::-;27569:35;;;;:::i;:::-;27555:11;:49:::0;-1:-1:-1;27479:133:0:o;28121:108::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;28196:16:::1;:25:::0;;-1:-1:-1;;;;;;28196:25:0::1;-1:-1:-1::0;;;;;28196:25:0;;;::::1;::::0;;;::::1;::::0;;28121:108::o;15237:240::-;237:10;15325:4;15406:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;15406:27:0;;;;;;;;;;15325:4;;237:10;15381:66;;237:10;;15406:27;;:40;;15436:10;;15406:40;:::i;:::-;15381:8;:66::i;29040:113::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29119:18:0;;;::::1;;::::0;;;:9:::1;:18;::::0;;;;:26;;-1:-1:-1;;29119:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29040:113::o;27769:114::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;27847:19:::1;:28:::0;27769:114::o;29659:131::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29748:18:0;;;::::1;;::::0;;;:9:::1;:18;::::0;;;;:34;;-1:-1:-1;;29748:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29659:131::o;28007:106::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;28081:15:::1;:24:::0;;-1:-1:-1;;;;;;28081:24:0::1;-1:-1:-1::0;;;;;28081:24:0;;;::::1;::::0;;;::::1;::::0;;28007:106::o;27891:108::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;27966:16:::1;:25:::0;;-1:-1:-1;;;;;;27966:25:0::1;-1:-1:-1::0;;;;;27966:25:0;;;::::1;::::0;;;::::1;::::0;;27891:108::o;28237:193::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;28352:3:::1;28333:13;28347:1;28333:16;;;;;;;;:::i;:::-;;;;;;;;:22;;;;28385:4;28366:13;28380:1;28366:16;;;;;;;;:::i;:::-;;;;;;;;:23;;;;28419:3;28400:13;28414:1;28400:16;;;;;;;;:::i;30028:109::-:0;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;30102:19:::1;:27:::0;;;::::1;;;;-1:-1:-1::0;;30102:27:0;;::::1;::::0;;;::::1;::::0;;30028:109::o;4499:103::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;4564:30:::1;4591:1;4564:18;:30::i;:::-;4499:103::o:0;27620:141::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;27748:5:::1;27734:10;27719:12;;:25;;;;:::i;:::-;27718:35;;;;:::i;:::-;27700:15;:53:::0;-1:-1:-1;27620:141:0:o;29161:121::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29244:22:0;;;::::1;;::::0;;;:13:::1;:22;::::0;;;;:30;;-1:-1:-1;;29244:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29161:121::o;8324:27::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8324:27:0;:::o;30167:97::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;30235:11:::1;:21:::0;;-1:-1:-1;;30235:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30167:97::o;8257:27::-;;;;;;;;;;;;11620:104;11676:13;11709:7;11702:14;;;;;:::i;28438:189::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;28551:3:::1;28533:12;28546:1;28533:15;;;;;;;;:::i;:::-;;;;;;;;:21;;;;28583:4;28565:12;28578:1;28565:15;;;;;;;;:::i;:::-;;;;;;;;:22;;;;28616:3;28598:12;28611:1;28598:15;;;;;;;;:::i;15980:438::-:0;237:10;16073:4;16156:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;16156:27:0;;;;;;;;;;16073:4;;237:10;16202:35;;;;16194:85;;;;-1:-1:-1;;;16194:85:0;;7566:2:1;16194:85:0;;;7548:21:1;7605:2;7585:18;;;7578:30;7644:34;7624:18;;;7617:62;-1:-1:-1;;;7695:18:1;;;7688:35;7740:19;;16194:85:0;7364:401:1;16194:85:0;16315:60;16324:5;16331:7;16359:15;16340:16;:34;16315:8;:60::i;:::-;-1:-1:-1;16406:4:0;;15980:438;-1:-1:-1;;;;15980:438:0:o;29429:222::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;29537:9:::1;29532:112;29555:9;:16;29551:1;:20;29532:112;;;29618:14;29592:9;:23;29602:9;29612:1;29602:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;29592:23:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;29592:23:0;:40;;-1:-1:-1;;29592:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29573:3;::::1;::::0;::::1;:::i;:::-;;;;29532:112;;;;29429:222:::0;;:::o;13025:193::-;13104:4;237:10;13160:28;237:10;13177:2;13181:6;13160:9;:28::i;28941:91::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;29005:11:::1;:19:::0;;;::::1;;;;-1:-1:-1::0;;29005:19:0;;::::1;::::0;;;::::1;::::0;;28941:91::o;8291:26::-;;;;;;;;;;;;28836:97;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;28904:11:::1;:21:::0;;-1:-1:-1;;28904:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28836:97::o;29798:222::-;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;29906:9:::1;29901:112;29924:9;:16;29920:1;:20;29901:112;;;29987:14;29961:9;:23;29971:9;29981:1;29971:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;29961:23:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;29961:23:0;:40;;-1:-1:-1;;29961:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29942:3;::::1;::::0;::::1;:::i;:::-;;;;29901:112;;4757:201:::0;3894:7;3921:6;-1:-1:-1;;;;;3921:6:0;237:10;4068:23;4060:68;;;;-1:-1:-1;;;4060:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4846:22:0;::::1;4838:73;;;::::0;-1:-1:-1;;;4838:73:0;;8112:2:1;4838:73:0::1;::::0;::::1;8094:21:1::0;8151:2;8131:18;;;8124:30;8190:34;8170:18;;;8163:62;-1:-1:-1;;;8241:18:1;;;8234:36;8287:19;;4838:73:0::1;7910:402:1::0;4838:73:0::1;4922:28;4941:8;4922:18;:28::i;:::-;4757:201:::0;:::o;21574:380::-;-1:-1:-1;;;;;21710:19:0;;21702:68;;;;-1:-1:-1;;;21702:68:0;;8519:2:1;21702:68:0;;;8501:21:1;8558:2;8538:18;;;8531:30;8597:34;8577:18;;;8570:62;-1:-1:-1;;;8648:18:1;;;8641:34;8692:19;;21702:68:0;8317:400:1;21702:68:0;-1:-1:-1;;;;;21789:21:0;;21781:68;;;;-1:-1:-1;;;21781:68:0;;8924:2:1;21781:68:0;;;8906:21:1;8963:2;8943:18;;;8936:30;9002:34;8982:18;;;8975:62;-1:-1:-1;;;9053:18:1;;;9046:32;9095:19;;21781:68:0;8722:398:1;21781:68:0;-1:-1:-1;;;;;21862:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21914:32;;2563:25:1;;;21914:32:0;;2536:18:1;21914:32:0;;;;;;;21574:380;;;:::o;22241:453::-;-1:-1:-1;;;;;13397:18:0;;;22376:24;13397:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;22443:37:0;;22439:248;;22525:6;22505:16;:26;;22497:68;;;;-1:-1:-1;;;22497:68:0;;9327:2:1;22497:68:0;;;9309:21:1;9366:2;9346:18;;;9339:30;9405:31;9385:18;;;9378:59;9454:18;;22497:68:0;9125:353:1;22497:68:0;22609:51;22618:5;22625:7;22653:6;22634:16;:25;22609:8;:51::i;:::-;22365:329;22241:453;;;:::o;16897:2629::-;-1:-1:-1;;;;;17028:18:0;;17020:68;;;;-1:-1:-1;;;17020:68:0;;9685:2:1;17020:68:0;;;9667:21:1;9724:2;9704:18;;;9697:30;9763:34;9743:18;;;9736:62;-1:-1:-1;;;9814:18:1;;;9807:35;9859:19;;17020:68:0;9483:401:1;17020:68:0;-1:-1:-1;;;;;17107:16:0;;17099:64;;;;-1:-1:-1;;;17099:64:0;;10091:2:1;17099:64:0;;;10073:21:1;10130:2;10110:18;;;10103:30;10169:34;10149:18;;;10142:62;-1:-1:-1;;;10220:18:1;;;10213:33;10263:19;;17099:64:0;9889:399:1;17099:64:0;-1:-1:-1;;;;;17266:15:0;;;;;;:9;:15;;;;;;;;17265:16;:34;;;;-1:-1:-1;;;;;;17286:13:0;;;;;;:9;:13;;;;;;;;17285:14;17265:34;17257:82;;;;-1:-1:-1;;;17257:82:0;;10495:2:1;17257:82:0;;;10477:21:1;10534:2;10514:18;;;10507:30;10573:34;10553:18;;;10546:62;-1:-1:-1;;;10624:18:1;;;10617:33;10667:19;;17257:82:0;10293:399:1;17257:82:0;-1:-1:-1;;;;;17358:19:0;;;;;;:13;:19;;;;;;;;;:44;;;17391:11;;17381:6;:21;;17358:44;17350:80;;;;-1:-1:-1;;;17350:80:0;;10899:2:1;17350:80:0;;;10881:21:1;10938:2;10918:18;;;10911:30;10977:25;10957:18;;;10950:53;11020:18;;17350:80:0;10697:347:1;17350:80:0;17457:4;;-1:-1:-1;;;;;17449:12:0;;;17457:4;;17449:12;;;:33;;-1:-1:-1;;;;;;17465:17:0;;;;;;:13;:17;;;;;;;;17449:33;:78;;;;17512:15;;17502:6;17486:13;17496:2;-1:-1:-1;;;;;12793:18:0;12766:7;12793:18;;;:9;:18;;;;;;;12692:127;17486:13;:22;;;;:::i;:::-;:41;;17449:78;17441:116;;;;-1:-1:-1;;;17441:116:0;;11251:2:1;17441:116:0;;;11233:21:1;11290:2;11270:18;;;11263:30;11329:27;11309:18;;;11302:55;11374:18;;17441:116:0;11049:349:1;17441:116:0;17607:19;;17570:15;;17607:19;;;;;17604:840;;;17674:4;;-1:-1:-1;;;;;17674:4:0;;;17666:12;;;;;;17708:10;;;17666:12;17760:80;;;;-1:-1:-1;;;;;;17771:17:0;;;;;;:13;:17;;;;;;;;;:68;;-1:-1:-1;17805:15:0;;-1:-1:-1;;;;;17792:10:0;;;;;;:6;:10;;;;;;17824:15;;17792:28;;;:::i;:::-;:47;;17771:68;17759:190;;;;17863:7;:85;;;;-1:-1:-1;;;;;;17875:19:0;;;;;;:13;:19;;;;;;;;;:72;;-1:-1:-1;17913:15:0;;-1:-1:-1;;;;;17898:12:0;;;;;;:6;:12;;;;;;17932:15;;17898:30;;;:::i;:::-;:49;;17875:72;17759:285;;;;17972:6;17971:7;:19;;;;;17983:7;17982:8;17971:19;:72;;;;-1:-1:-1;18009:15:0;;-1:-1:-1;;;;;17994:12:0;;;;;;:6;:12;;;;;;18028:15;;17994:30;;;:::i;:::-;:49;;17971:72;17733:359;;;;-1:-1:-1;;;17733:359:0;;11605:2:1;17733:359:0;;;11587:21:1;11644:2;11624:18;;;11617:30;11683:27;11663:18;;;11656:55;11728:18;;17733:359:0;11403:349:1;17733:359:0;18110:6;18107:170;;;-1:-1:-1;;;;;18150:10:0;;;;;;:6;:10;;;;;18163:15;18150:28;;18107:170;;;-1:-1:-1;;;;;18231:12:0;;;;;;:6;:12;;;;;18246:15;18231:30;;18107:170;18294:6;:24;;;;-1:-1:-1;;;;;;18305:13:0;;;;;;:9;:13;;;;;;;;18304:14;18294:24;:72;;;;18340:6;18339:7;:27;;;;-1:-1:-1;;;;;;18351:15:0;;;;;;:9;:15;;;;;;;;18350:16;18339:27;18291:142;;;18413:4;18400:17;;18291:142;17637:807;;17604:840;3894:7;3921:6;-1:-1:-1;;;;;18459:15:0;;;3921:6;;18459:15;:29;;;;-1:-1:-1;18484:4:0;;-1:-1:-1;;;;;18478:10:0;;;18484:4;;18478:10;18459:29;18456:148;;;18514:19;:26;;-1:-1:-1;;18514:26:0;;;;;18577:15;18555:19;:37;18456:148;18620:11;;;;:22;;;;-1:-1:-1;18636:6:0;;;;18635:7;18620:22;:38;;;;-1:-1:-1;18654:4:0;;-1:-1:-1;;;;;18646:12:0;;;18654:4;;18646:12;;18620:38;18616:77;;;18675:6;:4;:6::i;:::-;18706:21;18743:10;:25;;;-1:-1:-1;18757:11:0;;;;;;;18743:25;18742:47;;;;-1:-1:-1;;;;;;18774:15:0;;;;;;:9;:15;;;;;;;;18773:16;18742:47;:65;;;;-1:-1:-1;;;;;;18794:13:0;;;;;;:9;:13;;;;;;;;18793:14;18742:65;:76;;;;-1:-1:-1;18812:6:0;;;;18811:7;18742:76;18738:270;;;18853:4;;-1:-1:-1;;;;;18847:10:0;;;18853:4;;;18847:10;;;;18835:9;;18883:12;;;;;;:26;;-1:-1:-1;18905:4:0;;-1:-1:-1;;;;;18899:10:0;;;18905:4;;18899:10;;18883:26;18872:37;;18940:56;18953:3;:22;;18963:4;:12;;18974:1;18953:22;;18963:12;18970:1;18953:22;;;18959:1;18953:22;18940:56;;18977:6;18985:10;18940:12;:56::i;:::-;18924:72;;18820:188;;18738:270;19020:23;19030:13;19020:23;;:::i;:::-;-1:-1:-1;;;;;19054:15:0;;;;;;:9;:15;;;;;:32;;19020:23;;-1:-1:-1;19073:13:0;;19054:15;;;:32;;19073:13;;19054:32;:::i;:::-;;;;-1:-1:-1;;19115:4:0;19097:24;;;;:9;:24;;;;;:41;;19125:13;;19097:24;:41;;19125:13;;19097:41;:::i;:::-;;;;-1:-1:-1;;;;;;;19207:15:0;;19185:19;19207:15;;;:9;:15;;;;;;19241:21;;;;19233:72;;;;-1:-1:-1;;;19233:72:0;;12089:2:1;19233:72:0;;;12071:21:1;12128:2;12108:18;;;12101:30;12167:34;12147:18;;;12140:62;-1:-1:-1;;;12218:18:1;;;12211:36;12264:19;;19233:72:0;11887:402:1;19233:72:0;-1:-1:-1;;;;;19341:15:0;;;;;;;:9;:15;;;;;;19359:20;;;19341:38;;19401:13;;;;;;;;:23;;19373:6;;19341:15;19401:23;;19373:6;;19401:23;:::i;:::-;;;;;;;;19457:2;-1:-1:-1;;;;;19442:26:0;19451:4;-1:-1:-1;;;;;19442:26:0;;19461:6;19442:26;;;;2563:25:1;;2551:2;2536:18;;2417:177;19442:26:0;;;;;;;;17009:2517;;;16897:2629;;;:::o;5118:191::-;5192:16;5211:6;;-1:-1:-1;;;;;5228:17:0;;;-1:-1:-1;;;;;;5228:17:0;;;;;;5261:40;;5211:6;;;;;;;5261:40;;5192:16;5261:40;5181:128;5118:191;:::o;24491:2160::-;24212:6;:13;;-1:-1:-1;;24212:13:0;24221:4;24212:13;;;24646:22:::1;::::0;24622:21:::1;::::0;24597:22:::1;::::0;24212:6;;24646:22;24597:46:::1;::::0;::::1;:::i;:::-;:71;;;;:::i;:::-;24575:93;;24679:17;24774:1;24749:22;;:26;;;;:::i;:::-;24724:21;;24699:22;;:46;;;;:::i;:::-;:77;;;;:::i;:::-;24679:97:::0;-1:-1:-1;24787:28:0::1;24818:29;24679:97:::0;24818:14;:29:::1;:::i;:::-;24787:60;;24885:14;24863:19;;:36;24860:48;;;24901:7;;;;;24860:48;24983:16;::::0;;24997:1:::1;24983:16:::0;;;;;::::1;::::0;;24955:25:::1;::::0;24983:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24983:16:0::1;24955:44;;25032:4;25010:8;25019:1;25010:11;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25010:27:0;;::::1;:11;::::0;;::::1;::::0;;;;;;:27;;;;25062:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;25062:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;25010:11;;25062:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25048:8;25057:1;25048:11;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25048:27:0;;::::1;:11;::::0;;::::1;::::0;;;;;:27;25182:6:::1;::::0;25116:21:::1;::::0;25150:54:::1;::::0;25167:4:::1;::::0;25182:6:::1;25191:12:::0;25150:8:::1;:54::i;:::-;25215:6;::::0;:192:::1;::::0;-1:-1:-1;;;25215:192:0;;-1:-1:-1;;;;;25215:6:0;;::::1;::::0;:57:::1;::::0;:192:::1;::::0;25287:12;;25215:6:::1;::::0;25330:8;;25361:4:::1;::::0;25381:15:::1;::::0;25215:192:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25420:14;25461:13;25437:21;:37;;;;:::i;:::-;25420:54;;25525:20;25587:14;25561:22;;25549:9;:34;;;;:::i;:::-;25548:53;;;;:::i;:::-;25525:76:::0;-1:-1:-1;25615:19:0;;25612:79:::1;;25656:16;::::0;25636:55:::1;::::0;-1:-1:-1;;;;;25656:16:0::1;25675:15:::0;25636:11:::1;:55::i;:::-;25734:19;25794:14;25769:21;;25757:9;:33;;;;:::i;:::-;25756:52;;;;:::i;:::-;25734:74:::0;-1:-1:-1;25822:18:0;;25819:76:::1;;25862:15;::::0;25842:53:::1;::::0;-1:-1:-1;;;;;25862:15:0::1;25880:14:::0;25842:11:::1;:53::i;:::-;25960:21;25995:27:::0;;25992:461:::1;;26070:6;::::0;26038:65:::1;::::0;26055:4:::1;::::0;-1:-1:-1;;;;;26070:6:0::1;26079:23:::0;26038:8:::1;:65::i;:::-;26118:6;::::0;26300:16:::1;::::0;26118:247:::1;::::0;-1:-1:-1;;;26118:247:0;;26194:4:::1;26118:247;::::0;::::1;13876:34:1::0;13926:18;;;13919:34;;;26118:6:0::1;13969:18:1::0;;;13962:34;;;14012:18;;;14005:34;-1:-1:-1;;;;;26300:16:0;;::::1;14055:19:1::0;;;14048:44;26335:15:0::1;14108:19:1::0;;;14101:35;26118:6:0;::::1;::::0;:22:::1;::::0;26148:18;;13810:19:1;;26118:247:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;26385:56:0::1;::::0;;14632:25:1;;;14688:2;14673:18;;14666:34;;;26385:56:0::1;::::0;-1:-1:-1;14605:18:1;26385:56:0::1;;;;;;;25992:461;26498:1;26473:22;:26:::0;;;26510:21:::1;:25:::0;;;26546:22:::1;:26:::0;26590:53:::1;::::0;;14913:25:1;;;14969:2;14954:18;;14947:34;;;14997:18;;;14990:34;;;26590:53:0::1;::::0;14901:2:1;14886:18;26590:53:0::1;;;;;;;24527:2124;;;;;;;;;24236:1;24248:6:::0;:14;;-1:-1:-1;;24248:14:0;;;24491:2160::o;26659:812::-;26748:7;26771:9;26768:202;;;26806:16;26862:11;;26876:1;26862:15;;;;:::i;:::-;26857:21;;:2;:21;:::i;:::-;26835:17;;26826:26;;:6;:26;:::i;:::-;26825:54;;;;:::i;:::-;26806:73;;26920:8;26894:22;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;26950:8:0;;-1:-1:-1;26943:15:0;;-1:-1:-1;26943:15:0;26768:202;26980:20;27046:11;;27060:1;27046:15;;;;:::i;:::-;27041:21;;:2;:21;:::i;:::-;27013:13;27027:8;27013:23;;;;;;;;:::i;:::-;;;;;;;;;27004:6;:32;;;;:::i;:::-;27003:60;;;;:::i;:::-;26980:83;;27074:19;27138:11;;27152:1;27138:15;;;;:::i;:::-;27133:21;;:2;:21;:::i;:::-;27106:12;27119:8;27106:22;;;;;;;;:::i;:::-;;;;;;;;;27097:6;:31;;;;:::i;:::-;27096:59;;;;:::i;:::-;27074:81;;27166:20;27232:11;;27246:1;27232:15;;;;:::i;:::-;27227:21;;:2;:21;:::i;:::-;27199:13;27213:8;27199:23;;;;;;;;:::i;:::-;;;;;;;;;27190:6;:32;;;;:::i;:::-;27189:60;;;;:::i;:::-;27166:83;;27296:12;27270:22;;:38;;;;;;;:::i;:::-;;;;;;;;27344:11;27319:21;;:36;;;;;;;:::i;:::-;;;;;;;;27392:12;27366:22;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;27451:12:0;;-1:-1:-1;27422:26:0;27437:11;27422:12;:26;:::i;:::-;:41;;;;:::i;:::-;27415:48;26659:812;-1:-1:-1;;;;;;;26659:812:0:o;24278:205::-;24353:9;24364:17;24385:3;-1:-1:-1;;;;;24385:8:0;24401:6;24385:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24352:60;;;;24446:4;24438:37;;;;-1:-1:-1;;;24438:37:0;;16821:2:1;24438:37:0;;;16803:21:1;16860:2;16840:18;;;16833:30;-1:-1:-1;;;16879:18:1;;;16872:50;16939:18;;24438:37:0;16619:344:1;14:597;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:134;820:20;;849:31;820:20;849:31;:::i;:::-;752:134;;;:::o;891:315::-;959:6;967;1020:2;1008:9;999:7;995:23;991:32;988:52;;;1036:1;1033;1026:12;988:52;1075:9;1062:23;1094:31;1119:5;1094:31;:::i;:::-;1144:5;1196:2;1181:18;;;;1168:32;;-1:-1:-1;;;891:315:1:o;1403:316::-;1480:6;1488;1496;1549:2;1537:9;1528:7;1524:23;1520:32;1517:52;;;1565:1;1562;1555:12;1517:52;-1:-1:-1;;1588:23:1;;;1658:2;1643:18;;1630:32;;-1:-1:-1;1709:2:1;1694:18;;;1681:32;;1403:316;-1:-1:-1;1403:316:1:o;1932:160::-;1997:20;;2053:13;;2046:21;2036:32;;2026:60;;2082:1;2079;2072:12;2097:315;2162:6;2170;2223:2;2211:9;2202:7;2198:23;2194:32;2191:52;;;2239:1;2236;2229:12;2191:52;2278:9;2265:23;2297:31;2322:5;2297:31;:::i;:::-;2347:5;-1:-1:-1;2371:35:1;2402:2;2387:18;;2371:35;:::i;:::-;2361:45;;2097:315;;;;;:::o;2599:456::-;2676:6;2684;2692;2745:2;2733:9;2724:7;2720:23;2716:32;2713:52;;;2761:1;2758;2751:12;2713:52;2800:9;2787:23;2819:31;2844:5;2819:31;:::i;:::-;2869:5;-1:-1:-1;2926:2:1;2911:18;;2898:32;2939:33;2898:32;2939:33;:::i;:::-;2599:456;;2991:7;;-1:-1:-1;;;3045:2:1;3030:18;;;;3017:32;;2599:456::o;3060:180::-;3119:6;3172:2;3160:9;3151:7;3147:23;3143:32;3140:52;;;3188:1;3185;3178:12;3140:52;-1:-1:-1;3211:23:1;;3060:180;-1:-1:-1;3060:180:1:o;3245:247::-;3304:6;3357:2;3345:9;3336:7;3332:23;3328:32;3325:52;;;3373:1;3370;3363:12;3325:52;3412:9;3399:23;3431:31;3456:5;3431:31;:::i;3686:180::-;3742:6;3795:2;3783:9;3774:7;3770:23;3766:32;3763:52;;;3811:1;3808;3801:12;3763:52;3834:26;3850:9;3834:26;:::i;3871:127::-;3932:10;3927:3;3923:20;3920:1;3913:31;3963:4;3960:1;3953:15;3987:4;3984:1;3977:15;4003:1191;4093:6;4101;4154:2;4142:9;4133:7;4129:23;4125:32;4122:52;;;4170:1;4167;4160:12;4122:52;4210:9;4197:23;4239:18;4280:2;4272:6;4269:14;4266:34;;;4296:1;4293;4286:12;4266:34;4334:6;4323:9;4319:22;4309:32;;4379:7;4372:4;4368:2;4364:13;4360:27;4350:55;;4401:1;4398;4391:12;4350:55;4437:2;4424:16;4459:4;4482:2;4478;4475:10;4472:36;;;4488:18;;:::i;:::-;4534:2;4531:1;4527:10;4566:2;4560:9;4629:2;4625:7;4620:2;4616;4612:11;4608:25;4600:6;4596:38;4684:6;4672:10;4669:22;4664:2;4652:10;4649:18;4646:46;4643:72;;;4695:18;;:::i;:::-;4731:2;4724:22;4781:18;;;4815:15;;;;-1:-1:-1;4857:11:1;;;4853:20;;;4885:19;;;4882:39;;;4917:1;4914;4907:12;4882:39;4941:11;;;;4961:148;4977:6;4972:3;4969:15;4961:148;;;5043:23;5062:3;5043:23;:::i;:::-;5031:36;;4994:12;;;;5087;;;;4961:148;;;5128:6;-1:-1:-1;5153:35:1;;-1:-1:-1;5169:18:1;;;5153:35;:::i;:::-;5143:45;;;;;;4003:1191;;;;;:::o;5199:388::-;5267:6;5275;5328:2;5316:9;5307:7;5303:23;5299:32;5296:52;;;5344:1;5341;5334:12;5296:52;5383:9;5370:23;5402:31;5427:5;5402:31;:::i;:::-;5452:5;-1:-1:-1;5509:2:1;5494:18;;5481:32;5522:33;5481:32;5522:33;:::i;:::-;5574:7;5564:17;;;5199:388;;;;;:::o;5826:380::-;5905:1;5901:12;;;;5948;;;5969:61;;6023:4;6015:6;6011:17;6001:27;;5969:61;6076:2;6068:6;6065:14;6045:18;6042:38;6039:161;;6122:10;6117:3;6113:20;6110:1;6103:31;6157:4;6154:1;6147:15;6185:4;6182:1;6175:15;6039:161;;5826:380;;;:::o;6211:356::-;6413:2;6395:21;;;6432:18;;;6425:30;6491:34;6486:2;6471:18;;6464:62;6558:2;6543:18;;6211:356::o;6572:127::-;6633:10;6628:3;6624:20;6621:1;6614:31;6664:4;6661:1;6654:15;6688:4;6685:1;6678:15;6704:127;6765:10;6760:3;6756:20;6753:1;6746:31;6796:4;6793:1;6786:15;6820:4;6817:1;6810:15;6836:168;6876:7;6942:1;6938;6934:6;6930:14;6927:1;6924:21;6919:1;6912:9;6905:17;6901:45;6898:71;;;6949:18;;:::i;:::-;-1:-1:-1;6989:9:1;;6836:168::o;7009:217::-;7049:1;7075;7065:132;;7119:10;7114:3;7110:20;7107:1;7100:31;7154:4;7151:1;7144:15;7182:4;7179:1;7172:15;7065:132;-1:-1:-1;7211:9:1;;7009:217::o;7231:128::-;7271:3;7302:1;7298:6;7295:1;7292:13;7289:39;;;7308:18;;:::i;:::-;-1:-1:-1;7344:9:1;;7231:128::o;7770:135::-;7809:3;7830:17;;;7827:43;;7850:18;;:::i;:::-;-1:-1:-1;7897:1:1;7886:13;;7770:135::o;11757:125::-;11797:4;11825:1;11822;11819:8;11816:34;;;11830:18;;:::i;:::-;-1:-1:-1;11867:9:1;;11757:125::o;12294:251::-;12364:6;12417:2;12405:9;12396:7;12392:23;12388:32;12385:52;;;12433:1;12430;12423:12;12385:52;12465:9;12459:16;12484:31;12509:5;12484:31;:::i;12550:980::-;12812:4;12860:3;12849:9;12845:19;12891:6;12880:9;12873:25;12917:2;12955:6;12950:2;12939:9;12935:18;12928:34;12998:3;12993:2;12982:9;12978:18;12971:31;13022:6;13057;13051:13;13088:6;13080;13073:22;13126:3;13115:9;13111:19;13104:26;;13165:2;13157:6;13153:15;13139:29;;13186:1;13196:195;13210:6;13207:1;13204:13;13196:195;;;13275:13;;-1:-1:-1;;;;;13271:39:1;13259:52;;13366:15;;;;13331:12;;;;13307:1;13225:9;13196:195;;;-1:-1:-1;;;;;;;13447:32:1;;;;13442:2;13427:18;;13420:60;-1:-1:-1;;;13511:3:1;13496:19;13489:35;13408:3;12550:980;-1:-1:-1;;;12550:980:1:o;14147:306::-;14235:6;14243;14251;14304:2;14292:9;14283:7;14279:23;14275:32;14272:52;;;14320:1;14317;14310:12;14272:52;14349:9;14343:16;14333:26;;14399:2;14388:9;14384:18;14378:25;14368:35;;14443:2;14432:9;14428:18;14422:25;14412:35;;14147:306;;;;;:::o;15035:422::-;15124:1;15167:5;15124:1;15181:270;15202:7;15192:8;15189:21;15181:270;;;15261:4;15257:1;15253:6;15249:17;15243:4;15240:27;15237:53;;;15270:18;;:::i;:::-;15320:7;15310:8;15306:22;15303:55;;;15340:16;;;;15303:55;15419:22;;;;15379:15;;;;15181:270;;;15185:3;15035:422;;;;;:::o;15462:806::-;15511:5;15541:8;15531:80;;-1:-1:-1;15582:1:1;15596:5;;15531:80;15630:4;15620:76;;-1:-1:-1;15667:1:1;15681:5;;15620:76;15712:4;15730:1;15725:59;;;;15798:1;15793:130;;;;15705:218;;15725:59;15755:1;15746:10;;15769:5;;;15793:130;15830:3;15820:8;15817:17;15814:43;;;15837:18;;:::i;:::-;-1:-1:-1;;15893:1:1;15879:16;;15908:5;;15705:218;;16007:2;15997:8;15994:16;15988:3;15982:4;15979:13;15975:36;15969:2;15959:8;15956:16;15951:2;15945:4;15942:12;15938:35;15935:77;15932:159;;;-1:-1:-1;16044:19:1;;;16076:5;;15932:159;16123:34;16148:8;16142:4;16123:34;:::i;:::-;16193:6;16189:1;16185:6;16181:19;16172:7;16169:32;16166:58;;;16204:18;;:::i;:::-;16242:20;;15462:806;-1:-1:-1;;;15462:806:1:o;16273:131::-;16333:5;16362:36;16389:8;16383:4;16362:36;:::i
Swarm Source
ipfs://1d862cfa9e8989462eadf989d77955d396a5e6407a2f15495cc278713a94210d
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.