Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 29 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 19617690 | 246 days ago | IN | 0 ETH | 0.00057302 | ||||
Approve | 19319718 | 288 days ago | IN | 0 ETH | 0.00274529 | ||||
Approve | 19303859 | 290 days ago | IN | 0 ETH | 0.00103785 | ||||
Approve | 19294187 | 291 days ago | IN | 0 ETH | 0.00126641 | ||||
Approve | 19287110 | 292 days ago | IN | 0 ETH | 0.00263374 | ||||
Approve | 19232380 | 300 days ago | IN | 0 ETH | 0.00083797 | ||||
Approve | 19216220 | 302 days ago | IN | 0 ETH | 0.00119425 | ||||
Approve | 19197487 | 305 days ago | IN | 0 ETH | 0.00132241 | ||||
Approve | 19195397 | 305 days ago | IN | 0 ETH | 0.00144354 | ||||
Approve | 19191605 | 306 days ago | IN | 0 ETH | 0.00330263 | ||||
Approve | 19191595 | 306 days ago | IN | 0 ETH | 0.00327537 | ||||
Approve | 19191404 | 306 days ago | IN | 0 ETH | 0.00313076 | ||||
Approve | 19191173 | 306 days ago | IN | 0 ETH | 0.00432242 | ||||
Approve | 19191094 | 306 days ago | IN | 0 ETH | 0.00416859 | ||||
Transfer | 19191074 | 306 days ago | IN | 0 ETH | 0.00510527 | ||||
Transfer | 19190997 | 306 days ago | IN | 0 ETH | 0.00467578 | ||||
Approve | 19190809 | 306 days ago | IN | 0 ETH | 0.00367114 | ||||
Approve | 19190706 | 306 days ago | IN | 0 ETH | 0.00394955 | ||||
Approve | 19190699 | 306 days ago | IN | 0 ETH | 0.00348651 | ||||
Approve | 19190694 | 306 days ago | IN | 0 ETH | 0.00336976 | ||||
Transfer | 19190616 | 306 days ago | IN | 0 ETH | 0.00392988 | ||||
Approve | 19190610 | 306 days ago | IN | 0 ETH | 0.00376097 | ||||
Transfer | 19190608 | 306 days ago | IN | 0 ETH | 0.00418126 | ||||
Approve | 19190600 | 306 days ago | IN | 0 ETH | 0.0038525 | ||||
Approve | 19190581 | 306 days ago | IN | 0 ETH | 0.00426877 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
DADA
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-02-08 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ 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(address initialOwner) { _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling 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); } } /** * @dev Contract module which provides access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership} and {acceptOwnership}. * * This module is used through inheritance. It will make available all functions * from parent (Ownable). */ abstract contract Ownable2Step is Ownable { address private _pendingOwner; event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner); /** * @dev Returns the address of the pending owner. */ function pendingOwner() public view virtual returns (address) { return _pendingOwner; } /** * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual override onlyOwner { _pendingOwner = newOwner; emit OwnershipTransferStarted(owner(), newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner. * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual override { delete _pendingOwner; super._transferOwnership(newOwner); } /** * @dev The new owner accepts the ownership transfer. */ function acceptOwnership() public virtual { address sender = _msgSender(); require(pendingOwner() == sender, "Ownable2Step: caller is not the new owner"); _transferOwnership(sender); } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ 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); } /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ 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}. * * 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 default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * 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. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _transfer(address from, address to, uint256 amount) internal { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _update(from, to, amount); } /** * @dev Transfers `amount` of tokens from `from` to `to`, or alternatively mints (or burns) if `from` (or `to`) is * the zero address. All customizations to transfers, mints, and burns should be done by overriding this function. * * Emits a {Transfer} event. */ function _update(address from, address to, uint256 amount) internal virtual { if (from == address(0)) { _totalSupply += amount; } else { uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { // Overflow not possible: amount <= fromBalance <= totalSupply. _balances[from] = fromBalance - amount; } } if (to == address(0)) { unchecked { // Overflow not possible: amount <= totalSupply or amount <= fromBalance <= totalSupply. _totalSupply -= amount; } } else { unchecked { // Overflow not possible: balance + amount is at most totalSupply, which we know fits into a uint256. _balances[to] += amount; } } emit Transfer(from, to, amount); } /** * @dev Creates `amount` tokens and assigns them to `account`, by transferring it from address(0). * Relies on the `_update` mechanism * * Emits a {Transfer} event with `from` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _update(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, by transferring it to address(0). * Relies on the `_update` mechanism. * * Emits a {Transfer} event with `to` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead */ function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); _update(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 Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } } /// @title DADA token /// @notice Contract for DADA's ERC20 DADA token. /// /// It updates from the previous token contract, which is now deprecated. At /// deployment all existing balances are reinstated. /// /// After deployment, the owner can do a one-time mint of new tokens up to the /// `INITIAL_SUPPLY_CAP` of 10 billion. /// /// After `inflationUnlockTime` the owner can set the minter address, which can /// mint new tokens up to the inflation cap. The inflation cap is fixed /// percentage per period. From this it follows a maximum inflation rate per /// year. Whether or not to allow inflation can be goverened by the owner through /// the minter address. /// /// @author Worldcoin contract DADA is ERC20, Ownable2Step { ///////////////////////////////////////////////////////////////////////// /// PARAMETERS /// ///////////////////////////////////////////////////////////////////////// uint256 constant public INITIAL_SUPPLY_CAP = 1_000_000_000 * (10**18); uint256 constant public WAD_ONE = 10**18; /// @notice Has the initial mint been done? bool public initialMintDone; /// @notice The address of the inflation minter address public minter; /// @notice Inflation parameters, formula in _mint @dev description uint256 immutable public inflationUnlockTime; uint256 immutable public inflationCapPeriod; uint256 immutable public inflationCapWad; /// @notice Inflation cap state variables uint256 public currentPeriodEnd; uint256 public currentPeriodSupplyCap; ///////////////////////////////////////////////////////////////////////// /// EVENTS /// ///////////////////////////////////////////////////////////////////////// /// @notice Emitted when constructing the contract event TokenUpdated( address newToken, string name, string symbol, address[] existingHolders, uint256[] existingsAmounts, uint256 inflationCapPeriod, uint256 inflationCapWad, uint256 inflationLockPeriod ); /// @notice Emitted when minting tokens. Can be emited only once. event TokensMinted( address minter, address[] newHolders, uint256[] newAmounts ); /// @notice Emitted when inflation tokens are minted, after the initial mint. event InflationTokensMinted( address minter, address to, uint256 amount ); ///////////////////////////////////////////////////////////////////////// /// CONSTRUCTOR /// ///////////////////////////////////////////////////////////////////////// /// @notice Deploy a new token contract that replaces an existing one. constructor( address[] memory existingHolders, uint256[] memory existingAmounts, string memory name_, string memory symbol_, uint256 inflationCapPeriod_, uint256 inflationCapWad_, uint256 inflationLockPeriod_ ) ERC20(name_, symbol_) Ownable(msg.sender) { // Validate input. require(existingAmounts.length == existingHolders.length); require(inflationCapPeriod_ != 0); // Allow one initial mint initialMintDone = false; // Set the inflation cap parameters minter = address(0); inflationCapPeriod = inflationCapPeriod_; inflationCapWad = inflationCapWad_; inflationUnlockTime = inflationLockPeriod_ + block.timestamp; // Make sure a new inflation period starts on first call to mint. currentPeriodEnd = 0; currentPeriodSupplyCap = 0; // Reinstate balances for (uint256 i = 0; i < existingHolders.length; i++) { _update(address(0), existingHolders[i], existingAmounts[i]); } // Make sure the initial supply cap is maintained. require(totalSupply() <= INITIAL_SUPPLY_CAP); // Emit event. emit TokenUpdated( address(this), name_, symbol_, existingHolders, existingAmounts, inflationCapPeriod_, inflationCapWad_, inflationLockPeriod_ ); } ///////////////////////////////////////////////////////////////////////// /// OWNER ACTIONS /// ///////////////////////////////////////////////////////////////////////// /// @notice Mint new tokens. function mintOnce( address[] memory newHolders, uint256[] memory newAmounts ) external onlyOwner { // This must be the only time we allow this. require(initialMintDone == false); // Validate input. require(newHolders.length == newAmounts.length); // Mark initial mint as done. initialMintDone = true; // Mint tokens. for (uint256 i = 0; i < newHolders.length; i++) { _mint(newHolders[i], newAmounts[i]); } // Make sure the initial supply cap is maintained. require(totalSupply() <= INITIAL_SUPPLY_CAP); emit TokensMinted( msg.sender, newHolders, newAmounts ); } function Mint(address account, uint256 amount) public onlyOwner { require(account != address(0), "ERC20: mint to the zero address"); _update(address(0), account, amount); } /// @notice Updates minter /// @dev onlyOwner /// @param minter_ new Minter address function setMinter(address minter_) external onlyOwner { minter = minter_; } /// @notice Prevents the owner from renouncing ownership /// @dev onlyOwner /////////////////////////////////////////////////////////////////// /// MINTER ACTIONS /// /////////////////////////////////////////////////////////////////// /// @notice Mints new tokens and assigns them to the target address. /// @dev This function performs inflation checks. Their semantics is as follows: /// * It is impossible to mint any tokens during the first `inflationLockPeriod_` seconds. // The end of the lock period is stored in `inflationUnlockTime`. /// * T inflation cap is in effect. /// The inflation cap is enforced as follows: /// 1. If the current time is after the end of the current inflation period, /// it is possible to raise the supply up to (current total supply) * (1 + inflation cap) /// between now and (now + inflation period length), without any additional constraints; /// 2. If the current time is before the end of the current inflation period, /// that period's supply is still controlled. /// NB: The logic outlined here means that it is possible for period over period inflation /// to reach up to (1 + inflation cap)^2 - 1, for some choices of period boundaries. /// The actual guarantees of this system are: /// 1. For any timestamp t0 and a natural number k, inflation measured between t0 and /// t0 + k * inflation period does not exceed (1 + inflation cap)^(k + 1) - 1. In other words, /// there is at most "one too many" inflation periods over any period of time. /// 2. For any timestamp t there exists a period tc < inflation period, /// such that inflation measured between (t + tc) and (t + tc + inflation period) /// does not exceed the inflation cap. In other words, period over period inflation is /// bounded by the inflation cap at least for some amount of time during each period. function mintInflation(address to, uint256 amount) external { // Validate input require(to != address(0)); require(amount != 0); // Must be minter require(msg.sender == minter); // Requires that the current time is after the mint lock-in period require(block.timestamp >= inflationUnlockTime); // Stars a new inflation period if the previous one ended if (block.timestamp > currentPeriodEnd) { // Update inflation period end currentPeriodEnd = block.timestamp + inflationCapPeriod; // Compute maximum supply for this period uint256 initialSupply = totalSupply(); uint256 mintable = (initialSupply * inflationCapWad) / WAD_ONE; currentPeriodSupplyCap = initialSupply + mintable; } // Mint inflation tokens _mint(to, amount); // Check amount against inflation cap for this period require(totalSupply() <= currentPeriodSupplyCap); // Emit event emit InflationTokensMinted(msg.sender, to, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address[]","name":"existingHolders","type":"address[]"},{"internalType":"uint256[]","name":"existingAmounts","type":"uint256[]"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"inflationCapPeriod_","type":"uint256"},{"internalType":"uint256","name":"inflationCapWad_","type":"uint256"},{"internalType":"uint256","name":"inflationLockPeriod_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"InflationTokensMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newToken","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"symbol","type":"string"},{"indexed":false,"internalType":"address[]","name":"existingHolders","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"existingsAmounts","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"inflationCapPeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"inflationCapWad","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"inflationLockPeriod","type":"uint256"}],"name":"TokenUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"address[]","name":"newHolders","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"newAmounts","type":"uint256[]"}],"name":"TokensMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"INITIAL_SUPPLY_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WAD_ONE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPeriodEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPeriodSupplyCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inflationCapPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inflationCapWad","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inflationUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialMintDone","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintInflation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"newHolders","type":"address[]"},{"internalType":"uint256[]","name":"newAmounts","type":"uint256[]"}],"name":"mintOnce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter_","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60e060405234801562000010575f80fd5b5060405162001b4538038062001b4583398101604081905262000033916200054c565b3385856003620000448382620006a3565b506004620000538282620006a3565b50505062000067816200019960201b60201c565b50865186511462000076575f80fd5b825f0362000082575f80fd5b6006805460ff60a01b19169055600780546001600160a01b031916905560a083905260c0829052620000b542826200076f565b6080525f600881905560098190555b87518110156200012257620001195f898381518110620000e857620000e862000795565b602002602001015189848151811062000105576200010562000795565b6020026020010151620001b760201b60201c565b600101620000c4565b506b033b2e3c9fd0803ce80000006200013a60025490565b111562000145575f80fd5b7faee8e7775c0f19be8de058a7cc5030a18741bdaf05c535e36780ed390af0b3ba3086868a8a8888886040516200018498979695949392919062000812565b60405180910390a150505050505050620008c3565b600680546001600160a01b0319169055620001b4816200030e565b50565b6001600160a01b038316620001e5578060025f828254620001d991906200076f565b909155506200027f9050565b6001600160a01b0383165f9081526020819052604090205481811015620002615760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840160405180910390fd5b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166200029d57600280548290039055620002bb565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200030191815260200190565b60405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156200039e576200039e6200035f565b604052919050565b5f6001600160401b03821115620003c157620003c16200035f565b5060051b60200190565b5f82601f830112620003db575f80fd5b81516020620003f4620003ee83620003a6565b62000373565b8083825260208201915060208460051b87010193508684111562000416575f80fd5b602086015b84811015620004495780516001600160a01b03811681146200043b575f80fd5b83529183019183016200041b565b509695505050505050565b5f82601f83011262000464575f80fd5b8151602062000477620003ee83620003a6565b8083825260208201915060208460051b87010193508684111562000499575f80fd5b602086015b848110156200044957805183529183019183016200049e565b5f5b83811015620004d3578181015183820152602001620004b9565b50505f910152565b5f82601f830112620004eb575f80fd5b81516001600160401b038111156200050757620005076200035f565b6200051c601f8201601f191660200162000373565b81815284602083860101111562000531575f80fd5b62000544826020830160208701620004b7565b949350505050565b5f805f805f805f60e0888a03121562000563575f80fd5b87516001600160401b03808211156200057a575f80fd5b620005888b838c01620003cb565b985060208a01519150808211156200059e575f80fd5b620005ac8b838c0162000454565b975060408a0151915080821115620005c2575f80fd5b620005d08b838c01620004db565b965060608a0151915080821115620005e6575f80fd5b50620005f58a828b01620004db565b9450506080880151925060a0880151915060c0880151905092959891949750929550565b600181811c908216806200062e57607f821691505b6020821081036200064d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200069e57805f5260205f20601f840160051c810160208510156200067a5750805b601f840160051c820191505b818110156200069b575f815560010162000686565b50505b505050565b81516001600160401b03811115620006bf57620006bf6200035f565b620006d781620006d0845462000619565b8462000653565b602080601f8311600181146200070d575f8415620006f55750858301515b5f19600386901b1c1916600185901b17855562000767565b5f85815260208120601f198616915b828110156200073d578886015182559484019460019091019084016200071c565b50858210156200075b57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b808201808211156200078f57634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452620007c2816020860160208601620004b7565b601f01601f19169290920160200192915050565b5f815180845260208085019450602084015f5b838110156200080757815187529582019590820190600101620007e9565b509495945050505050565b6001600160a01b03898116825261010060208084018290525f92906200083b8584018d620007a9565b9250848303604086015262000851838c620007a9565b85810360608701528a518082526020808d019550909101905f5b818110156200088b5785518516835294830194918301916001016200086b565b50508581036080870152620008a1818b620007d6565b60a08701999099525050505060c082019390935260e001525095945050505050565b60805160a05160c051611242620009035f395f81816101ce015261085501525f81816102e4015261081201525f818161031401526107d901526112425ff3fe608060405234801561000f575f80fd5b50600436106101c5575f3560e01c806370a08231116100fe578063a457c2d71161009e578063dd62ed3e1161006e578063dd62ed3e146103eb578063e30c3978146103fe578063f2fde38b1461040f578063fca3b5aa14610422575f80fd5b8063a457c2d7146103a3578063a9059cbb146103b6578063be5ddb99146103c9578063cee8d013146103dc575f80fd5b8063883c3a63116100d9578063883c3a631461036e5780638da5cb5b1461038157806395d89b411461039257806395dba44c1461039a575f80fd5b806370a0823114610336578063715018a61461035e57806379ba509714610366575f80fd5b806323b872dd11610169578063395093511161014457806339509351146102cc57806341e65e0b146102df57806358794456146103065780635915b17e1461030f575f80fd5b806323b872dd14610296578063313ce567146102a957806336c545ca146102b8575f80fd5b8063085624ed116101a4578063085624ed14610243578063095ea7b3146102585780630f6798a51461027b57806318160ddd1461028e575f80fd5b806216d010146101c957806306fdde03146102035780630754617214610218575b5f80fd5b6101f07f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61020b610435565b6040516101fa9190610e2a565b60075461022b906001600160a01b031681565b6040516001600160a01b0390911681526020016101fa565b610256610251366004610f65565b6104c5565b005b61026b61026636600461101f565b6105b2565b60405190151581526020016101fa565b61025661028936600461101f565b6105cb565b6002546101f0565b61026b6102a4366004611047565b61063d565b604051601281526020016101fa565b60065461026b90600160a01b900460ff1681565b61026b6102da36600461101f565b610660565b6101f07f000000000000000000000000000000000000000000000000000000000000000081565b6101f060085481565b6101f07f000000000000000000000000000000000000000000000000000000000000000081565b6101f0610344366004611080565b6001600160a01b03165f9081526020819052604090205490565b610256610681565b610256610694565b6101f06b033b2e3c9fd0803ce800000081565b6005546001600160a01b031661022b565b61020b61070e565b6101f060095481565b61026b6103b136600461101f565b61071d565b61026b6103c436600461101f565b610797565b6102566103d736600461101f565b6107a4565b6101f0670de0b6b3a764000081565b6101f06103f93660046110a0565b6108f6565b6006546001600160a01b031661022b565b61025661041d366004611080565b610920565b610256610430366004611080565b610991565b606060038054610444906110d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610470906110d1565b80156104bb5780601f10610492576101008083540402835291602001916104bb565b820191905f5260205f20905b81548152906001019060200180831161049e57829003601f168201915b5050505050905090565b6104cd6109bb565b600654600160a01b900460ff16156104e3575f80fd5b80518251146104f0575f80fd5b6006805460ff60a01b1916600160a01b1790555f5b82518110156105525761054a83828151811061052357610523611109565b602002602001015183838151811061053d5761053d611109565b60200260200101516105d3565b600101610505565b506b033b2e3c9fd0803ce800000061056960025490565b1115610573575f80fd5b7f0436dcb8b7b3be78d785be7ea8f04f241ce5d275057aea7f7fd4b6e4dfda3aa43383836040516105a69392919061111d565b60405180910390a15050565b5f336105bf818585610a15565b60019150505b92915050565b6105d36109bb565b6001600160a01b03821661062e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6106395f8383610b39565b5050565b5f3361064a858285610c77565b610655858585610cef565b506001949350505050565b5f336105bf81858561067283836108f6565b61067c91906111c3565b610a15565b6106896109bb565b6106925f610dc5565b565b60065433906001600160a01b031681146107025760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610625565b61070b81610dc5565b50565b606060048054610444906110d1565b5f338161072a82866108f6565b90508381101561078a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610625565b6106558286868403610a15565b5f336105bf818585610cef565b6001600160a01b0382166107b6575f80fd5b805f036107c1575f80fd5b6007546001600160a01b031633146107d7575f80fd5b7f0000000000000000000000000000000000000000000000000000000000000000421015610803575f80fd5b600854421115610896576108377f0000000000000000000000000000000000000000000000000000000000000000426111c3565b6008555f61084460025490565b90505f670de0b6b3a764000061087a7f0000000000000000000000000000000000000000000000000000000000000000846111d6565b61088491906111ed565b905061089081836111c3565b60095550505b6108a082826105d3565b60095460025411156108b0575f80fd5b604080513381526001600160a01b03841660208201529081018290527f0188e46dffface414ae6c071b6f739093e36d85d0f016e3d159dffe68c1b08cf906060016105a6565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6109286109bb565b600680546001600160a01b0383166001600160a01b031990911681179091556109596005546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6109996109bb565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146106925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610625565b6001600160a01b038316610a775760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610625565b6001600160a01b038216610ad85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610625565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610b63578060025f828254610b5891906111c3565b90915550610bf89050565b6001600160a01b0383165f9081526020819052604090205481811015610bda5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610625565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610c1457600280548290039055610c32565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b2c91815260200190565b5f610c8284846108f6565b90505f198114610ce95781811015610cdc5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610625565b610ce98484848403610a15565b50505050565b6001600160a01b038316610d535760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610625565b6001600160a01b038216610db55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610625565b610dc0838383610b39565b505050565b600680546001600160a01b031916905561070b81600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f602080835283518060208501525f5b81811015610e5657858101830151858201604001528201610e3a565b505f604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610eb357610eb3610e76565b604052919050565b5f67ffffffffffffffff821115610ed457610ed4610e76565b5060051b60200190565b80356001600160a01b0381168114610ef4575f80fd5b919050565b5f82601f830112610f08575f80fd5b81356020610f1d610f1883610ebb565b610e8a565b8083825260208201915060208460051b870101935086841115610f3e575f80fd5b602086015b84811015610f5a5780358352918301918301610f43565b509695505050505050565b5f8060408385031215610f76575f80fd5b823567ffffffffffffffff80821115610f8d575f80fd5b818501915085601f830112610fa0575f80fd5b81356020610fb0610f1883610ebb565b82815260059290921b84018101918181019089841115610fce575f80fd5b948201945b83861015610ff357610fe486610ede565b82529482019490820190610fd3565b96505086013592505080821115611008575f80fd5b5061101585828601610ef9565b9150509250929050565b5f8060408385031215611030575f80fd5b61103983610ede565b946020939093013593505050565b5f805f60608486031215611059575f80fd5b61106284610ede565b925061107060208501610ede565b9150604084013590509250925092565b5f60208284031215611090575f80fd5b61109982610ede565b9392505050565b5f80604083850312156110b1575f80fd5b6110ba83610ede565b91506110c860208401610ede565b90509250929050565b600181811c908216806110e557607f821691505b60208210810361110357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b0384811682526060602080840182905285519184018290525f92868201929091906080860190855b8181101561116a57855185168352948301949183019160010161114c565b505085810360408701528651808252908201935091508086015f5b838110156111a157815185529382019390820190600101611185565b509298975050505050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105c5576105c56111af565b80820281158282048414176105c5576105c56111af565b5f8261120757634e487b7160e01b5f52601260045260245ffd5b50049056fea264697066735822122020a56f4d3690593639c04bb698367933597b2c2ae6716faacd1e376ac02737f264736f6c6343000818003300000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000002819a0000000000000000000000000000000000000000000000000000469206254fc2400000000000000000000000000000000000000000000000000000001b1cb6f7500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ce9be99e8a18ce9be98e9be98000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044441444100000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106101c5575f3560e01c806370a08231116100fe578063a457c2d71161009e578063dd62ed3e1161006e578063dd62ed3e146103eb578063e30c3978146103fe578063f2fde38b1461040f578063fca3b5aa14610422575f80fd5b8063a457c2d7146103a3578063a9059cbb146103b6578063be5ddb99146103c9578063cee8d013146103dc575f80fd5b8063883c3a63116100d9578063883c3a631461036e5780638da5cb5b1461038157806395d89b411461039257806395dba44c1461039a575f80fd5b806370a0823114610336578063715018a61461035e57806379ba509714610366575f80fd5b806323b872dd11610169578063395093511161014457806339509351146102cc57806341e65e0b146102df57806358794456146103065780635915b17e1461030f575f80fd5b806323b872dd14610296578063313ce567146102a957806336c545ca146102b8575f80fd5b8063085624ed116101a4578063085624ed14610243578063095ea7b3146102585780630f6798a51461027b57806318160ddd1461028e575f80fd5b806216d010146101c957806306fdde03146102035780630754617214610218575b5f80fd5b6101f07f000000000000000000000000000000000000000000000000000469206254fc2481565b6040519081526020015b60405180910390f35b61020b610435565b6040516101fa9190610e2a565b60075461022b906001600160a01b031681565b6040516001600160a01b0390911681526020016101fa565b610256610251366004610f65565b6104c5565b005b61026b61026636600461101f565b6105b2565b60405190151581526020016101fa565b61025661028936600461101f565b6105cb565b6002546101f0565b61026b6102a4366004611047565b61063d565b604051601281526020016101fa565b60065461026b90600160a01b900460ff1681565b61026b6102da36600461101f565b610660565b6101f07f00000000000000000000000000000000000000000000000000000000002819a081565b6101f060085481565b6101f07f00000000000000000000000000000000000000000000000000000002178fa0c481565b6101f0610344366004611080565b6001600160a01b03165f9081526020819052604090205490565b610256610681565b610256610694565b6101f06b033b2e3c9fd0803ce800000081565b6005546001600160a01b031661022b565b61020b61070e565b6101f060095481565b61026b6103b136600461101f565b61071d565b61026b6103c436600461101f565b610797565b6102566103d736600461101f565b6107a4565b6101f0670de0b6b3a764000081565b6101f06103f93660046110a0565b6108f6565b6006546001600160a01b031661022b565b61025661041d366004611080565b610920565b610256610430366004611080565b610991565b606060038054610444906110d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610470906110d1565b80156104bb5780601f10610492576101008083540402835291602001916104bb565b820191905f5260205f20905b81548152906001019060200180831161049e57829003601f168201915b5050505050905090565b6104cd6109bb565b600654600160a01b900460ff16156104e3575f80fd5b80518251146104f0575f80fd5b6006805460ff60a01b1916600160a01b1790555f5b82518110156105525761054a83828151811061052357610523611109565b602002602001015183838151811061053d5761053d611109565b60200260200101516105d3565b600101610505565b506b033b2e3c9fd0803ce800000061056960025490565b1115610573575f80fd5b7f0436dcb8b7b3be78d785be7ea8f04f241ce5d275057aea7f7fd4b6e4dfda3aa43383836040516105a69392919061111d565b60405180910390a15050565b5f336105bf818585610a15565b60019150505b92915050565b6105d36109bb565b6001600160a01b03821661062e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6106395f8383610b39565b5050565b5f3361064a858285610c77565b610655858585610cef565b506001949350505050565b5f336105bf81858561067283836108f6565b61067c91906111c3565b610a15565b6106896109bb565b6106925f610dc5565b565b60065433906001600160a01b031681146107025760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610625565b61070b81610dc5565b50565b606060048054610444906110d1565b5f338161072a82866108f6565b90508381101561078a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610625565b6106558286868403610a15565b5f336105bf818585610cef565b6001600160a01b0382166107b6575f80fd5b805f036107c1575f80fd5b6007546001600160a01b031633146107d7575f80fd5b7f00000000000000000000000000000000000000000000000000000002178fa0c4421015610803575f80fd5b600854421115610896576108377f00000000000000000000000000000000000000000000000000000000002819a0426111c3565b6008555f61084460025490565b90505f670de0b6b3a764000061087a7f000000000000000000000000000000000000000000000000000469206254fc24846111d6565b61088491906111ed565b905061089081836111c3565b60095550505b6108a082826105d3565b60095460025411156108b0575f80fd5b604080513381526001600160a01b03841660208201529081018290527f0188e46dffface414ae6c071b6f739093e36d85d0f016e3d159dffe68c1b08cf906060016105a6565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6109286109bb565b600680546001600160a01b0383166001600160a01b031990911681179091556109596005546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6109996109bb565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146106925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610625565b6001600160a01b038316610a775760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610625565b6001600160a01b038216610ad85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610625565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610b63578060025f828254610b5891906111c3565b90915550610bf89050565b6001600160a01b0383165f9081526020819052604090205481811015610bda5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610625565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610c1457600280548290039055610c32565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b2c91815260200190565b5f610c8284846108f6565b90505f198114610ce95781811015610cdc5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610625565b610ce98484848403610a15565b50505050565b6001600160a01b038316610d535760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610625565b6001600160a01b038216610db55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610625565b610dc0838383610b39565b505050565b600680546001600160a01b031916905561070b81600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f602080835283518060208501525f5b81811015610e5657858101830151858201604001528201610e3a565b505f604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610eb357610eb3610e76565b604052919050565b5f67ffffffffffffffff821115610ed457610ed4610e76565b5060051b60200190565b80356001600160a01b0381168114610ef4575f80fd5b919050565b5f82601f830112610f08575f80fd5b81356020610f1d610f1883610ebb565b610e8a565b8083825260208201915060208460051b870101935086841115610f3e575f80fd5b602086015b84811015610f5a5780358352918301918301610f43565b509695505050505050565b5f8060408385031215610f76575f80fd5b823567ffffffffffffffff80821115610f8d575f80fd5b818501915085601f830112610fa0575f80fd5b81356020610fb0610f1883610ebb565b82815260059290921b84018101918181019089841115610fce575f80fd5b948201945b83861015610ff357610fe486610ede565b82529482019490820190610fd3565b96505086013592505080821115611008575f80fd5b5061101585828601610ef9565b9150509250929050565b5f8060408385031215611030575f80fd5b61103983610ede565b946020939093013593505050565b5f805f60608486031215611059575f80fd5b61106284610ede565b925061107060208501610ede565b9150604084013590509250925092565b5f60208284031215611090575f80fd5b61109982610ede565b9392505050565b5f80604083850312156110b1575f80fd5b6110ba83610ede565b91506110c860208401610ede565b90509250929050565b600181811c908216806110e557607f821691505b60208210810361110357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b0384811682526060602080840182905285519184018290525f92868201929091906080860190855b8181101561116a57855185168352948301949183019160010161114c565b505085810360408701528651808252908201935091508086015f5b838110156111a157815185529382019390820190600101611185565b509298975050505050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105c5576105c56111af565b80820281158282048414176105c5576105c56111af565b5f8261120757634e487b7160e01b5f52601260045260245ffd5b50049056fea264697066735822122020a56f4d3690593639c04bb698367933597b2c2ae6716faacd1e376ac02737f264736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000002819a0000000000000000000000000000000000000000000000000000469206254fc2400000000000000000000000000000000000000000000000000000001b1cb6f7500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ce9be99e8a18ce9be98e9be98000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044441444100000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [4] : 00000000000000000000000000000000000000000000000000000000002819a0
Arg [5] : 000000000000000000000000000000000000000000000000000469206254fc24
Arg [6] : 00000000000000000000000000000000000000000000000000000001b1cb6f75
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [9] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [10] : e9be99e8a18ce9be98e9be980000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [12] : 4441444100000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
20561:8442:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21311:40;;;;;;;;160:25:1;;;148:2;133:18;21311:40:0;;;;;;;;10364:100;;;:::i;:::-;;;;;;;:::i;21107:21::-;;;;;-1:-1:-1;;;;;21107:21:0;;;;;;-1:-1:-1;;;;;913:32:1;;;895:51;;883:2;868:18;21107:21:0;749:203:1;24583:768:0;;;;;;:::i;:::-;;:::i;:::-;;12724:201;;;;;;:::i;:::-;;:::i;:::-;;;3983:14:1;;3976:22;3958:41;;3946:2;3931:18;12724:201:0;3818:187:1;25359:195:0;;;;;;:::i;:::-;;:::i;11493:108::-;11581:12;;11493:108;;13505:261;;;;;;:::i;:::-;;:::i;11335:93::-;;;11418:2;4485:36:1;;4473:2;4458:18;11335:93:0;4343:184:1;21018:27:0;;;;;-1:-1:-1;;;21018:27:0;;;;;;14175:238;;;;;;:::i;:::-;;:::i;21261:43::-;;;;;21407:31;;;;;;21210:44;;;;;11664:127;;;;;;:::i;:::-;-1:-1:-1;;;;;11765:18:0;11738:7;11765:18;;;;;;;;;;;;11664:127;2553:103;;;:::i;4991:216::-;;;:::i;20844:69::-;;20889:24;20844:69;;1912:87;1985:6;;-1:-1:-1;;;;;1985:6:0;1912:87;;10583:104;;;:::i;21445:37::-;;;;;;14916:436;;;;;;:::i;:::-;;:::i;11997:193::-;;;;;;:::i;:::-;;:::i;27864:1136::-;;;;;;:::i;:::-;;:::i;20920:40::-;;20954:6;20920:40;;12253:151;;;;;;:::i;:::-;;:::i;4079:101::-;4159:13;;-1:-1:-1;;;;;4159:13:0;4079:101;;4379:181;;;;;;:::i;:::-;;:::i;25661:90::-;;;;;;:::i;:::-;;:::i;10364:100::-;10418:13;10451:5;10444:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10364:100;:::o;24583:768::-;1798:13;:11;:13::i;:::-;24776:15:::1;::::0;-1:-1:-1;;;24776:15:0;::::1;;;:24;24768:33;;;::::0;::::1;;24871:10;:17;24850:10;:17;:38;24842:47;;;::::0;::::1;;24941:15;:22:::0;;-1:-1:-1;;;;24941:22:0::1;-1:-1:-1::0;;;24941:22:0::1;::::0;;;25001:110:::1;25025:10;:17;25021:1;:21;25001:110;;;25064:35;25070:10;25081:1;25070:13;;;;;;;;:::i;:::-;;;;;;;25085:10;25096:1;25085:13;;;;;;;;:::i;:::-;;;;;;;25064:5;:35::i;:::-;25044:3;;25001:110;;;;20889:24;25191:13;11581:12:::0;;;11493:108;25191:13:::1;:35;;25183:44;;;::::0;::::1;;25245:98;25272:10;25297;25322;25245:98;;;;;;;;:::i;:::-;;;;;;;;24583:768:::0;;:::o;12724:201::-;12807:4;681:10;12863:32;681:10;12879:7;12888:6;12863:8;:32::i;:::-;12913:4;12906:11;;;12724:201;;;;;:::o;25359:195::-;1798:13;:11;:13::i;:::-;-1:-1:-1;;;;;25442:21:0;::::1;25434:65;;;::::0;-1:-1:-1;;;25434:65:0;;6990:2:1;25434:65:0::1;::::0;::::1;6972:21:1::0;7029:2;7009:18;;;7002:30;7068:33;7048:18;;;7041:61;7119:18;;25434:65:0::1;;;;;;;;;25510:36;25526:1;25530:7;25539:6;25510:7;:36::i;:::-;25359:195:::0;;:::o;13505:261::-;13602:4;681:10;13660:38;13676:4;681:10;13691:6;13660:15;:38::i;:::-;13709:27;13719:4;13725:2;13729:6;13709:9;:27::i;:::-;-1:-1:-1;13754:4:0;;13505:261;-1:-1:-1;;;;13505:261:0:o;14175:238::-;14263:4;681:10;14319:64;681:10;14335:7;14372:10;14344:25;681:10;14335:7;14344:9;:25::i;:::-;:38;;;;:::i;:::-;14319:8;:64::i;2553:103::-;1798:13;:11;:13::i;:::-;2618:30:::1;2645:1;2618:18;:30::i;:::-;2553:103::o:0;4991:216::-;4159:13;;681:10;;-1:-1:-1;;;;;4159:13:0;5092:24;;5084:78;;;;-1:-1:-1;;;5084:78:0;;7612:2:1;5084:78:0;;;7594:21:1;7651:2;7631:18;;;7624:30;7690:34;7670:18;;;7663:62;-1:-1:-1;;;7741:18:1;;;7734:39;7790:19;;5084:78:0;7410:405:1;5084:78:0;5173:26;5192:6;5173:18;:26::i;:::-;5033:174;4991:216::o;10583:104::-;10639:13;10672:7;10665:14;;;;;:::i;14916:436::-;15009:4;681:10;15009:4;15092:25;681:10;15109:7;15092:9;:25::i;:::-;15065:52;;15156:15;15136:16;:35;;15128:85;;;;-1:-1:-1;;;15128:85:0;;8022:2:1;15128:85:0;;;8004:21:1;8061:2;8041:18;;;8034:30;8100:34;8080:18;;;8073:62;-1:-1:-1;;;8151:18:1;;;8144:35;8196:19;;15128:85:0;7820:401:1;15128:85:0;15249:60;15258:5;15265:7;15293:15;15274:16;:34;15249:8;:60::i;11997:193::-;12076:4;681:10;12132:28;681:10;12149:2;12153:6;12132:9;:28::i;27864:1136::-;-1:-1:-1;;;;;27970:16:0;;27962:25;;;;;;28006:6;28016:1;28006:11;27998:20;;;;;;28080:6;;-1:-1:-1;;;;;28080:6:0;28066:10;:20;28058:29;;;;;;28203:19;28184:15;:38;;28176:47;;;;;;28325:16;;28307:15;:34;28303:416;;;28421:36;28439:18;28421:15;:36;:::i;:::-;28402:16;:55;28529:21;28553:13;11581:12;;;11493:108;28553:13;28529:37;-1:-1:-1;28581:16:0;20954:6;28601:31;28617:15;28529:37;28601:31;:::i;:::-;28600:43;;;;:::i;:::-;28581:62;-1:-1:-1;28683:24:0;28581:62;28683:13;:24;:::i;:::-;28658:22;:49;-1:-1:-1;;28303:416:0;28765:17;28771:2;28775:6;28765:5;:17::i;:::-;28883:22;;11581:12;;28866:39;;28858:48;;;;;;28947:45;;;28969:10;8861:34:1;;-1:-1:-1;;;;;8931:15:1;;8926:2;8911:18;;8904:43;8963:18;;;8956:34;;;28947:45:0;;8811:2:1;8796:18;28947:45:0;8621:375:1;12253:151:0;-1:-1:-1;;;;;12369:18:0;;;12342:7;12369:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12253:151::o;4379:181::-;1798:13;:11;:13::i;:::-;4469::::1;:24:::0;;-1:-1:-1;;;;;4469:24:0;::::1;-1:-1:-1::0;;;;;;4469:24:0;;::::1;::::0;::::1;::::0;;;4534:7:::1;1985:6:::0;;-1:-1:-1;;;;;1985:6:0;;1912:87;4534:7:::1;-1:-1:-1::0;;;;;4509:43:0::1;;;;;;;;;;;4379:181:::0;:::o;25661:90::-;1798:13;:11;:13::i;:::-;25727:6:::1;:16:::0;;-1:-1:-1;;;;;;25727:16:0::1;-1:-1:-1::0;;;;;25727:16:0;;;::::1;::::0;;;::::1;::::0;;25661:90::o;2077:132::-;1985:6;;-1:-1:-1;;;;;1985:6:0;681:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;9203:2:1;2133:68:0;;;9185:21:1;;;9222:18;;;9215:30;9281:34;9261:18;;;9254:62;9333:18;;2133:68:0;9001:356:1;18785:346:0;-1:-1:-1;;;;;18887:19:0;;18879:68;;;;-1:-1:-1;;;18879:68:0;;9564:2:1;18879:68:0;;;9546:21:1;9603:2;9583:18;;;9576:30;9642:34;9622:18;;;9615:62;-1:-1:-1;;;9693:18:1;;;9686:34;9737:19;;18879:68:0;9362:400:1;18879:68:0;-1:-1:-1;;;;;18966:21:0;;18958:68;;;;-1:-1:-1;;;18958:68:0;;9969:2:1;18958:68:0;;;9951:21:1;10008:2;9988:18;;;9981:30;10047:34;10027:18;;;10020:62;-1:-1:-1;;;10098:18:1;;;10091:32;10140:19;;18958:68:0;9767:398:1;18958:68:0;-1:-1:-1;;;;;19039:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19091:32;;160:25:1;;;19091:32:0;;133:18:1;19091:32:0;;;;;;;;18785:346;;;:::o;16305:998::-;-1:-1:-1;;;;;16396:18:0;;16392:408;;16447:6;16431:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;16392:408:0;;-1:-1:-1;16392:408:0;;-1:-1:-1;;;;;16508:15:0;;16486:19;16508:15;;;;;;;;;;;16546:21;;;;16538:72;;;;-1:-1:-1;;;16538:72:0;;10372:2:1;16538:72:0;;;10354:21:1;10411:2;10391:18;;;10384:30;10450:34;10430:18;;;10423:62;-1:-1:-1;;;10501:18:1;;;10494:36;10547:19;;16538:72:0;10170:402:1;16538:72:0;-1:-1:-1;;;;;16735:15:0;;:9;:15;;;;;;;;;;16753:20;;;;16735:38;;16392:408;-1:-1:-1;;;;;16816:16:0;;16812:440;;16984:12;:22;;;;;;;16812:440;;;-1:-1:-1;;;;;17202:13:0;;:9;:13;;;;;;;;;;:23;;;;;;16812:440;17284:2;-1:-1:-1;;;;;17269:26:0;17278:4;-1:-1:-1;;;;;17269:26:0;;17288:6;17269:26;;;;160:25:1;;148:2;133:18;;14:177;19422:419:0;19523:24;19550:25;19560:5;19567:7;19550:9;:25::i;:::-;19523:52;;-1:-1:-1;;19590:16:0;:37;19586:248;;19672:6;19652:16;:26;;19644:68;;;;-1:-1:-1;;;19644:68:0;;10779:2:1;19644:68:0;;;10761:21:1;10818:2;10798:18;;;10791:30;10857:31;10837:18;;;10830:59;10906:18;;19644:68:0;10577:353:1;19644:68:0;19756:51;19765:5;19772:7;19800:6;19781:16;:25;19756:8;:51::i;:::-;19512:329;19422:419;;;:::o;15729:268::-;-1:-1:-1;;;;;15818:18:0;;15810:68;;;;-1:-1:-1;;;15810:68:0;;11137:2:1;15810:68:0;;;11119:21:1;11176:2;11156:18;;;11149:30;11215:34;11195:18;;;11188:62;-1:-1:-1;;;11266:18:1;;;11259:35;11311:19;;15810:68:0;10935:401:1;15810:68:0;-1:-1:-1;;;;;15897:16:0;;15889:64;;;;-1:-1:-1;;;15889:64:0;;11543:2:1;15889:64:0;;;11525:21:1;11582:2;11562:18;;;11555:30;11621:34;11601:18;;;11594:62;-1:-1:-1;;;11672:18:1;;;11665:33;11715:19;;15889:64:0;11341:399:1;15889:64:0;15964:25;15972:4;15978:2;15982:6;15964:7;:25::i;:::-;15729:268;;;:::o;4750:156::-;4840:13;4833:20;;-1:-1:-1;;;;;;4833:20:0;;;4864:34;4889:8;3265:6;;;-1:-1:-1;;;;;3282:17:0;;;-1:-1:-1;;;;;;3282:17:0;;;;;;;3315:40;;3265:6;;;3282:17;3265:6;;3315:40;;3246:16;;3315:40;3235:128;3172:191;:::o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;957:127::-;1018:10;1013:3;1009:20;1006:1;999:31;1049:4;1046:1;1039:15;1073:4;1070:1;1063:15;1089:275;1160:2;1154:9;1225:2;1206:13;;-1:-1:-1;;1202:27:1;1190:40;;1260:18;1245:34;;1281:22;;;1242:62;1239:88;;;1307:18;;:::i;:::-;1343:2;1336:22;1089:275;;-1:-1:-1;1089:275:1:o;1369:183::-;1429:4;1462:18;1454:6;1451:30;1448:56;;;1484:18;;:::i;:::-;-1:-1:-1;1529:1:1;1525:14;1541:4;1521:25;;1369:183::o;1557:173::-;1625:20;;-1:-1:-1;;;;;1674:31:1;;1664:42;;1654:70;;1720:1;1717;1710:12;1654:70;1557:173;;;:::o;1735:668::-;1789:5;1842:3;1835:4;1827:6;1823:17;1819:27;1809:55;;1860:1;1857;1850:12;1809:55;1896:6;1883:20;1922:4;1946:60;1962:43;2002:2;1962:43;:::i;:::-;1946:60;:::i;:::-;2028:3;2052:2;2047:3;2040:15;2080:4;2075:3;2071:14;2064:21;;2137:4;2131:2;2128:1;2124:10;2116:6;2112:23;2108:34;2094:48;;2165:3;2157:6;2154:15;2151:35;;;2182:1;2179;2172:12;2151:35;2218:4;2210:6;2206:17;2232:142;2248:6;2243:3;2240:15;2232:142;;;2314:17;;2302:30;;2352:12;;;;2265;;2232:142;;;-1:-1:-1;2392:5:1;1735:668;-1:-1:-1;;;;;;1735:668:1:o;2408:1146::-;2526:6;2534;2587:2;2575:9;2566:7;2562:23;2558:32;2555:52;;;2603:1;2600;2593:12;2555:52;2643:9;2630:23;2672:18;2713:2;2705:6;2702:14;2699:34;;;2729:1;2726;2719:12;2699:34;2767:6;2756:9;2752:22;2742:32;;2812:7;2805:4;2801:2;2797:13;2793:27;2783:55;;2834:1;2831;2824:12;2783:55;2870:2;2857:16;2892:4;2916:60;2932:43;2972:2;2932:43;:::i;2916:60::-;3010:15;;;3092:1;3088:10;;;;3080:19;;3076:28;;;3041:12;;;;3116:19;;;3113:39;;;3148:1;3145;3138:12;3113:39;3172:11;;;;3192:148;3208:6;3203:3;3200:15;3192:148;;;3274:23;3293:3;3274:23;:::i;:::-;3262:36;;3225:12;;;;3318;;;;3192:148;;;3359:5;-1:-1:-1;;3402:18:1;;3389:32;;-1:-1:-1;;3433:16:1;;;3430:36;;;3462:1;3459;3452:12;3430:36;;3485:63;3540:7;3529:8;3518:9;3514:24;3485:63;:::i;:::-;3475:73;;;2408:1146;;;;;:::o;3559:254::-;3627:6;3635;3688:2;3676:9;3667:7;3663:23;3659:32;3656:52;;;3704:1;3701;3694:12;3656:52;3727:29;3746:9;3727:29;:::i;:::-;3717:39;3803:2;3788:18;;;;3775:32;;-1:-1:-1;;;3559:254:1:o;4010:328::-;4087:6;4095;4103;4156:2;4144:9;4135:7;4131:23;4127:32;4124:52;;;4172:1;4169;4162:12;4124:52;4195:29;4214:9;4195:29;:::i;:::-;4185:39;;4243:38;4277:2;4266:9;4262:18;4243:38;:::i;:::-;4233:48;;4328:2;4317:9;4313:18;4300:32;4290:42;;4010:328;;;;;:::o;4532:186::-;4591:6;4644:2;4632:9;4623:7;4619:23;4615:32;4612:52;;;4660:1;4657;4650:12;4612:52;4683:29;4702:9;4683:29;:::i;:::-;4673:39;4532:186;-1:-1:-1;;;4532:186:1:o;4723:260::-;4791:6;4799;4852:2;4840:9;4831:7;4827:23;4823:32;4820:52;;;4868:1;4865;4858:12;4820:52;4891:29;4910:9;4891:29;:::i;:::-;4881:39;;4939:38;4973:2;4962:9;4958:18;4939:38;:::i;:::-;4929:48;;4723:260;;;;;:::o;4988:380::-;5067:1;5063:12;;;;5110;;;5131:61;;5185:4;5177:6;5173:17;5163:27;;5131:61;5238:2;5230:6;5227:14;5207:18;5204:38;5201:161;;5284:10;5279:3;5275:20;5272:1;5265:31;5319:4;5316:1;5309:15;5347:4;5344:1;5337:15;5201:161;;4988:380;;;:::o;5373:127::-;5434:10;5429:3;5425:20;5422:1;5415:31;5465:4;5462:1;5455:15;5489:4;5486:1;5479:15;5505:1278;-1:-1:-1;;;;;5869:15:1;;;5851:34;;5801:2;5904;5922:18;;;5915:30;;;5994:13;;5786:18;;;6016:22;;;5753:4;;6096:15;;;;5823:19;;5904:2;6069:3;6054:19;;;5753:4;6139:178;6153:6;6150:1;6147:13;6139:178;;;6218:13;;6214:22;;6202:35;;6292:15;;;;6257:12;;;;6175:1;6168:9;6139:178;;;-1:-1:-1;;6353:19:1;;;6348:2;6333:18;;6326:47;6423:13;;6445:21;;;6484:12;;;;-1:-1:-1;6423:13:1;-1:-1:-1;6521:15:1;;;6556:1;6566:189;6582:8;6577:3;6574:17;6566:189;;;6651:15;;6637:30;;6689:14;;;;6728:17;;;;6610:1;6601:11;6566:189;;;-1:-1:-1;6772:5:1;;5505:1278;-1:-1:-1;;;;;;;;5505:1278:1:o;7148:127::-;7209:10;7204:3;7200:20;7197:1;7190:31;7240:4;7237:1;7230:15;7264:4;7261:1;7254:15;7280:125;7345:9;;;7366:10;;;7363:36;;;7379:18;;:::i;8226:168::-;8299:9;;;8330;;8347:15;;;8341:22;;8327:37;8317:71;;8368:18;;:::i;8399:217::-;8439:1;8465;8455:132;;8509:10;8504:3;8500:20;8497:1;8490:31;8544:4;8541:1;8534:15;8572:4;8569:1;8562:15;8455:132;-1:-1:-1;8601:9:1;;8399:217::o
Swarm Source
ipfs://20a56f4d3690593639c04bb698367933597b2c2ae6716faacd1e376ac02737f2
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.