Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 66 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 17099085 | 1063 days ago | IN | 0 ETH | 0.0024952 | ||||
| Approve | 17098845 | 1063 days ago | IN | 0 ETH | 0.00137977 | ||||
| Approve | 17098824 | 1063 days ago | IN | 0 ETH | 0.00164449 | ||||
| Approve | 17098777 | 1063 days ago | IN | 0 ETH | 0.00093933 | ||||
| Remove Limits | 17098623 | 1063 days ago | IN | 0 ETH | 0.00085626 | ||||
| Approve | 17098503 | 1063 days ago | IN | 0 ETH | 0.00149306 | ||||
| Approve | 17098497 | 1063 days ago | IN | 0 ETH | 0.0016547 | ||||
| Approve | 17098497 | 1063 days ago | IN | 0 ETH | 0.0016547 | ||||
| Approve | 17098497 | 1063 days ago | IN | 0 ETH | 0.0016547 | ||||
| Update Sell Fees | 17098378 | 1063 days ago | IN | 0 ETH | 0.00125177 | ||||
| Update Buy Fees | 17098378 | 1063 days ago | IN | 0 ETH | 0.00125317 | ||||
| Approve | 17098298 | 1063 days ago | IN | 0 ETH | 0.00182633 | ||||
| Approve | 17098281 | 1063 days ago | IN | 0 ETH | 0.00293822 | ||||
| Approve | 17098273 | 1063 days ago | IN | 0 ETH | 0.00161927 | ||||
| Update Max Txn A... | 17098268 | 1063 days ago | IN | 0 ETH | 0.0010343 | ||||
| Approve | 17098268 | 1063 days ago | IN | 0 ETH | 0.00746032 | ||||
| Approve | 17098267 | 1063 days ago | IN | 0 ETH | 0.00170578 | ||||
| Approve | 17098262 | 1063 days ago | IN | 0 ETH | 0.00180934 | ||||
| Approve | 17098262 | 1063 days ago | IN | 0 ETH | 0.00180934 | ||||
| Approve | 17098262 | 1063 days ago | IN | 0 ETH | 0.00180934 | ||||
| Approve | 17098261 | 1063 days ago | IN | 0 ETH | 0.0016319 | ||||
| Approve | 17098260 | 1063 days ago | IN | 0 ETH | 0.00166241 | ||||
| Update Sell Fees | 17098252 | 1063 days ago | IN | 0 ETH | 0.00121637 | ||||
| Update Buy Fees | 17098251 | 1063 days ago | IN | 0 ETH | 0.00120102 | ||||
| Approve | 17098235 | 1063 days ago | IN | 0 ETH | 0.00165055 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 17100498 | 1063 days ago | 0.00449157 ETH | ||||
| Transfer | 17100498 | 1063 days ago | 0.00449157 ETH | ||||
| Transfer | 17100127 | 1063 days ago | 0.00454731 ETH | ||||
| Transfer | 17100127 | 1063 days ago | 0.00454731 ETH | ||||
| Transfer | 17100127 | 1063 days ago | 0.00484483 ETH | ||||
| Transfer | 17100127 | 1063 days ago | 0.00484483 ETH | ||||
| Transfer | 17099805 | 1063 days ago | 0.00376141 ETH | ||||
| Transfer | 17099805 | 1063 days ago | 0.00376141 ETH | ||||
| Transfer | 17099085 | 1063 days ago | 0.00397554 ETH | ||||
| Transfer | 17099085 | 1063 days ago | 0.00397554 ETH | ||||
| Transfer | 17098862 | 1063 days ago | 0.0042886 ETH | ||||
| Transfer | 17098862 | 1063 days ago | 0.0042886 ETH | ||||
| Transfer | 17098862 | 1063 days ago | 0.004335 ETH | ||||
| Transfer | 17098862 | 1063 days ago | 0.004335 ETH | ||||
| Transfer | 17098862 | 1063 days ago | 0.00815556 ETH | ||||
| Transfer | 17098862 | 1063 days ago | 0.00815556 ETH | ||||
| Transfer | 17098783 | 1063 days ago | 0.00587328 ETH | ||||
| Transfer | 17098783 | 1063 days ago | 0.00587328 ETH | ||||
| Transfer | 17098768 | 1063 days ago | 0.00765346 ETH | ||||
| Transfer | 17098768 | 1063 days ago | 0.00765346 ETH | ||||
| Transfer | 17098576 | 1063 days ago | 0.00889467 ETH | ||||
| Transfer | 17098576 | 1063 days ago | 0.00889467 ETH | ||||
| Transfer | 17098524 | 1063 days ago | 0.00693036 ETH | ||||
| Transfer | 17098524 | 1063 days ago | 0.00693036 ETH | ||||
| Transfer | 17098524 | 1063 days ago | 0.08010003 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PepeDAO
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-04-22
*/
/**
* SPDX-License-Identifier: MIT
*/
pragma solidity >=0.8.19;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
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 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 `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, 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 `sender` to `recipient` 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 sender,
address recipient,
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);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @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(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the value {ERC20} uses, unless this function is
* overridden;
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* Requirements:
*
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
* - the caller must have allowance for ``sender``'s tokens of at least
* `amount`.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
unchecked {
_approve(sender, _msgSender(), currentAllowance - amount);
}
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(_msgSender(), 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:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[sender] = senderBalance - amount;
}
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
_afterTokenTransfer(sender, recipient, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `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 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 {}
}
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the substraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
interface IUniswapV2Factory {
event PairCreated(
address indexed token0,
address indexed token1,
address pair,
uint256
);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB)
external
view
returns (address pair);
function allPairs(uint256) external view returns (address pair);
function allPairsLength() external view returns (uint256);
function createPair(address tokenA, address tokenB)
external
returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
event Transfer(address indexed from, address indexed to, uint256 value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address owner) external view returns (uint256);
function allowance(address owner, address spender)
external
view
returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(
address from,
address to,
uint256 value
) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint256);
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
event Mint(address indexed sender, uint256 amount0, uint256 amount1);
event Burn(
address indexed sender,
uint256 amount0,
uint256 amount1,
address indexed to
);
event Swap(
address indexed sender,
uint256 amount0In,
uint256 amount1In,
uint256 amount0Out,
uint256 amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint256);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves()
external
view
returns (
uint112 reserve0,
uint112 reserve1,
uint32 blockTimestampLast
);
function price0CumulativeLast() external view returns (uint256);
function price1CumulativeLast() external view returns (uint256);
function kLast() external view returns (uint256);
function mint(address to) external returns (uint256 liquidity);
function burn(address to)
external
returns (uint256 amount0, uint256 amount1);
function swap(
uint256 amount0Out,
uint256 amount1Out,
address to,
bytes calldata data
) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router02 {
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
);
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;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
contract PepeDAO is ERC20, Ownable {
using SafeMath for uint256;
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
address public constant deadAddress = address(0xdead);
bool private swapping;
address public lpWallet;
address public marketingWallet;
address public devWallet;
uint256 public maxTokensForSwapback;
uint256 public swapTokensAtAmount;
uint256 public maxTransactionAmount;
uint256 public maxWallet;
bool public limitsInEffect = true;
bool public swapEnabled = false;
bool public tradingActive = false;
// Anti-bot and anti-whale mappings and variables
mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
bool public transferDelayEnabled = true;
uint256 public buyTotalFees;
uint256 public buyMarketingFee;
uint256 public buyLiquidityFee;
uint256 public buyDevFee;
uint256 public sellTotalFees;
uint256 public sellMarketingFee;
uint256 public sellLiquidityFee;
uint256 public sellDevFee;
uint256 public tokensForMarketing;
uint256 public tokensForLiquidity;
uint256 public tokensForDev;
/******************/
// exlcude from fees and max transaction amount
mapping(address => bool) private _isExcludedFromFees;
mapping(address => bool) public _isExcludedMaxTransactionAmount;
// store addresses that a automatic market maker pairs. Any transfer *to* these addresses
// could be subject to a maximum transfer amount
mapping(address => bool) public automatedMarketMakerPairs;
event UpdateUniswapV2Router(
address indexed newAddress,
address indexed oldAddress
);
event ExcludeFromFees(address indexed account, bool isExcluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event marketingWalletUpdated(
address indexed newWallet,
address indexed oldWallet
);
event devWalletUpdated(
address indexed newWallet,
address indexed oldWallet
);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiquidity
);
constructor() ERC20("Pepe DAO", "PEPEDAO") {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
);
excludeFromMaxTransaction(address(_uniswapV2Router), true);
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
excludeFromMaxTransaction(address(uniswapV2Pair), true);
_setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
uint256 _buyMarketingFee = 20;
uint256 _buyLiquidityFee = 0;
uint256 _buyDevFee = 5;
uint256 _sellMarketingFee = 40;
uint256 _sellLiquidityFee = 0;
uint256 _sellDevFee = 5;
uint256 totalSupply = 100000000000 * 1e18;
maxTransactionAmount = (totalSupply * 1) / 100; // 1% of total supply
maxWallet = (totalSupply) / 100; // 1% of total supply
swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swapback trigger
maxTokensForSwapback = totalSupply;
buyMarketingFee = _buyMarketingFee;
buyLiquidityFee = _buyLiquidityFee;
buyDevFee = _buyDevFee;
buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
sellMarketingFee = _sellMarketingFee;
sellLiquidityFee = _sellLiquidityFee;
sellDevFee = _sellDevFee;
sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
marketingWallet = address(0x0674e3c9c63bD7940163468433Bb34D9e55Ef2f0);
devWallet = address(msg.sender);
lpWallet = msg.sender;
// exclude from paying fees or having max transaction amount
excludeFromFees(owner(), true);
excludeFromFees(address(this), true);
excludeFromFees(address(0xdead), true);
excludeFromFees(marketingWallet, true);
excludeFromMaxTransaction(owner(), true);
excludeFromMaxTransaction(address(this), true);
excludeFromMaxTransaction(address(0xdead), true);
excludeFromMaxTransaction(marketingWallet, true);
/*
_mint is an internal function in ERC20.sol that is only called here,
and CANNOT be called ever again
*/
_mint(msg.sender, totalSupply);
}
receive() external payable {}
/// @notice Launches the token and enables trading. Irriversable.
function enableTrading() external onlyOwner {
tradingActive = true;
swapEnabled = true;
}
/// @notice Removes the max wallet and max transaction limits
function removeLimits() external onlyOwner returns (bool) {
limitsInEffect = false;
return true;
}
/// @notice Disables the Same wallet block transfer delay
function disableTransferDelay() external onlyOwner returns (bool) {
transferDelayEnabled = false;
return true;
}
/// @notice Changes the minimum balance of tokens the contract must have before swapping tokens for ETH. Base 100000, so 0.5% = 500.
function updateSwapTokensAtAmount(uint256 newAmount)
external
onlyOwner
returns (bool)
{
require(
newAmount >= 1,
"Swap amount cannot be lower than 0.001% total supply."
);
require(
newAmount <= 500,
"Swap amount cannot be higher than 0.5% total supply."
);
swapTokensAtAmount = newAmount * totalSupply()/ 100000;
return true;
}
/// @notice Changes the maximum amount of tokens the contract can swap for ETH. Base 10000, so 0.5% = 50.
function updateMaxTokensForSwapback(uint256 newAmount)
external
onlyOwner
returns (bool)
{
maxTokensForSwapback = newAmount * totalSupply()/ 100000;
return true;
}
/// @notice Changes the maximum amount of tokens that can be bought or sold in a single transaction
/// @param newNum Base 1000, so 1% = 10
function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
require(
newNum >= ((totalSupply() * 1) / 1000) / 1e18,
"Cannot set maxTransactionAmount lower than 0.1%"
);
maxTransactionAmount = newNum * (10**18);
}
/// @notice Changes the maximum amount of tokens a wallet can hold
/// @param newNum Base 1000, so 1% = 10
function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
require(
newNum >= 5,
"Cannot set maxWallet lower than 0.5%"
);
maxWallet = newNum * totalSupply()/1000;
}
/// @notice Sets if a wallet is excluded from the max wallet and tx limits
/// @param updAds The wallet to update
/// @param isEx If the wallet is excluded or not
function excludeFromMaxTransaction(address updAds, bool isEx)
public
onlyOwner
{
_isExcludedMaxTransactionAmount[updAds] = isEx;
}
/// @notice Sets if the contract can sell tokens
/// @param enabled set to false to disable selling
function updateSwapEnabled(bool enabled) external onlyOwner {
swapEnabled = enabled;
}
/// @notice Sets the fees for buys
/// @param _marketingFee The fee for the marketing wallet
/// @param _liquidityFee The fee for the liquidity pool
/// @param _devFee The fee for the dev wallet
function updateBuyFees(
uint256 _marketingFee,
uint256 _liquidityFee,
uint256 _devFee
) external onlyOwner {
buyMarketingFee = _marketingFee;
buyLiquidityFee = _liquidityFee;
buyDevFee = _devFee;
buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
}
/// @notice Sets the fees for sells
/// @param _marketingFee The fee for the marketing wallet
/// @param _liquidityFee The fee for the liquidity pool
/// @param _devFee The fee for the dev wallet
function updateSellFees(
uint256 _marketingFee,
uint256 _liquidityFee,
uint256 _devFee
) external onlyOwner {
sellMarketingFee = _marketingFee;
sellLiquidityFee = _liquidityFee;
sellDevFee = _devFee;
sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
}
/// @notice Sets if a wallet is excluded from fees
/// @param account The wallet to update
/// @param excluded If the wallet is excluded or not
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
/// @notice Sets an address as a new liquidity pair. You probably dont want to do this.
/// @param pair The new pair
function setAutomatedMarketMakerPair(address pair, bool value)
public
onlyOwner
{
require(
pair != uniswapV2Pair,
"The pair cannot be removed from automatedMarketMakerPairs"
);
_setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
automatedMarketMakerPairs[pair] = value;
emit SetAutomatedMarketMakerPair(pair, value);
}
function updateMarketingWallet(address newMarketingWallet)
external
onlyOwner
{
emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
marketingWallet = newMarketingWallet;
}
function updateLPWallet(address newLPWallet)
external
onlyOwner
{
lpWallet = newLPWallet;
}
function getItStarted() external onlyOwner {
tradingActive = true;
swapEnabled = true;
}
function updateDevWallet(address newWallet) external onlyOwner {
emit devWalletUpdated(newWallet, devWallet);
devWallet = newWallet;
}
function isExcludedFromFees(address account) public view returns (bool) {
return _isExcludedFromFees[account];
}
function _transfer(
address from,
address to,
uint256 amount
) internal override {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
if (amount == 0) {
super._transfer(from, to, 0);
return;
}
if (limitsInEffect) {
if (
from != owner() &&
to != owner() &&
to != address(0) &&
to != address(0xdead) &&
!swapping
) {
if (!tradingActive) {
require(
_isExcludedFromFees[from] || _isExcludedFromFees[to],
"Trading is not active."
);
}
// at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
if (transferDelayEnabled) {
if (
to != owner() &&
to != address(uniswapV2Router) &&
to != address(uniswapV2Pair)
) {
require(
_holderLastTransferTimestamp[tx.origin] <
block.number,
"_transfer:: Transfer Delay enabled. Only one purchase per block allowed."
);
_holderLastTransferTimestamp[tx.origin] = block.number;
}
}
//when buy
if (
automatedMarketMakerPairs[from] &&
!_isExcludedMaxTransactionAmount[to]
) {
require(
amount <= maxTransactionAmount,
"Buy transfer amount exceeds the maxTransactionAmount."
);
require(
amount + balanceOf(to) <= maxWallet,
"Max wallet exceeded"
);
}
//when sell
else if (
automatedMarketMakerPairs[to] &&
!_isExcludedMaxTransactionAmount[from]
) {
require(
amount <= maxTransactionAmount,
"Sell transfer amount exceeds the maxTransactionAmount."
);
} else if (!_isExcludedMaxTransactionAmount[to]) {
require(
amount + balanceOf(to) <= maxWallet,
"Max wallet exceeded"
);
}
}
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= swapTokensAtAmount;
if (
canSwap &&
swapEnabled &&
!swapping &&
!automatedMarketMakerPairs[from] &&
!_isExcludedFromFees[from] &&
!_isExcludedFromFees[to]
) {
swapping = true;
swapBack();
swapping = false;
}
bool takeFee = !swapping;
// if any account belongs to _isExcludedFromFee account then remove the fee
if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
takeFee = false;
}
uint256 fees = 0;
// only take fees on buys/sells, do not take on wallet transfers
if (takeFee) {
// on sell
if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
fees = amount.mul(sellTotalFees).div(100);
tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
tokensForDev += (fees * sellDevFee) / sellTotalFees;
tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
}
// on buy
else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
fees = amount.mul(buyTotalFees).div(100);
tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
tokensForDev += (fees * buyDevFee) / buyTotalFees;
tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
}
if (fees > 0) {
super._transfer(from, address(this), fees);
}
amount -= fees;
}
super._transfer(from, to, amount);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
lpWallet,
block.timestamp
);
}
function swapBack() private {
uint256 contractBalance = balanceOf(address(this));
uint256 totalTokensToSwap = tokensForLiquidity +
tokensForMarketing +
tokensForDev;
bool success;
if (contractBalance == 0 || totalTokensToSwap == 0) {
return;
}
if (contractBalance > maxTokensForSwapback) {
contractBalance = maxTokensForSwapback;
}
// Halve the amount of liquidity tokens
uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
totalTokensToSwap /
2;
uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
uint256 initialETHBalance = address(this).balance;
swapTokensForEth(amountToSwapForETH);
uint256 ethBalance = address(this).balance.sub(initialETHBalance);
uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
totalTokensToSwap
);
uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
tokensForLiquidity = 0;
tokensForMarketing = 0;
tokensForDev = 0;
(success, ) = address(devWallet).call{value: ethForDev}("");
if (liquidityTokens > 0 && ethForLiquidity > 0) {
addLiquidity(liquidityTokens, ethForLiquidity);
emit SwapAndLiquify(
amountToSwapForETH,
ethForLiquidity,
tokensForLiquidity
);
}
(success, ) = address(marketingWallet).call{
value: address(this).balance
}("");
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getItStarted","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokensForSwapback","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLPWallet","type":"address"}],"name":"updateLPWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateMaxTokensForSwapback","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c0604052600d805462ffffff19166001908117909155600f805460ff191690911790553480156200003057600080fd5b5060405180604001604052806008815260200167506570652044414f60c01b815250604051806040016040528060078152602001665045504544414f60c81b815250816003908162000083919062000773565b50600462000092828262000773565b505050620000af620000a96200041760201b60201c565b6200041b565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000d18160016200046d565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014291906200083f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000190573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b691906200083f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022a91906200083f565b6001600160a01b031660a0819052620002459060016200046d565b60a05162000255906001620004e7565b601460006005602882826c01431e0fae6d7217caa000000060646200027c82600162000887565b620002889190620008a7565b600b5562000298606482620008a7565b600c55612710620002ab82600562000887565b620002b79190620008a7565b600a55600981905560118790556012869055601385905584620002db8789620008ca565b620002e79190620008ca565b60105560158490556016839055601782905581620003068486620008ca565b620003129190620008ca565b601455600780546001600160a01b0319908116730674e3c9c63bd7940163468433bb34d9e55ef2f0179091556008805482163390811790915560068054909216179055620003746200036c6005546001600160a01b031690565b60016200053b565b620003813060016200053b565b6200039061dead60016200053b565b600754620003a9906001600160a01b031660016200053b565b620003c8620003c06005546001600160a01b031690565b60016200046d565b620003d53060016200046d565b620003e461dead60016200046d565b600754620003fd906001600160a01b031660016200046d565b620004093382620005e5565b5050505050505050620008e0565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620004bc5760405162461bcd60e51b81526020600482018190526024820152600080516020620033a283398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6001600160a01b0382166000818152601d6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005865760405162461bcd60e51b81526020600482018190526024820152600080516020620033a28339815191526044820152606401620004b3565b6001600160a01b0382166000818152601b6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166200063d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004b3565b8060026000828254620006519190620008ca565b90915550506001600160a01b0382166000908152602081905260408120805483929062000680908490620008ca565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006fa57607f821691505b6020821081036200071b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006ca57600081815260208120601f850160051c810160208610156200074a5750805b601f850160051c820191505b818110156200076b5782815560010162000756565b505050505050565b81516001600160401b038111156200078f576200078f620006cf565b620007a781620007a08454620006e5565b8462000721565b602080601f831160018114620007df5760008415620007c65750858301515b600019600386901b1c1916600185901b1785556200076b565b600085815260208120601f198616915b828110156200081057888601518255948401946001909101908401620007ef565b50858210156200082f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200085257600080fd5b81516001600160a01b03811681146200086a57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620008a157620008a162000871565b92915050565b600082620008c557634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620008a157620008a162000871565b60805160a051612a646200093e6000396000818161058401528181610ff301526118b80152600081816104390152818161187a015281816123d60152818161248f015281816124cb0152818161254501526125ad0152612a646000f3fe6080604052600436106103905760003560e01c80638da5cb5b116101dc578063c17b5b8c11610102578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610a57578063f637434214610a77578063f8b45b0514610a8d578063fbc10c5514610aa357600080fd5b8063e2f4560514610a16578063e884f26014610a2c578063ecb2fc7f1461075a578063f11a24d314610a4157600080fd5b8063c8c8ebe4116100dc578063c8c8ebe414610984578063d257b34f1461099a578063d85ba063146109ba578063dd62ed3e146109d057600080fd5b8063c17b5b8c1461092a578063c18bc1951461094a578063c876d0b91461096a57600080fd5b80639fccce321161017a578063aacebbe311610149578063aacebbe31461089a578063b62496f5146108ba578063bbc0c742146108ea578063c02466681461090a57600080fd5b80639fccce321461082e578063a0d82dc514610844578063a457c2d71461085a578063a9059cbb1461087a57600080fd5b8063924de9b7116101b6578063924de9b7146107c357806395d89b41146107e35780639a7a23d6146107f85780639c3b4fdc1461081857600080fd5b80638da5cb5b1461076f5780638ea5220f1461078d57806392136913146107ad57600080fd5b80634a62bb65116102c1578063751039fc1161025f5780637af8ed9c1161022e5780637af8ed9c146107045780637bce5a04146107245780638095d5641461073a5780638a8c523c1461075a57600080fd5b8063751039fc146106995780637571336a146106ae57806375f0a874146106ce57806377c18352146106ee57600080fd5b80636a486a8e1161029b5780636a486a8e146106195780636ddd17131461062f57806370a082311461064e578063715018a61461068457600080fd5b80634a62bb65146105a65780634fbee193146105c05780636303516c146105f957600080fd5b80631f3fed8f1161032e57806327c8f8351161030857806327c8f83514610520578063313ce56714610536578063395093511461055257806349bd5a5e1461057257600080fd5b80631f3fed8f146104ca578063203e727e146104e057806323b872dd1461050057600080fd5b80631694505e1161036a5780631694505e1461042757806318160ddd146104735780631816467f146104925780631a8145bb146104b457600080fd5b806306fdde031461039c578063095ea7b3146103c757806310d5de53146103f757600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610ac3565b6040516103be9190612625565b60405180910390f35b3480156103d357600080fd5b506103e76103e2366004612688565b610b55565b60405190151581526020016103be565b34801561040357600080fd5b506103e76104123660046126b4565b601c6020526000908152604090205460ff1681565b34801561043357600080fd5b5061045b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103be565b34801561047f57600080fd5b506002545b6040519081526020016103be565b34801561049e57600080fd5b506104b26104ad3660046126b4565b610b6c565b005b3480156104c057600080fd5b5061048460195481565b3480156104d657600080fd5b5061048460185481565b3480156104ec57600080fd5b506104b26104fb3660046126d1565b610bfc565b34801561050c57600080fd5b506103e761051b3660046126ea565b610cd9565b34801561052c57600080fd5b5061045b61dead81565b34801561054257600080fd5b50604051601281526020016103be565b34801561055e57600080fd5b506103e761056d366004612688565b610d83565b34801561057e57600080fd5b5061045b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b257600080fd5b50600d546103e79060ff1681565b3480156105cc57600080fd5b506103e76105db3660046126b4565b6001600160a01b03166000908152601b602052604090205460ff1690565b34801561060557600080fd5b5060065461045b906001600160a01b031681565b34801561062557600080fd5b5061048460145481565b34801561063b57600080fd5b50600d546103e790610100900460ff1681565b34801561065a57600080fd5b506104846106693660046126b4565b6001600160a01b031660009081526020819052604090205490565b34801561069057600080fd5b506104b2610dbf565b3480156106a557600080fd5b506103e7610df5565b3480156106ba57600080fd5b506104b26106c936600461273b565b610e32565b3480156106da57600080fd5b5060075461045b906001600160a01b031681565b3480156106fa57600080fd5b5061048460095481565b34801561071057600080fd5b506103e761071f3660046126d1565b610e87565b34801561073057600080fd5b5061048460115481565b34801561074657600080fd5b506104b2610755366004612770565b610ee1565b34801561076657600080fd5b506104b2610f37565b34801561077b57600080fd5b506005546001600160a01b031661045b565b34801561079957600080fd5b5060085461045b906001600160a01b031681565b3480156107b957600080fd5b5061048460155481565b3480156107cf57600080fd5b506104b26107de36600461279c565b610f74565b3480156107ef57600080fd5b506103b1610fb8565b34801561080457600080fd5b506104b261081336600461273b565b610fc7565b34801561082457600080fd5b5061048460135481565b34801561083a57600080fd5b50610484601a5481565b34801561085057600080fd5b5061048460175481565b34801561086657600080fd5b506103e7610875366004612688565b6110a6565b34801561088657600080fd5b506103e7610895366004612688565b61113f565b3480156108a657600080fd5b506104b26108b53660046126b4565b61114c565b3480156108c657600080fd5b506103e76108d53660046126b4565b601d6020526000908152604090205460ff1681565b3480156108f657600080fd5b50600d546103e79062010000900460ff1681565b34801561091657600080fd5b506104b261092536600461273b565b6111d3565b34801561093657600080fd5b506104b2610945366004612770565b61125c565b34801561095657600080fd5b506104b26109653660046126d1565b6112b2565b34801561097657600080fd5b50600f546103e79060ff1681565b34801561099057600080fd5b50610484600b5481565b3480156109a657600080fd5b506103e76109b53660046126d1565b61135f565b3480156109c657600080fd5b5061048460105481565b3480156109dc57600080fd5b506104846109eb3660046127b7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a2257600080fd5b50610484600a5481565b348015610a3857600080fd5b506103e7611496565b348015610a4d57600080fd5b5061048460125481565b348015610a6357600080fd5b506104b2610a723660046126b4565b6114d3565b348015610a8357600080fd5b5061048460165481565b348015610a9957600080fd5b50610484600c5481565b348015610aaf57600080fd5b506104b2610abe3660046126b4565b61156e565b606060038054610ad2906127f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610afe906127f0565b8015610b4b5780601f10610b2057610100808354040283529160200191610b4b565b820191906000526020600020905b815481529060010190602001808311610b2e57829003601f168201915b5050505050905090565b6000610b623384846115ba565b5060015b92915050565b6005546001600160a01b03163314610b9f5760405162461bcd60e51b8152600401610b969061282a565b60405180910390fd5b6008546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74390600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c265760405162461bcd60e51b8152600401610b969061282a565b670de0b6b3a76400006103e8610c3b60025490565b610c46906001612875565b610c50919061288c565b610c5a919061288c565b811015610cc15760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610b96565b610cd381670de0b6b3a7640000612875565b600b5550565b6000610ce68484846116de565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610d6b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b96565b610d7885338584036115ba565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b62918590610dba9086906128ae565b6115ba565b6005546001600160a01b03163314610de95760405162461bcd60e51b8152600401610b969061282a565b610df36000611f35565b565b6005546000906001600160a01b03163314610e225760405162461bcd60e51b8152600401610b969061282a565b50600d805460ff19169055600190565b6005546001600160a01b03163314610e5c5760405162461bcd60e51b8152600401610b969061282a565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6005546000906001600160a01b03163314610eb45760405162461bcd60e51b8152600401610b969061282a565b620186a0610ec160025490565b610ecb9084612875565b610ed5919061288c565b6009555060015b919050565b6005546001600160a01b03163314610f0b5760405162461bcd60e51b8152600401610b969061282a565b60118390556012829055601381905580610f2583856128ae565b610f2f91906128ae565b601055505050565b6005546001600160a01b03163314610f615760405162461bcd60e51b8152600401610b969061282a565b600d805462ffff00191662010100179055565b6005546001600160a01b03163314610f9e5760405162461bcd60e51b8152600401610b969061282a565b600d80549115156101000261ff0019909216919091179055565b606060048054610ad2906127f0565b6005546001600160a01b03163314610ff15760405162461bcd60e51b8152600401610b969061282a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036110985760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610b96565b6110a28282611f87565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111285760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b96565b61113533858584036115ba565b5060019392505050565b6000610b623384846116de565b6005546001600160a01b031633146111765760405162461bcd60e51b8152600401610b969061282a565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111fd5760405162461bcd60e51b8152600401610b969061282a565b6001600160a01b0382166000818152601b6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146112865760405162461bcd60e51b8152600401610b969061282a565b601583905560168290556017819055806112a083856128ae565b6112aa91906128ae565b601455505050565b6005546001600160a01b031633146112dc5760405162461bcd60e51b8152600401610b969061282a565b60058110156113395760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610b96565b6103e861134560025490565b61134f9083612875565b611359919061288c565b600c5550565b6005546000906001600160a01b0316331461138c5760405162461bcd60e51b8152600401610b969061282a565b60018210156113fb5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b96565b6101f482111561146a5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610b96565b620186a061147760025490565b6114819084612875565b61148b919061288c565b600a55506001919050565b6005546000906001600160a01b031633146114c35760405162461bcd60e51b8152600401610b969061282a565b50600f805460ff19169055600190565b6005546001600160a01b031633146114fd5760405162461bcd60e51b8152600401610b969061282a565b6001600160a01b0381166115625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b96565b61156b81611f35565b50565b6005546001600160a01b031633146115985760405162461bcd60e51b8152600401610b969061282a565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661161c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b96565b6001600160a01b03821661167d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b96565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117045760405162461bcd60e51b8152600401610b96906128c1565b6001600160a01b03821661172a5760405162461bcd60e51b8152600401610b9690612906565b806000036117435761173e83836000611fdb565b505050565b600d5460ff1615611c01576005546001600160a01b0384811691161480159061177a57506005546001600160a01b03838116911614155b801561178e57506001600160a01b03821615155b80156117a557506001600160a01b03821661dead14155b80156117bb5750600554600160a01b900460ff16155b15611c0157600d5462010000900460ff16611854576001600160a01b0383166000908152601b602052604090205460ff168061180f57506001600160a01b0382166000908152601b602052604090205460ff165b6118545760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b96565b600f5460ff161561199b576005546001600160a01b038381169116148015906118af57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b80156118ed57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561199b57326000908152600e602052604090205443116119885760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b96565b326000908152600e602052604090204390555b6001600160a01b0383166000908152601d602052604090205460ff1680156119dc57506001600160a01b0382166000908152601c602052604090205460ff16155b15611ac057600b54811115611a515760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610b96565b600c546001600160a01b038316600090815260208190526040902054611a7790836128ae565b1115611abb5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b96565b611c01565b6001600160a01b0382166000908152601d602052604090205460ff168015611b0157506001600160a01b0383166000908152601c602052604090205460ff16155b15611b7757600b54811115611abb5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610b96565b6001600160a01b0382166000908152601c602052604090205460ff16611c0157600c546001600160a01b038316600090815260208190526040902054611bbd90836128ae565b1115611c015760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b96565b30600090815260208190526040902054600a5481108015908190611c2c5750600d54610100900460ff165b8015611c425750600554600160a01b900460ff16155b8015611c6757506001600160a01b0385166000908152601d602052604090205460ff16155b8015611c8c57506001600160a01b0385166000908152601b602052604090205460ff16155b8015611cb157506001600160a01b0384166000908152601b602052604090205460ff16155b15611cdf576005805460ff60a01b1916600160a01b179055611cd1612130565b6005805460ff60a01b191690555b6005546001600160a01b0386166000908152601b602052604090205460ff600160a01b909204821615911680611d2d57506001600160a01b0385166000908152601b602052604090205460ff165b15611d36575060005b60008115611f21576001600160a01b0386166000908152601d602052604090205460ff168015611d6857506000601454115b15611e2657611d8d6064611d876014548861235490919063ffffffff16565b90612367565b905060145460165482611da09190612875565b611daa919061288c565b60196000828254611dbb91906128ae565b9091555050601454601754611dd09083612875565b611dda919061288c565b601a6000828254611deb91906128ae565b9091555050601454601554611e009083612875565b611e0a919061288c565b60186000828254611e1b91906128ae565b90915550611f039050565b6001600160a01b0387166000908152601d602052604090205460ff168015611e5057506000601054115b15611f0357611e6f6064611d876010548861235490919063ffffffff16565b905060105460125482611e829190612875565b611e8c919061288c565b60196000828254611e9d91906128ae565b9091555050601054601354611eb29083612875565b611ebc919061288c565b601a6000828254611ecd91906128ae565b9091555050601054601154611ee29083612875565b611eec919061288c565b60186000828254611efd91906128ae565b90915550505b8015611f1457611f14873083611fdb565b611f1e8186612949565b94505b611f2c878787611fdb565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152601d6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166120015760405162461bcd60e51b8152600401610b96906128c1565b6001600160a01b0382166120275760405162461bcd60e51b8152600401610b9690612906565b6001600160a01b0383166000908152602081905260409020548181101561209f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b96565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906120d69084906128ae565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161212291815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601a5460185460195461215791906128ae565b61216191906128ae565b90506000821580612170575081155b1561217a57505050565b60095483111561218a5760095492505b60006002836019548661219d9190612875565b6121a7919061288c565b6121b1919061288c565b905060006121bf8583612373565b9050476121cb8261237f565b60006121d74783612373565b905060006121f487611d876018548561235490919063ffffffff16565b9050600061221188611d87601a548661235490919063ffffffff16565b90506000816122208486612949565b61222a9190612949565b600060198190556018819055601a8190556008546040519293506001600160a01b031691849181818185875af1925050503d8060008114612287576040519150601f19603f3d011682016040523d82523d6000602084013e61228c565b606091505b509098505086158015906122a05750600081115b156122f3576122af878261253f565b601954604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612340576040519150601f19603f3d011682016040523d82523d6000602084013e612345565b606091505b50505050505050505050505050565b60006123608284612875565b9392505050565b6000612360828461288c565b60006123608284612949565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123b4576123b461295c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612432573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124569190612972565b816001815181106124695761246961295c565b60200260200101906001600160a01b031690816001600160a01b0316815250506124b4307f0000000000000000000000000000000000000000000000000000000000000000846115ba565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061250990859060009086903090429060040161298f565b600060405180830381600087803b15801561252357600080fd5b505af1158015612537573d6000803e3d6000fd5b505050505050565b61256a307f0000000000000000000000000000000000000000000000000000000000000000846115ba565b60065460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990839060c40160606040518083038185885af11580156125f9573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061261e9190612a00565b5050505050565b600060208083528351808285015260005b8181101561265257858101830151858201604001528201612636565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461156b57600080fd5b6000806040838503121561269b57600080fd5b82356126a681612673565b946020939093013593505050565b6000602082840312156126c657600080fd5b813561236081612673565b6000602082840312156126e357600080fd5b5035919050565b6000806000606084860312156126ff57600080fd5b833561270a81612673565b9250602084013561271a81612673565b929592945050506040919091013590565b80358015158114610edc57600080fd5b6000806040838503121561274e57600080fd5b823561275981612673565b91506127676020840161272b565b90509250929050565b60008060006060848603121561278557600080fd5b505081359360208301359350604090920135919050565b6000602082840312156127ae57600080fd5b6123608261272b565b600080604083850312156127ca57600080fd5b82356127d581612673565b915060208301356127e581612673565b809150509250929050565b600181811c9082168061280457607f821691505b60208210810361282457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610b6657610b6661285f565b6000826128a957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b6657610b6661285f565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610b6657610b6661285f565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561298457600080fd5b815161236081612673565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129df5784516001600160a01b0316835293830193918301916001016129ba565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612a1557600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220571da90ed8165d30a5667fc026496aad81c07218f89bdb57b710efddd1dc062364736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106103905760003560e01c80638da5cb5b116101dc578063c17b5b8c11610102578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610a57578063f637434214610a77578063f8b45b0514610a8d578063fbc10c5514610aa357600080fd5b8063e2f4560514610a16578063e884f26014610a2c578063ecb2fc7f1461075a578063f11a24d314610a4157600080fd5b8063c8c8ebe4116100dc578063c8c8ebe414610984578063d257b34f1461099a578063d85ba063146109ba578063dd62ed3e146109d057600080fd5b8063c17b5b8c1461092a578063c18bc1951461094a578063c876d0b91461096a57600080fd5b80639fccce321161017a578063aacebbe311610149578063aacebbe31461089a578063b62496f5146108ba578063bbc0c742146108ea578063c02466681461090a57600080fd5b80639fccce321461082e578063a0d82dc514610844578063a457c2d71461085a578063a9059cbb1461087a57600080fd5b8063924de9b7116101b6578063924de9b7146107c357806395d89b41146107e35780639a7a23d6146107f85780639c3b4fdc1461081857600080fd5b80638da5cb5b1461076f5780638ea5220f1461078d57806392136913146107ad57600080fd5b80634a62bb65116102c1578063751039fc1161025f5780637af8ed9c1161022e5780637af8ed9c146107045780637bce5a04146107245780638095d5641461073a5780638a8c523c1461075a57600080fd5b8063751039fc146106995780637571336a146106ae57806375f0a874146106ce57806377c18352146106ee57600080fd5b80636a486a8e1161029b5780636a486a8e146106195780636ddd17131461062f57806370a082311461064e578063715018a61461068457600080fd5b80634a62bb65146105a65780634fbee193146105c05780636303516c146105f957600080fd5b80631f3fed8f1161032e57806327c8f8351161030857806327c8f83514610520578063313ce56714610536578063395093511461055257806349bd5a5e1461057257600080fd5b80631f3fed8f146104ca578063203e727e146104e057806323b872dd1461050057600080fd5b80631694505e1161036a5780631694505e1461042757806318160ddd146104735780631816467f146104925780631a8145bb146104b457600080fd5b806306fdde031461039c578063095ea7b3146103c757806310d5de53146103f757600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610ac3565b6040516103be9190612625565b60405180910390f35b3480156103d357600080fd5b506103e76103e2366004612688565b610b55565b60405190151581526020016103be565b34801561040357600080fd5b506103e76104123660046126b4565b601c6020526000908152604090205460ff1681565b34801561043357600080fd5b5061045b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103be565b34801561047f57600080fd5b506002545b6040519081526020016103be565b34801561049e57600080fd5b506104b26104ad3660046126b4565b610b6c565b005b3480156104c057600080fd5b5061048460195481565b3480156104d657600080fd5b5061048460185481565b3480156104ec57600080fd5b506104b26104fb3660046126d1565b610bfc565b34801561050c57600080fd5b506103e761051b3660046126ea565b610cd9565b34801561052c57600080fd5b5061045b61dead81565b34801561054257600080fd5b50604051601281526020016103be565b34801561055e57600080fd5b506103e761056d366004612688565b610d83565b34801561057e57600080fd5b5061045b7f000000000000000000000000a7cf411cd32801f997b3f24897b9fbaaba08698381565b3480156105b257600080fd5b50600d546103e79060ff1681565b3480156105cc57600080fd5b506103e76105db3660046126b4565b6001600160a01b03166000908152601b602052604090205460ff1690565b34801561060557600080fd5b5060065461045b906001600160a01b031681565b34801561062557600080fd5b5061048460145481565b34801561063b57600080fd5b50600d546103e790610100900460ff1681565b34801561065a57600080fd5b506104846106693660046126b4565b6001600160a01b031660009081526020819052604090205490565b34801561069057600080fd5b506104b2610dbf565b3480156106a557600080fd5b506103e7610df5565b3480156106ba57600080fd5b506104b26106c936600461273b565b610e32565b3480156106da57600080fd5b5060075461045b906001600160a01b031681565b3480156106fa57600080fd5b5061048460095481565b34801561071057600080fd5b506103e761071f3660046126d1565b610e87565b34801561073057600080fd5b5061048460115481565b34801561074657600080fd5b506104b2610755366004612770565b610ee1565b34801561076657600080fd5b506104b2610f37565b34801561077b57600080fd5b506005546001600160a01b031661045b565b34801561079957600080fd5b5060085461045b906001600160a01b031681565b3480156107b957600080fd5b5061048460155481565b3480156107cf57600080fd5b506104b26107de36600461279c565b610f74565b3480156107ef57600080fd5b506103b1610fb8565b34801561080457600080fd5b506104b261081336600461273b565b610fc7565b34801561082457600080fd5b5061048460135481565b34801561083a57600080fd5b50610484601a5481565b34801561085057600080fd5b5061048460175481565b34801561086657600080fd5b506103e7610875366004612688565b6110a6565b34801561088657600080fd5b506103e7610895366004612688565b61113f565b3480156108a657600080fd5b506104b26108b53660046126b4565b61114c565b3480156108c657600080fd5b506103e76108d53660046126b4565b601d6020526000908152604090205460ff1681565b3480156108f657600080fd5b50600d546103e79062010000900460ff1681565b34801561091657600080fd5b506104b261092536600461273b565b6111d3565b34801561093657600080fd5b506104b2610945366004612770565b61125c565b34801561095657600080fd5b506104b26109653660046126d1565b6112b2565b34801561097657600080fd5b50600f546103e79060ff1681565b34801561099057600080fd5b50610484600b5481565b3480156109a657600080fd5b506103e76109b53660046126d1565b61135f565b3480156109c657600080fd5b5061048460105481565b3480156109dc57600080fd5b506104846109eb3660046127b7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a2257600080fd5b50610484600a5481565b348015610a3857600080fd5b506103e7611496565b348015610a4d57600080fd5b5061048460125481565b348015610a6357600080fd5b506104b2610a723660046126b4565b6114d3565b348015610a8357600080fd5b5061048460165481565b348015610a9957600080fd5b50610484600c5481565b348015610aaf57600080fd5b506104b2610abe3660046126b4565b61156e565b606060038054610ad2906127f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610afe906127f0565b8015610b4b5780601f10610b2057610100808354040283529160200191610b4b565b820191906000526020600020905b815481529060010190602001808311610b2e57829003601f168201915b5050505050905090565b6000610b623384846115ba565b5060015b92915050565b6005546001600160a01b03163314610b9f5760405162461bcd60e51b8152600401610b969061282a565b60405180910390fd5b6008546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74390600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c265760405162461bcd60e51b8152600401610b969061282a565b670de0b6b3a76400006103e8610c3b60025490565b610c46906001612875565b610c50919061288c565b610c5a919061288c565b811015610cc15760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610b96565b610cd381670de0b6b3a7640000612875565b600b5550565b6000610ce68484846116de565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610d6b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b96565b610d7885338584036115ba565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b62918590610dba9086906128ae565b6115ba565b6005546001600160a01b03163314610de95760405162461bcd60e51b8152600401610b969061282a565b610df36000611f35565b565b6005546000906001600160a01b03163314610e225760405162461bcd60e51b8152600401610b969061282a565b50600d805460ff19169055600190565b6005546001600160a01b03163314610e5c5760405162461bcd60e51b8152600401610b969061282a565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6005546000906001600160a01b03163314610eb45760405162461bcd60e51b8152600401610b969061282a565b620186a0610ec160025490565b610ecb9084612875565b610ed5919061288c565b6009555060015b919050565b6005546001600160a01b03163314610f0b5760405162461bcd60e51b8152600401610b969061282a565b60118390556012829055601381905580610f2583856128ae565b610f2f91906128ae565b601055505050565b6005546001600160a01b03163314610f615760405162461bcd60e51b8152600401610b969061282a565b600d805462ffff00191662010100179055565b6005546001600160a01b03163314610f9e5760405162461bcd60e51b8152600401610b969061282a565b600d80549115156101000261ff0019909216919091179055565b606060048054610ad2906127f0565b6005546001600160a01b03163314610ff15760405162461bcd60e51b8152600401610b969061282a565b7f000000000000000000000000a7cf411cd32801f997b3f24897b9fbaaba0869836001600160a01b0316826001600160a01b0316036110985760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610b96565b6110a28282611f87565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111285760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b96565b61113533858584036115ba565b5060019392505050565b6000610b623384846116de565b6005546001600160a01b031633146111765760405162461bcd60e51b8152600401610b969061282a565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111fd5760405162461bcd60e51b8152600401610b969061282a565b6001600160a01b0382166000818152601b6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146112865760405162461bcd60e51b8152600401610b969061282a565b601583905560168290556017819055806112a083856128ae565b6112aa91906128ae565b601455505050565b6005546001600160a01b031633146112dc5760405162461bcd60e51b8152600401610b969061282a565b60058110156113395760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610b96565b6103e861134560025490565b61134f9083612875565b611359919061288c565b600c5550565b6005546000906001600160a01b0316331461138c5760405162461bcd60e51b8152600401610b969061282a565b60018210156113fb5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b96565b6101f482111561146a5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610b96565b620186a061147760025490565b6114819084612875565b61148b919061288c565b600a55506001919050565b6005546000906001600160a01b031633146114c35760405162461bcd60e51b8152600401610b969061282a565b50600f805460ff19169055600190565b6005546001600160a01b031633146114fd5760405162461bcd60e51b8152600401610b969061282a565b6001600160a01b0381166115625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b96565b61156b81611f35565b50565b6005546001600160a01b031633146115985760405162461bcd60e51b8152600401610b969061282a565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661161c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b96565b6001600160a01b03821661167d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b96565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117045760405162461bcd60e51b8152600401610b96906128c1565b6001600160a01b03821661172a5760405162461bcd60e51b8152600401610b9690612906565b806000036117435761173e83836000611fdb565b505050565b600d5460ff1615611c01576005546001600160a01b0384811691161480159061177a57506005546001600160a01b03838116911614155b801561178e57506001600160a01b03821615155b80156117a557506001600160a01b03821661dead14155b80156117bb5750600554600160a01b900460ff16155b15611c0157600d5462010000900460ff16611854576001600160a01b0383166000908152601b602052604090205460ff168061180f57506001600160a01b0382166000908152601b602052604090205460ff165b6118545760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b96565b600f5460ff161561199b576005546001600160a01b038381169116148015906118af57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b80156118ed57507f000000000000000000000000a7cf411cd32801f997b3f24897b9fbaaba0869836001600160a01b0316826001600160a01b031614155b1561199b57326000908152600e602052604090205443116119885760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b96565b326000908152600e602052604090204390555b6001600160a01b0383166000908152601d602052604090205460ff1680156119dc57506001600160a01b0382166000908152601c602052604090205460ff16155b15611ac057600b54811115611a515760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610b96565b600c546001600160a01b038316600090815260208190526040902054611a7790836128ae565b1115611abb5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b96565b611c01565b6001600160a01b0382166000908152601d602052604090205460ff168015611b0157506001600160a01b0383166000908152601c602052604090205460ff16155b15611b7757600b54811115611abb5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610b96565b6001600160a01b0382166000908152601c602052604090205460ff16611c0157600c546001600160a01b038316600090815260208190526040902054611bbd90836128ae565b1115611c015760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b96565b30600090815260208190526040902054600a5481108015908190611c2c5750600d54610100900460ff165b8015611c425750600554600160a01b900460ff16155b8015611c6757506001600160a01b0385166000908152601d602052604090205460ff16155b8015611c8c57506001600160a01b0385166000908152601b602052604090205460ff16155b8015611cb157506001600160a01b0384166000908152601b602052604090205460ff16155b15611cdf576005805460ff60a01b1916600160a01b179055611cd1612130565b6005805460ff60a01b191690555b6005546001600160a01b0386166000908152601b602052604090205460ff600160a01b909204821615911680611d2d57506001600160a01b0385166000908152601b602052604090205460ff165b15611d36575060005b60008115611f21576001600160a01b0386166000908152601d602052604090205460ff168015611d6857506000601454115b15611e2657611d8d6064611d876014548861235490919063ffffffff16565b90612367565b905060145460165482611da09190612875565b611daa919061288c565b60196000828254611dbb91906128ae565b9091555050601454601754611dd09083612875565b611dda919061288c565b601a6000828254611deb91906128ae565b9091555050601454601554611e009083612875565b611e0a919061288c565b60186000828254611e1b91906128ae565b90915550611f039050565b6001600160a01b0387166000908152601d602052604090205460ff168015611e5057506000601054115b15611f0357611e6f6064611d876010548861235490919063ffffffff16565b905060105460125482611e829190612875565b611e8c919061288c565b60196000828254611e9d91906128ae565b9091555050601054601354611eb29083612875565b611ebc919061288c565b601a6000828254611ecd91906128ae565b9091555050601054601154611ee29083612875565b611eec919061288c565b60186000828254611efd91906128ae565b90915550505b8015611f1457611f14873083611fdb565b611f1e8186612949565b94505b611f2c878787611fdb565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152601d6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166120015760405162461bcd60e51b8152600401610b96906128c1565b6001600160a01b0382166120275760405162461bcd60e51b8152600401610b9690612906565b6001600160a01b0383166000908152602081905260409020548181101561209f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b96565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906120d69084906128ae565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161212291815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601a5460185460195461215791906128ae565b61216191906128ae565b90506000821580612170575081155b1561217a57505050565b60095483111561218a5760095492505b60006002836019548661219d9190612875565b6121a7919061288c565b6121b1919061288c565b905060006121bf8583612373565b9050476121cb8261237f565b60006121d74783612373565b905060006121f487611d876018548561235490919063ffffffff16565b9050600061221188611d87601a548661235490919063ffffffff16565b90506000816122208486612949565b61222a9190612949565b600060198190556018819055601a8190556008546040519293506001600160a01b031691849181818185875af1925050503d8060008114612287576040519150601f19603f3d011682016040523d82523d6000602084013e61228c565b606091505b509098505086158015906122a05750600081115b156122f3576122af878261253f565b601954604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612340576040519150601f19603f3d011682016040523d82523d6000602084013e612345565b606091505b50505050505050505050505050565b60006123608284612875565b9392505050565b6000612360828461288c565b60006123608284612949565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123b4576123b461295c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612432573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124569190612972565b816001815181106124695761246961295c565b60200260200101906001600160a01b031690816001600160a01b0316815250506124b4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846115ba565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061250990859060009086903090429060040161298f565b600060405180830381600087803b15801561252357600080fd5b505af1158015612537573d6000803e3d6000fd5b505050505050565b61256a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846115ba565b60065460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990839060c40160606040518083038185885af11580156125f9573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061261e9190612a00565b5050505050565b600060208083528351808285015260005b8181101561265257858101830151858201604001528201612636565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461156b57600080fd5b6000806040838503121561269b57600080fd5b82356126a681612673565b946020939093013593505050565b6000602082840312156126c657600080fd5b813561236081612673565b6000602082840312156126e357600080fd5b5035919050565b6000806000606084860312156126ff57600080fd5b833561270a81612673565b9250602084013561271a81612673565b929592945050506040919091013590565b80358015158114610edc57600080fd5b6000806040838503121561274e57600080fd5b823561275981612673565b91506127676020840161272b565b90509250929050565b60008060006060848603121561278557600080fd5b505081359360208301359350604090920135919050565b6000602082840312156127ae57600080fd5b6123608261272b565b600080604083850312156127ca57600080fd5b82356127d581612673565b915060208301356127e581612673565b809150509250929050565b600181811c9082168061280457607f821691505b60208210810361282457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610b6657610b6661285f565b6000826128a957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b6657610b6661285f565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610b6657610b6661285f565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561298457600080fd5b815161236081612673565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129df5784516001600160a01b0316835293830193918301916001016129ba565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612a1557600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220571da90ed8165d30a5667fc026496aad81c07218f89bdb57b710efddd1dc062364736f6c63430008130033
Deployed Bytecode Sourcemap
27812:18172:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6079:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8246:169;;;;;;;;;;-1:-1:-1;8246:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8246:169:0;1023:187:1;29231:63:0;;;;;;;;;;-1:-1:-1;29231:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;27889:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;27889:51:0;1467:230:1;7199:108:0;;;;;;;;;;-1:-1:-1;7287:12:0;;7199:108;;;1848:25:1;;;1836:2;1821:18;7199:108:0;1702:177:1;38086:157:0;;;;;;;;;;-1:-1:-1;38086:157:0;;;;;:::i;:::-;;:::i;:::-;;29015:33;;;;;;;;;;;;;;;;28975;;;;;;;;;;;;;;;;34272:275;;;;;;;;;;-1:-1:-1;34272:275:0;;;;;:::i;:::-;;:::i;8897:492::-;;;;;;;;;;-1:-1:-1;8897:492:0;;;;;:::i;:::-;;:::i;27992:53::-;;;;;;;;;;;;28038:6;27992:53;;7041:93;;;;;;;;;;-1:-1:-1;7041:93:0;;7124:2;2880:36:1;;2868:2;2853:18;7041:93:0;2738:184:1;9798:215:0;;;;;;;;;;-1:-1:-1;9798:215:0;;;;;:::i;:::-;;:::i;27947:38::-;;;;;;;;;;;;;;;28343:33;;;;;;;;;;-1:-1:-1;28343:33:0;;;;;;;;38251:126;;;;;;;;;;-1:-1:-1;38251:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;38341:28:0;38317:4;38341:28;;;:19;:28;;;;;;;;;38251:126;28084:23;;;;;;;;;;-1:-1:-1;28084:23:0;;;;-1:-1:-1;;;;;28084:23:0;;;28830:28;;;;;;;;;;;;;;;;28383:31;;;;;;;;;;-1:-1:-1;28383:31:0;;;;;;;;;;;7370:127;;;;;;;;;;-1:-1:-1;7370:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7471:18:0;7444:7;7471:18;;;;;;;;;;;;7370:127;1385:103;;;;;;;;;;;;;:::i;32833:121::-;;;;;;;;;;;;;:::i;35092:167::-;;;;;;;;;;-1:-1:-1;35092:167:0;;;;;:::i;:::-;;:::i;28114:30::-;;;;;;;;;;-1:-1:-1;28114:30:0;;;;-1:-1:-1;;;;;28114:30:0;;;28184:35;;;;;;;;;;;;;;;;33896:218;;;;;;;;;;-1:-1:-1;33896:218:0;;;;;:::i;:::-;;:::i;28723:30::-;;;;;;;;;;;;;;;;35704:332;;;;;;;;;;-1:-1:-1;35704:332:0;;;;;:::i;:::-;;:::i;32644:112::-;;;;;;;;;;;;;:::i;734:87::-;;;;;;;;;;-1:-1:-1;807:6:0;;-1:-1:-1;;;;;807:6:0;734:87;;28151:24;;;;;;;;;;-1:-1:-1;28151:24:0;;;;-1:-1:-1;;;;;28151:24:0;;;28865:31;;;;;;;;;;;;;;;;35377:100;;;;;;;;;;-1:-1:-1;35377:100:0;;;;;:::i;:::-;;:::i;6298:104::-;;;;;;;;;;;;;:::i;37084:304::-;;;;;;;;;;-1:-1:-1;37084:304:0;;;;;:::i;:::-;;:::i;28797:24::-;;;;;;;;;;;;;;;;29055:27;;;;;;;;;;;;;;;;28941:25;;;;;;;;;;;;;;;;10516:413;;;;;;;;;;-1:-1:-1;10516:413:0;;;;;:::i;:::-;;:::i;7710:175::-;;;;;;;;;;-1:-1:-1;7710:175:0;;;;;:::i;:::-;;:::i;37592:231::-;;;;;;;;;;-1:-1:-1;37592:231:0;;;;;:::i;:::-;;:::i;29452:57::-;;;;;;;;;;-1:-1:-1;29452:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28423:33;;;;;;;;;;-1:-1:-1;28423:33:0;;;;;;;;;;;36767:182;;;;;;;;;;-1:-1:-1;36767:182:0;;;;;:::i;:::-;;:::i;36260:340::-;;;;;;;;;;-1:-1:-1;36260:340:0;;;;;:::i;:::-;;:::i;34672:232::-;;;;;;;;;;-1:-1:-1;34672:232:0;;;;;:::i;:::-;;:::i;28641:39::-;;;;;;;;;;-1:-1:-1;28641:39:0;;;;;;;;28268:35;;;;;;;;;;;;;;;;33306:471;;;;;;;;;;-1:-1:-1;33306:471:0;;;;;:::i;:::-;;:::i;28689:27::-;;;;;;;;;;;;;;;;7948:151;;;;;;;;;;-1:-1:-1;7948:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;8064:18:0;;;8037:7;8064:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7948:151;28226:33;;;;;;;;;;;;;;;;33025:135;;;;;;;;;;;;;:::i;28760:30::-;;;;;;;;;;;;;;;;1643:201;;;;;;;;;;-1:-1:-1;1643:201:0;;;;;:::i;:::-;;:::i;28903:31::-;;;;;;;;;;;;;;;;28310:24;;;;;;;;;;;;;;;;37831:128;;;;;;;;;;-1:-1:-1;37831:128:0;;;;;:::i;:::-;;:::i;6079:100::-;6133:13;6166:5;6159:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6079:100;:::o;8246:169::-;8329:4;8346:39;188:10;8369:7;8378:6;8346:8;:39::i;:::-;-1:-1:-1;8403:4:0;8246:169;;;;;:::o;38086:157::-;807:6;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;;;;;;;;;38193:9:::1;::::0;38165:38:::1;::::0;-1:-1:-1;;;;;38193:9:0;;::::1;::::0;38165:38;::::1;::::0;::::1;::::0;38193:9:::1;::::0;38165:38:::1;38214:9;:21:::0;;-1:-1:-1;;;;;;38214:21:0::1;-1:-1:-1::0;;;;;38214:21:0;;;::::1;::::0;;;::::1;::::0;;38086:157::o;34272:275::-;807:6;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;34409:4:::1;34401;34380:13;7287:12:::0;;;7199:108;34380:13:::1;:17;::::0;34396:1:::1;34380:17;:::i;:::-;34379:26;;;;:::i;:::-;34378:35;;;;:::i;:::-;34368:6;:45;;34346:142;;;::::0;-1:-1:-1;;;34346:142:0;;5786:2:1;34346:142:0::1;::::0;::::1;5768:21:1::0;5825:2;5805:18;;;5798:30;5864:34;5844:18;;;5837:62;-1:-1:-1;;;5915:18:1;;;5908:45;5970:19;;34346:142:0::1;5584:411:1::0;34346:142:0::1;34522:17;:6:::0;34532::::1;34522:17;:::i;:::-;34499:20;:40:::0;-1:-1:-1;34272:275:0:o;8897:492::-;9037:4;9054:36;9064:6;9072:9;9083:6;9054:9;:36::i;:::-;-1:-1:-1;;;;;9130:19:0;;9103:24;9130:19;;;:11;:19;;;;;;;;188:10;9130:33;;;;;;;;9182:26;;;;9174:79;;;;-1:-1:-1;;;9174:79:0;;6202:2:1;9174:79:0;;;6184:21:1;6241:2;6221:18;;;6214:30;6280:34;6260:18;;;6253:62;-1:-1:-1;;;6331:18:1;;;6324:38;6379:19;;9174:79:0;6000:404:1;9174:79:0;9289:57;9298:6;188:10;9339:6;9320:16;:25;9289:8;:57::i;:::-;-1:-1:-1;9377:4:0;;8897:492;-1:-1:-1;;;;8897:492:0:o;9798:215::-;188:10;9886:4;9935:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9935:34:0;;;;;;;;;;9886:4;;9903:80;;9926:7;;9935:47;;9972:10;;9935:47;:::i;:::-;9903:8;:80::i;1385:103::-;807:6;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;1450:30:::1;1477:1;1450:18;:30::i;:::-;1385:103::o:0;32833:121::-;807:6;;32885:4;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;-1:-1:-1;32902:14:0::1;:22:::0;;-1:-1:-1;;32902:22:0::1;::::0;;;32833:121;:::o;35092:167::-;807:6;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35205:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;35205:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35092:167::o;33896:218::-;807:6;;34006:4;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;34078:6:::1;34063:13;7287:12:::0;;;7199:108;34063:13:::1;34051:25;::::0;:9;:25:::1;:::i;:::-;:33;;;;:::i;:::-;34028:20;:56:::0;-1:-1:-1;34102:4:0::1;1025:1;33896:218:::0;;;:::o;35704:332::-;807:6;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;35854:15:::1;:31:::0;;;35896:15:::1;:31:::0;;;35938:9:::1;:19:::0;;;35950:7;35983:33:::1;35914:13:::0;35872;35983:33:::1;:::i;:::-;:45;;;;:::i;:::-;35968:12;:60:::0;-1:-1:-1;;;35704:332:0:o;32644:112::-;807:6;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;32699:13:::1;:20:::0;;-1:-1:-1;;32730:18:0;;;;;32644:112::o;35377:100::-;807:6;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;35448:11:::1;:21:::0;;;::::1;;;;-1:-1:-1::0;;35448:21:0;;::::1;::::0;;;::::1;::::0;;35377:100::o;6298:104::-;6354:13;6387:7;6380:14;;;;;:::i;37084:304::-;807:6;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;37228:13:::1;-1:-1:-1::0;;;;;37220:21:0::1;:4;-1:-1:-1::0;;;;;37220:21:0::1;::::0;37198:128:::1;;;::::0;-1:-1:-1;;;37198:128:0;;6741:2:1;37198:128:0::1;::::0;::::1;6723:21:1::0;6780:2;6760:18;;;6753:30;6819:34;6799:18;;;6792:62;6890:27;6870:18;;;6863:55;6935:19;;37198:128:0::1;6539:421:1::0;37198:128:0::1;37339:41;37368:4;37374:5;37339:28;:41::i;:::-;37084:304:::0;;:::o;10516:413::-;188:10;10609:4;10653:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10653:34:0;;;;;;;;;;10706:35;;;;10698:85;;;;-1:-1:-1;;;10698:85:0;;7167:2:1;10698:85:0;;;7149:21:1;7206:2;7186:18;;;7179:30;7245:34;7225:18;;;7218:62;-1:-1:-1;;;7296:18:1;;;7289:35;7341:19;;10698:85:0;6965:401:1;10698:85:0;10819:67;188:10;10842:7;10870:15;10851:16;:34;10819:8;:67::i;:::-;-1:-1:-1;10917:4:0;;10516:413;-1:-1:-1;;;10516:413:0:o;7710:175::-;7796:4;7813:42;188:10;7837:9;7848:6;7813:9;:42::i;37592:231::-;807:6;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;37752:15:::1;::::0;37709:59:::1;::::0;-1:-1:-1;;;;;37752:15:0;;::::1;::::0;37709:59;::::1;::::0;::::1;::::0;37752:15:::1;::::0;37709:59:::1;37779:15;:36:::0;;-1:-1:-1;;;;;;37779:36:0::1;-1:-1:-1::0;;;;;37779:36:0;;;::::1;::::0;;;::::1;::::0;;37592:231::o;36767:182::-;807:6;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36852:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;36852:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;36907:34;;1163:41:1;;;36907:34:0::1;::::0;1136:18:1;36907:34:0::1;;;;;;;36767:182:::0;;:::o;36260:340::-;807:6;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;36411:16:::1;:32:::0;;;36454:16:::1;:32:::0;;;36497:10:::1;:20:::0;;;36510:7;36544:35:::1;36473:13:::0;36430;36544:35:::1;:::i;:::-;:48;;;;:::i;:::-;36528:13;:64:::0;-1:-1:-1;;;36260:340:0:o;34672:232::-;807:6;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;34781:1:::1;34771:6;:11;;34749:97;;;::::0;-1:-1:-1;;;34749:97:0;;7573:2:1;34749:97:0::1;::::0;::::1;7555:21:1::0;7612:2;7592:18;;;7585:30;7651:34;7631:18;;;7624:62;-1:-1:-1;;;7702:18:1;;;7695:34;7746:19;;34749:97:0::1;7371:400:1::0;34749:97:0::1;34892:4;34878:13;7287:12:::0;;;7199:108;34878:13:::1;34869:22;::::0;:6;:22:::1;:::i;:::-;:27;;;;:::i;:::-;34857:9;:39:::0;-1:-1:-1;34672:232:0:o;33306:471::-;807:6;;33414:4;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;33471:1:::1;33458:9;:14;;33436:117;;;::::0;-1:-1:-1;;;33436:117:0;;7978:2:1;33436:117:0::1;::::0;::::1;7960:21:1::0;8017:2;7997:18;;;7990:30;8056:34;8036:18;;;8029:62;-1:-1:-1;;;8107:18:1;;;8100:51;8168:19;;33436:117:0::1;7776:417:1::0;33436:117:0::1;33599:3;33586:9;:16;;33564:118;;;::::0;-1:-1:-1;;;33564:118:0;;8400:2:1;33564:118:0::1;::::0;::::1;8382:21:1::0;8439:2;8419:18;;;8412:30;8478:34;8458:18;;;8451:62;-1:-1:-1;;;8529:18:1;;;8522:50;8589:19;;33564:118:0::1;8198:416:1::0;33564:118:0::1;33741:6;33726:13;7287:12:::0;;;7199:108;33726:13:::1;33714:25;::::0;:9;:25:::1;:::i;:::-;:33;;;;:::i;:::-;33693:18;:54:::0;-1:-1:-1;33765:4:0::1;33306:471:::0;;;:::o;33025:135::-;807:6;;33085:4;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;-1:-1:-1;33102:20:0::1;:28:::0;;-1:-1:-1;;33102:28:0::1;::::0;;;33025:135;:::o;1643:201::-;807:6;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1732:22:0;::::1;1724:73;;;::::0;-1:-1:-1;;;1724:73:0;;8821:2:1;1724:73:0::1;::::0;::::1;8803:21:1::0;8860:2;8840:18;;;8833:30;8899:34;8879:18;;;8872:62;-1:-1:-1;;;8950:18:1;;;8943:36;8996:19;;1724:73:0::1;8619:402:1::0;1724:73:0::1;1808:28;1827:8;1808:18;:28::i;:::-;1643:201:::0;:::o;37831:128::-;807:6;;-1:-1:-1;;;;;807:6:0;188:10;954:23;946:68;;;;-1:-1:-1;;;946:68:0;;;;;;;:::i;:::-;37929:8:::1;:22:::0;;-1:-1:-1;;;;;;37929:22:0::1;-1:-1:-1::0;;;;;37929:22:0;;;::::1;::::0;;;::::1;::::0;;37831:128::o;14200:380::-;-1:-1:-1;;;;;14336:19:0;;14328:68;;;;-1:-1:-1;;;14328:68:0;;9228:2:1;14328:68:0;;;9210:21:1;9267:2;9247:18;;;9240:30;9306:34;9286:18;;;9279:62;-1:-1:-1;;;9357:18:1;;;9350:34;9401:19;;14328:68:0;9026:400:1;14328:68:0;-1:-1:-1;;;;;14415:21:0;;14407:68;;;;-1:-1:-1;;;14407:68:0;;9633:2:1;14407:68:0;;;9615:21:1;9672:2;9652:18;;;9645:30;9711:34;9691:18;;;9684:62;-1:-1:-1;;;9762:18:1;;;9755:32;9804:19;;14407:68:0;9431:398:1;14407:68:0;-1:-1:-1;;;;;14488:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14540:32;;1848:25:1;;;14540:32:0;;1821:18:1;14540:32:0;;;;;;;14200:380;;;:::o;38385:4717::-;-1:-1:-1;;;;;38517:18:0;;38509:68;;;;-1:-1:-1;;;38509:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38596:16:0;;38588:64;;;;-1:-1:-1;;;38588:64:0;;;;;;;:::i;:::-;38669:6;38679:1;38669:11;38665:93;;38697:28;38713:4;38719:2;38723:1;38697:15;:28::i;:::-;38385:4717;;;:::o;38665:93::-;38774:14;;;;38770:2487;;;807:6;;-1:-1:-1;;;;;38827:15:0;;;807:6;;38827:15;;;;:49;;-1:-1:-1;807:6:0;;-1:-1:-1;;;;;38863:13:0;;;807:6;;38863:13;;38827:49;:86;;;;-1:-1:-1;;;;;;38897:16:0;;;;38827:86;:128;;;;-1:-1:-1;;;;;;38934:21:0;;38948:6;38934:21;;38827:128;:158;;;;-1:-1:-1;38977:8:0;;-1:-1:-1;;;38977:8:0;;;;38976:9;38827:158;38805:2441;;;39025:13;;;;;;;39020:223;;-1:-1:-1;;;;;39097:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;39126:23:0;;;;;;:19;:23;;;;;;;;39097:52;39063:160;;;;-1:-1:-1;;;39063:160:0;;10846:2:1;39063:160:0;;;10828:21:1;10885:2;10865:18;;;10858:30;-1:-1:-1;;;10904:18:1;;;10897:52;10966:18;;39063:160:0;10644:346:1;39063:160:0;39399:20;;;;39395:641;;;807:6;;-1:-1:-1;;;;;39474:13:0;;;807:6;;39474:13;;;;:72;;;39530:15;-1:-1:-1;;;;;39516:30:0;:2;-1:-1:-1;;;;;39516:30:0;;;39474:72;:129;;;;;39589:13;-1:-1:-1;;;;;39575:28:0;:2;-1:-1:-1;;;;;39575:28:0;;;39474:129;39444:573;;;39721:9;39692:39;;;;:28;:39;;;;;;39767:12;-1:-1:-1;39654:258:0;;;;-1:-1:-1;;;39654:258:0;;11197:2:1;39654:258:0;;;11179:21:1;11236:2;11216:18;;;11209:30;11275:34;11255:18;;;11248:62;11346:34;11326:18;;;11319:62;-1:-1:-1;;;11397:19:1;;;11390:40;11447:19;;39654:258:0;10995:477:1;39654:258:0;39968:9;39939:39;;;;:28;:39;;;;;39981:12;39939:54;;39444:573;-1:-1:-1;;;;;40110:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;40167:35:0;;;;;;:31;:35;;;;;;;;40166:36;40110:92;40084:1147;;;40289:20;;40279:6;:30;;40245:169;;;;-1:-1:-1;;;40245:169:0;;11679:2:1;40245:169:0;;;11661:21:1;11718:2;11698:18;;;11691:30;11757:34;11737:18;;;11730:62;-1:-1:-1;;;11808:18:1;;;11801:51;11869:19;;40245:169:0;11477:417:1;40245:169:0;40497:9;;-1:-1:-1;;;;;7471:18:0;;7444:7;7471:18;;;;;;;;;;;40471:22;;:6;:22;:::i;:::-;:35;;40437:140;;;;-1:-1:-1;;;40437:140:0;;12101:2:1;40437:140:0;;;12083:21:1;12140:2;12120:18;;;12113:30;-1:-1:-1;;;12159:18:1;;;12152:49;12218:18;;40437:140:0;11899:343:1;40437:140:0;40084:1147;;;-1:-1:-1;;;;;40675:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;40730:37:0;;;;;;:31;:37;;;;;;;;40729:38;40675:92;40649:582;;;40854:20;;40844:6;:30;;40810:170;;;;-1:-1:-1;;;40810:170:0;;12449:2:1;40810:170:0;;;12431:21:1;12488:2;12468:18;;;12461:30;12527:34;12507:18;;;12500:62;-1:-1:-1;;;12578:18:1;;;12571:52;12640:19;;40810:170:0;12247:418:1;40649:582:0;-1:-1:-1;;;;;41011:35:0;;;;;;:31;:35;;;;;;;;41006:225;;41131:9;;-1:-1:-1;;;;;7471:18:0;;7444:7;7471:18;;;;;;;;;;;41105:22;;:6;:22;:::i;:::-;:35;;41071:140;;;;-1:-1:-1;;;41071:140:0;;12101:2:1;41071:140:0;;;12083:21:1;12140:2;12120:18;;;12113:30;-1:-1:-1;;;12159:18:1;;;12152:49;12218:18;;41071:140:0;11899:343:1;41071:140:0;41318:4;41269:28;7471:18;;;;;;;;;;;41376;;41352:42;;;;;;;41425:35;;-1:-1:-1;41449:11:0;;;;;;;41425:35;:61;;;;-1:-1:-1;41478:8:0;;-1:-1:-1;;;41478:8:0;;;;41477:9;41425:61;:110;;;;-1:-1:-1;;;;;;41504:31:0;;;;;;:25;:31;;;;;;;;41503:32;41425:110;:153;;;;-1:-1:-1;;;;;;41553:25:0;;;;;;:19;:25;;;;;;;;41552:26;41425:153;:194;;;;-1:-1:-1;;;;;;41596:23:0;;;;;;:19;:23;;;;;;;;41595:24;41425:194;41407:326;;;41646:8;:15;;-1:-1:-1;;;;41646:15:0;-1:-1:-1;;;41646:15:0;;;41678:10;:8;:10::i;:::-;41705:8;:16;;-1:-1:-1;;;;41705:16:0;;;41407:326;41761:8;;-1:-1:-1;;;;;41871:25:0;;41745:12;41871:25;;;:19;:25;;;;;;41761:8;-1:-1:-1;;;41761:8:0;;;;;41760:9;;41871:25;;:52;;-1:-1:-1;;;;;;41900:23:0;;;;;;:19;:23;;;;;;;;41871:52;41867:100;;;-1:-1:-1;41950:5:0;41867:100;41979:12;42084:7;42080:969;;;-1:-1:-1;;;;;42136:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;42185:1;42169:13;;:17;42136:50;42132:768;;;42214:34;42244:3;42214:25;42225:13;;42214:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;42207:41;;42317:13;;42297:16;;42290:4;:23;;;;:::i;:::-;42289:41;;;;:::i;:::-;42267:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;42387:13:0;;42373:10;;42366:17;;:4;:17;:::i;:::-;42365:35;;;;:::i;:::-;42349:12;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;42469:13:0;;42449:16;;42442:23;;:4;:23;:::i;:::-;42441:41;;;;:::i;:::-;42419:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;42132:768:0;;-1:-1:-1;42132:768:0;;-1:-1:-1;;;;;42544:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;42594:1;42579:12;;:16;42544:51;42540:360;;;42623:33;42652:3;42623:24;42634:12;;42623:6;:10;;:24;;;;:::i;:33::-;42616:40;;42724:12;;42705:15;;42698:4;:22;;;;:::i;:::-;42697:39;;;;:::i;:::-;42675:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;42792:12:0;;42779:9;;42772:16;;:4;:16;:::i;:::-;42771:33;;;;:::i;:::-;42755:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;42872:12:0;;42853:15;;42846:22;;:4;:22;:::i;:::-;42845:39;;;;:::i;:::-;42823:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;42540:360:0;42920:8;;42916:91;;42949:42;42965:4;42979;42986;42949:15;:42::i;:::-;43023:14;43033:4;43023:14;;:::i;:::-;;;42080:969;43061:33;43077:4;43083:2;43087:6;43061:15;:33::i;:::-;38498:4604;;;;38385:4717;;;:::o;2004:191::-;2097:6;;;-1:-1:-1;;;;;2114:17:0;;;-1:-1:-1;;;;;;2114:17:0;;;;;;;2147:40;;2097:6;;;2114:17;2097:6;;2147:40;;2078:16;;2147:40;2067:128;2004:191;:::o;37396:188::-;-1:-1:-1;;;;;37479:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;37479:39:0;;;;;;;;;;37536:40;;37479:39;;:31;37536:40;;;37396:188;;:::o;11419:733::-;-1:-1:-1;;;;;11559:20:0;;11551:70;;;;-1:-1:-1;;;11551:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11640:23:0;;11632:71;;;;-1:-1:-1;;;11632:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11800:17:0;;11776:21;11800:17;;;;;;;;;;;11836:23;;;;11828:74;;;;-1:-1:-1;;;11828:74:0;;13005:2:1;11828:74:0;;;12987:21:1;13044:2;13024:18;;;13017:30;13083:34;13063:18;;;13056:62;-1:-1:-1;;;13134:18:1;;;13127:36;13180:19;;11828:74:0;12803:402:1;11828:74:0;-1:-1:-1;;;;;11938:17:0;;;:9;:17;;;;;;;;;;;11958:22;;;11938:42;;12002:20;;;;;;;;:30;;11974:6;;11938:9;12002:30;;11974:6;;12002:30;:::i;:::-;;;;;;;;12067:9;-1:-1:-1;;;;;12050:35:0;12059:6;-1:-1:-1;;;;;12050:35:0;;12078:6;12050:35;;;;1848:25:1;;1836:2;1821:18;;1702:177;12050:35:0;;;;;;;;11540:612;11419:733;;;:::o;44229:1750::-;44312:4;44268:23;7471:18;;;;;;;;;;;44268:50;;44329:25;44425:12;;44391:18;;44357;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;44329:108;-1:-1:-1;44448:12:0;44477:20;;;:46;;-1:-1:-1;44501:22:0;;44477:46;44473:85;;;44540:7;;;44229:1750::o;44473:85::-;44592:20;;44574:15;:38;44570:109;;;44647:20;;44629:38;;44570:109;44740:23;44853:1;44820:17;44785:18;;44767:15;:36;;;;:::i;:::-;44766:71;;;;:::i;:::-;:88;;;;:::i;:::-;44740:114;-1:-1:-1;44865:26:0;44894:36;:15;44740:114;44894:19;:36::i;:::-;44865:65;-1:-1:-1;44971:21:0;45005:36;44865:65;45005:16;:36::i;:::-;45054:18;45075:44;:21;45101:17;45075:25;:44::i;:::-;45054:65;;45132:23;45158:81;45211:17;45158:34;45173:18;;45158:10;:14;;:34;;;;:::i;:81::-;45132:107;;45250:17;45270:51;45303:17;45270:28;45285:12;;45270:10;:14;;:28;;;;:::i;:51::-;45250:71;-1:-1:-1;45334:23:0;45250:71;45360:28;45373:15;45360:10;:28;:::i;:::-;:40;;;;:::i;:::-;45434:1;45413:18;:22;;;45446:18;:22;;;45479:12;:16;;;45530:9;;45522:45;;45334:66;;-1:-1:-1;;;;;;45530:9:0;;45553;;45522:45;45434:1;45522:45;45553:9;45530;45522:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45508:59:0;;-1:-1:-1;;45584:19:0;;;;;:42;;;45625:1;45607:15;:19;45584:42;45580:278;;;45643:46;45656:15;45673;45643:12;:46::i;:::-;45813:18;;45709:137;;;13622:25:1;;;13678:2;13663:18;;13656:34;;;13706:18;;;13699:34;;;;45709:137:0;;;;;;13610:2:1;45709:137:0;;;45580:278;45892:15;;45884:87;;-1:-1:-1;;;;;45892:15:0;;;;45935:21;;45884:87;;;;45935:21;45892:15;45884:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;44229:1750:0:o;19129:98::-;19187:7;19214:5;19218:1;19214;:5;:::i;:::-;19207:12;19129:98;-1:-1:-1;;;19129:98:0:o;19528:::-;19586:7;19613:5;19617:1;19613;:5;:::i;18772:98::-;18830:7;18857:5;18861:1;18857;:5;:::i;43110:589::-;43260:16;;;43274:1;43260:16;;;;;;;;43236:21;;43260:16;;;;;;;;;;-1:-1:-1;43260:16:0;43236:40;;43305:4;43287;43292:1;43287:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;43287:23:0;;;-1:-1:-1;;;;;43287:23:0;;;;;43331:15;-1:-1:-1;;;;;43331:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43321:4;43326:1;43321:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;43321:32:0;;;-1:-1:-1;;;;;43321:32:0;;;;;43366:62;43383:4;43398:15;43416:11;43366:8;:62::i;:::-;43467:224;;-1:-1:-1;;;43467:224:0;;-1:-1:-1;;;;;43467:15:0;:66;;;;:224;;43548:11;;43574:1;;43618:4;;43645;;43665:15;;43467:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43165:534;43110:589;:::o;43707:514::-;43855:62;43872:4;43887:15;43905:11;43855:8;:62::i;:::-;44164:8;;43960:253;;-1:-1:-1;;;43960:253:0;;44032:4;43960:253;;;15590:34:1;15640:18;;;15633:34;;;44078:1:0;15683:18:1;;;15676:34;;;15726:18;;;15719:34;-1:-1:-1;;;;;44164:8:0;;;15769:19:1;;;15762:44;44187:15:0;15822:19:1;;;15815:35;43960:15:0;:31;;;;;;43999:9;;15524:19:1;;43960:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;43707:514;;:::o;14:548:1:-;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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:180::-;1943:6;1996:2;1984:9;1975:7;1971:23;1967:32;1964:52;;;2012:1;2009;2002:12;1964:52;-1:-1:-1;2035:23:1;;1884:180;-1:-1:-1;1884:180:1:o;2069:456::-;2146:6;2154;2162;2215:2;2203:9;2194:7;2190:23;2186:32;2183:52;;;2231:1;2228;2221:12;2183:52;2270:9;2257:23;2289:31;2314:5;2289:31;:::i;:::-;2339:5;-1:-1:-1;2396:2:1;2381:18;;2368:32;2409:33;2368:32;2409:33;:::i;:::-;2069:456;;2461:7;;-1:-1:-1;;;2515:2:1;2500:18;;;;2487:32;;2069:456::o;2927:160::-;2992:20;;3048:13;;3041:21;3031:32;;3021:60;;3077:1;3074;3067:12;3092:315;3157:6;3165;3218:2;3206:9;3197:7;3193:23;3189:32;3186:52;;;3234:1;3231;3224:12;3186:52;3273:9;3260:23;3292:31;3317:5;3292:31;:::i;:::-;3342:5;-1:-1:-1;3366:35:1;3397:2;3382:18;;3366:35;:::i;:::-;3356:45;;3092:315;;;;;:::o;3412:316::-;3489:6;3497;3505;3558:2;3546:9;3537:7;3533:23;3529:32;3526:52;;;3574:1;3571;3564:12;3526:52;-1:-1:-1;;3597:23:1;;;3667:2;3652:18;;3639:32;;-1:-1:-1;3718:2:1;3703:18;;;3690:32;;3412:316;-1:-1:-1;3412:316:1:o;3733:180::-;3789:6;3842:2;3830:9;3821:7;3817:23;3813:32;3810:52;;;3858:1;3855;3848:12;3810:52;3881:26;3897:9;3881:26;:::i;3918:388::-;3986:6;3994;4047:2;4035:9;4026:7;4022:23;4018:32;4015:52;;;4063:1;4060;4053:12;4015:52;4102:9;4089:23;4121:31;4146:5;4121:31;:::i;:::-;4171:5;-1:-1:-1;4228:2:1;4213:18;;4200:32;4241:33;4200:32;4241:33;:::i;:::-;4293:7;4283:17;;;3918:388;;;;;:::o;4311:380::-;4390:1;4386:12;;;;4433;;;4454:61;;4508:4;4500:6;4496:17;4486:27;;4454:61;4561:2;4553:6;4550:14;4530:18;4527:38;4524:161;;4607:10;4602:3;4598:20;4595:1;4588:31;4642:4;4639:1;4632:15;4670:4;4667:1;4660:15;4524:161;;4311:380;;;:::o;4696:356::-;4898:2;4880:21;;;4917:18;;;4910:30;4976:34;4971:2;4956:18;;4949:62;5043:2;5028:18;;4696:356::o;5057:127::-;5118:10;5113:3;5109:20;5106:1;5099:31;5149:4;5146:1;5139:15;5173:4;5170:1;5163:15;5189:168;5262:9;;;5293;;5310:15;;;5304:22;;5290:37;5280:71;;5331:18;;:::i;5362:217::-;5402:1;5428;5418:132;;5472:10;5467:3;5463:20;5460:1;5453:31;5507:4;5504:1;5497:15;5535:4;5532:1;5525:15;5418:132;-1:-1:-1;5564:9:1;;5362:217::o;6409:125::-;6474:9;;;6495:10;;;6492:36;;;6508:18;;:::i;9834:401::-;10036:2;10018:21;;;10075:2;10055:18;;;10048:30;10114:34;10109:2;10094:18;;10087:62;-1:-1:-1;;;10180:2:1;10165:18;;10158:35;10225:3;10210:19;;9834:401::o;10240:399::-;10442:2;10424:21;;;10481:2;10461:18;;;10454:30;10520:34;10515:2;10500:18;;10493:62;-1:-1:-1;;;10586:2:1;10571:18;;10564:33;10629:3;10614:19;;10240:399::o;12670:128::-;12737:9;;;12758:11;;;12755:37;;;12772:18;;:::i;13876:127::-;13937:10;13932:3;13928:20;13925:1;13918:31;13968:4;13965:1;13958:15;13992:4;13989:1;13982:15;14008:251;14078:6;14131:2;14119:9;14110:7;14106:23;14102:32;14099:52;;;14147:1;14144;14137:12;14099:52;14179:9;14173:16;14198:31;14223:5;14198:31;:::i;14264:980::-;14526:4;14574:3;14563:9;14559:19;14605:6;14594:9;14587:25;14631:2;14669:6;14664:2;14653:9;14649:18;14642:34;14712:3;14707:2;14696:9;14692:18;14685:31;14736:6;14771;14765:13;14802:6;14794;14787:22;14840:3;14829:9;14825:19;14818:26;;14879:2;14871:6;14867:15;14853:29;;14900:1;14910:195;14924:6;14921:1;14918:13;14910:195;;;14989:13;;-1:-1:-1;;;;;14985:39:1;14973:52;;15080:15;;;;15045:12;;;;15021:1;14939:9;14910:195;;;-1:-1:-1;;;;;;;15161:32:1;;;;15156:2;15141:18;;15134:60;-1:-1:-1;;;15225:3:1;15210:19;15203:35;15122:3;14264:980;-1:-1:-1;;;14264:980:1:o;15861:306::-;15949:6;15957;15965;16018:2;16006:9;15997:7;15993:23;15989:32;15986:52;;;16034:1;16031;16024:12;15986:52;16063:9;16057:16;16047:26;;16113:2;16102:9;16098:18;16092:25;16082:35;;16157:2;16146:9;16142:18;16136:25;16126:35;;15861:306;;;;;:::o
Swarm Source
ipfs://571da90ed8165d30a5667fc026496aad81c07218f89bdb57b710efddd1dc0623
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.