Token BlueBerryWallet
Overview ERC-20
Price
$0.00 @ 0.000000 MATIC
Fully Diluted Market Cap
Total Supply:
800,000,000 BBW
Holders:
2 addresses
Transfers:
-
Contract:
Decimals:
18
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BlueBerryWallet
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at PolygonScan.com on 2023-02-11 */ // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.5/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @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; } } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.5/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @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() { _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); } } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.5/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.5/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @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); } // File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.5/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @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}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * 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}. * * 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: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, _allowances[owner][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = _allowances[owner][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Spend `amount` form the allowance of `owner` toward `spender`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // File: contracts/erc20.sol pragma solidity ^0.8.0; contract BlueBerryWallet is ERC20, Ownable { uint256 private constant _DECIMALS = 18; uint256 private constant _MAX_SUPPLY = 1000000000 * 10**_DECIMALS; uint256 private _presaleSupply; uint256 private _presaleCost; uint256 private _icoPrice; uint256 private _presaleStartTime; uint256 private _presaleEndTime; uint256 private _icoStartTime; uint256 private _icoEndTime; uint256 private _icoTokensSold; mapping(address => bool) private _lockedPresaleBalances; mapping(address => uint256) private _stakingInterests; constructor(address initialMintAddress) ERC20("BlueBerryWallet", "BBW") { _presaleSupply = 200000000 * 10**_DECIMALS; _mint(initialMintAddress, _MAX_SUPPLY - _presaleSupply); _approve(address(this), owner(), _MAX_SUPPLY - _presaleSupply); _transfer(initialMintAddress, address(this), _presaleSupply); } function startPresale(uint256 cost, uint256 startTime, uint256 endTime) public onlyOwner { require(_presaleSupply > 0, "No presale supply"); _presaleCost = cost; _presaleStartTime = startTime; _presaleEndTime = endTime; _icoPrice = cost; _icoStartTime = startTime; _icoEndTime = endTime; } function endPresale() public onlyOwner { _transfer(address(this), owner(), balanceOf(address(this))); _presaleCost = 0; _presaleStartTime = 0; _presaleEndTime = 0; _icoPrice = 0; _icoStartTime = 0; _icoEndTime = 0; } function setPresaleCost(uint256 cost) public onlyOwner { _presaleCost = cost; _icoPrice = cost; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { require(_lockedPresaleBalances[msg.sender] == false, "Presale tokens are locked"); require(_stakingInterests[msg.sender] == 0, "Staking tokens are locked"); require(block.timestamp >= _presaleEndTime || _lockedPresaleBalances[recipient] == false, "Recipient tokens are locked"); require(_icoTokensSold + amount <= presaleSupply(), "ICO tokens sold out"); _icoTokensSold += amount; return super.transfer(recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { require(_lockedPresaleBalances[sender] == false, "Presale tokens are locked"); require(_stakingInterests[sender] == 0, "Staking tokens are locked"); require(block.timestamp >= _presaleEndTime || _lockedPresaleBalances[recipient] == false, "Recipient tokens are locked"); require(_icoTokensSold + amount <= presaleSupply(), "ICO tokens sold out"); uint256 currentAllowance = allowance(sender, _msgSender()); require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } _icoTokensSold += amount; return super.transferFrom(sender, recipient, amount); } function getPrice() public view returns (uint256) { if (block.timestamp >= _icoStartTime && block.timestamp <= _icoEndTime) { return _icoPrice; } else { return _presaleCost; } } function stake(uint256 amount, uint256 interestRate) public { require(balanceOf(msg.sender) >= amount, "Insufficient balance"); require(_lockedPresaleBalances[msg.sender] == false, "Presale tokens are locked"); require(_stakingInterests[msg.sender] == 0, "Already staking"); _burn(msg.sender, amount); _stakingInterests[msg.sender] = amount * interestRate; } function unstake() public { require(_stakingInterests[msg.sender] > 0, "Not staking"); uint256 interest = _stakingInterests[msg.sender]; _stakingInterests[msg.sender] = 0; _mint(msg.sender, interest); } function presaleSupply() public view returns (uint256) { return _presaleSupply; } function presaleCost() public view returns (uint256) { return _presaleCost; } function presaleStartTime() public view returns (uint256) { return _presaleStartTime; } function presaleEndTime() public view returns (uint256) { return _presaleEndTime; } function lockPresaleBalance(address holder) public onlyOwner { _lockedPresaleBalances[holder] = true; } function unlockPresaleBalance(address holder) public onlyOwner { _lockedPresaleBalances[holder] = false; } function stakingInterest(address holder) public view returns (uint256) { require(block.timestamp >= _presaleEndTime, "Staking not allowed during ICO"); return _stakingInterests[holder]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"initialMintAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"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":"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":"endPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"lockPresaleBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"cost","type":"uint256"}],"name":"setPresaleCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"interestRate","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"stakingInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"cost","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"startPresale","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"unlockPresaleBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162003fff38038062003fff83398181016040528101906200003791906200097f565b6040518060400160405280600f81526020017f426c7565426572727957616c6c657400000000000000000000000000000000008152506040518060400160405280600381526020017f42425700000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb929190620008b8565b508060049080519060200190620000d4929190620008b8565b505050620000f7620000eb620001cc60201b60201c565b620001d460201b60201c565b6012600a62000107919062000db8565b630bebc20062000118919062000ef5565b6006819055506200015f816006546012600a62000136919062000db8565b633b9aca0062000147919062000ef5565b62000153919062000f56565b6200029a60201b60201c565b620001b030620001746200041360201b60201c565b6006546012600a62000187919062000db8565b633b9aca0062000198919062000ef5565b620001a4919062000f56565b6200043d60201b60201c565b620001c581306006546200061060201b60201c565b506200108a565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200030d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003049062000cb0565b60405180910390fd5b6200032160008383620008ae60201b60201c565b806002600082825462000335919062000d00565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200038c919062000d00565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003f3919062000cd2565b60405180910390a36200040f60008383620008b360201b60201c565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620004b0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004a79062000c8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000523576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200051a9062000c28565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000603919062000cd2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000683576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200067a9062000c6c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620006f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006ed9062000c06565b60405180910390fd5b62000709838383620008ae60201b60201c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101562000792576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007899062000c4a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000827919062000d00565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516200088d919062000cd2565b60405180910390a3620008a8848484620008b360201b60201c565b50505050565b505050565b505050565b828054620008c69062000fcf565b90600052602060002090601f016020900481019282620008ea576000855562000936565b82601f106200090557805160ff191683800117855562000936565b8280016001018555821562000936579182015b828111156200093557825182559160200191906001019062000918565b5b50905062000945919062000949565b5090565b5b80821115620009645760008160009055506001016200094a565b5090565b600081519050620009798162001070565b92915050565b6000602082840312156200099257600080fd5b6000620009a28482850162000968565b91505092915050565b6000620009ba60238362000cef565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000a2260228362000cef565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000a8a60268362000cef565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000af260258362000cef565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000b5a60248362000cef565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000bc2601f8362000cef565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b62000c008162000fc5565b82525050565b6000602082019050818103600083015262000c2181620009ab565b9050919050565b6000602082019050818103600083015262000c438162000a13565b9050919050565b6000602082019050818103600083015262000c658162000a7b565b9050919050565b6000602082019050818103600083015262000c878162000ae3565b9050919050565b6000602082019050818103600083015262000ca98162000b4b565b9050919050565b6000602082019050818103600083015262000ccb8162000bb3565b9050919050565b600060208201905062000ce9600083018462000bf5565b92915050565b600082825260208201905092915050565b600062000d0d8262000fc5565b915062000d1a8362000fc5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d525762000d5162001005565b5b828201905092915050565b6000808291508390505b600185111562000daf5780860481111562000d875762000d8662001005565b5b600185161562000d975780820291505b808102905062000da78562001063565b945062000d67565b94509492505050565b600062000dc58262000fc5565b915062000dd28362000fc5565b925062000e017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e09565b905092915050565b60008262000e1b576001905062000eee565b8162000e2b576000905062000eee565b816001811462000e44576002811462000e4f5762000e85565b600191505062000eee565b60ff84111562000e645762000e6362001005565b5b8360020a91508482111562000e7e5762000e7d62001005565b5b5062000eee565b5060208310610133831016604e8410600b841016171562000ebf5782820a90508381111562000eb95762000eb862001005565b5b62000eee565b62000ece848484600162000d5d565b9250905081840481111562000ee85762000ee762001005565b5b81810290505b9392505050565b600062000f028262000fc5565b915062000f0f8362000fc5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f4b5762000f4a62001005565b5b828202905092915050565b600062000f638262000fc5565b915062000f708362000fc5565b92508282101562000f865762000f8562001005565b5b828203905092915050565b600062000f9e8262000fa5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000fe857607f821691505b6020821081141562000fff5762000ffe62001034565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b6200107b8162000f91565b81146200108757600080fd5b50565b612f65806200109a6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80637b0472f0116100f9578063a457c2d711610097578063b3a196e911610071578063b3a196e91461049a578063ccbec416146104b8578063dd62ed3e146104d4578063f2fde38b14610504576101a9565b8063a457c2d71461041c578063a82524b21461044c578063a9059cbb1461046a576101a9565b80638fdcf942116100d35780638fdcf942146103ba57806395d89b41146103d657806398d5fdca146103f4578063a43be57b14610412576101a9565b80637b0472f014610350578063844cef191461036c5780638da5cb5b1461039c576101a9565b80632def6620116101665780635f44a0ca116101405780635f44a0ca146102de57806367cb4494146102fa57806370a0823114610316578063715018a614610346576101a9565b80632def662014610286578063313ce5671461029057806339509351146102ae576101a9565b806306fdde03146101ae578063095ea7b3146101cc57806318160ddd146101fc57806323b872dd1461021a578063249b7c191461024a5780632a23d07d14610268575b600080fd5b6101b6610520565b6040516101c391906129c0565b60405180910390f35b6101e660048036038101906101e19190612129565b6105b2565b6040516101f391906129a5565b60405180910390f35b6102046105d5565b6040516102119190612ca2565b60405180910390f35b610234600480360381019061022f91906120da565b6105df565b60405161024191906129a5565b60405180910390f35b610252610886565b60405161025f9190612ca2565b60405180910390f35b610270610890565b60405161027d9190612ca2565b60405180910390f35b61028e61089a565b005b6102986109b2565b6040516102a59190612cbd565b60405180910390f35b6102c860048036038101906102c39190612129565b6109bb565b6040516102d591906129a5565b60405180910390f35b6102f860048036038101906102f39190612075565b610a65565b005b610314600480360381019061030f9190612075565b610b3c565b005b610330600480360381019061032b9190612075565b610c13565b60405161033d9190612ca2565b60405180910390f35b61034e610c5b565b005b61036a6004803603810190610365919061218e565b610ce3565b005b61038660048036038101906103819190612075565b610ea0565b6040516103939190612ca2565b60405180910390f35b6103a4610f2e565b6040516103b1919061298a565b60405180910390f35b6103d460048036038101906103cf9190612165565b610f58565b005b6103de610fe5565b6040516103eb91906129c0565b60405180910390f35b6103fc611077565b6040516104099190612ca2565b60405180910390f35b61041a6110a5565b005b61043660048036038101906104319190612129565b61116d565b60405161044391906129a5565b60405180910390f35b610454611257565b6040516104619190612ca2565b60405180910390f35b610484600480360381019061047f9190612129565b611261565b60405161049191906129a5565b60405180910390f35b6104a2611499565b6040516104af9190612ca2565b60405180910390f35b6104d260048036038101906104cd91906121ca565b6114a3565b005b6104ee60048036038101906104e9919061209e565b611593565b6040516104fb9190612ca2565b60405180910390f35b61051e60048036038101906105199190612075565b61161a565b005b60606003805461052f90612e60565b80601f016020809104026020016040519081016040528092919081815260200182805461055b90612e60565b80156105a85780601f1061057d576101008083540402835291602001916105a8565b820191906000526020600020905b81548152906001019060200180831161058b57829003601f168201915b5050505050905090565b6000806105bd611712565b90506105ca81858561171a565b600191505092915050565b6000600254905090565b6000801515600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066a90612a42565b60405180910390fd5b6000600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146106f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ec906129e2565b60405180910390fd5b600a5442101580610756575060001515600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078c90612b42565b60405180910390fd5b61079d611499565b82600d546107ab9190612cf4565b11156107ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e390612c42565b60405180910390fd5b60006107ff856107fa611712565b611593565b905082811015610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90612b62565b60405180910390fd5b61085885610850611712565b85840361171a565b82600d600082825461086a9190612cf4565b9250508190555061087c8585856118e5565b9150509392505050565b6000600a54905090565b6000600754905090565b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390612be2565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506109af3382611914565b50565b60006012905090565b6000806109c6611712565b9050610a5a818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a559190612cf4565b61171a565b600191505092915050565b610a6d611712565b73ffffffffffffffffffffffffffffffffffffffff16610a8b610f2e565b73ffffffffffffffffffffffffffffffffffffffff1614610ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad890612b82565b60405180910390fd5b6001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b44611712565b73ffffffffffffffffffffffffffffffffffffffff16610b62610f2e565b73ffffffffffffffffffffffffffffffffffffffff1614610bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baf90612b82565b60405180910390fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c63611712565b73ffffffffffffffffffffffffffffffffffffffff16610c81610f2e565b73ffffffffffffffffffffffffffffffffffffffff1614610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce90612b82565b60405180910390fd5b610ce16000611a74565b565b81610ced33610c13565b1015610d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2590612ae2565b60405180910390fd5b60001515600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db890612a42565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3a90612b02565b60405180910390fd5b610e4d3383611b3a565b8082610e599190612d4a565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600a54421015610ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ede90612b22565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f60611712565b73ffffffffffffffffffffffffffffffffffffffff16610f7e610f2e565b73ffffffffffffffffffffffffffffffffffffffff1614610fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcb90612b82565b60405180910390fd5b806007819055508060088190555050565b606060048054610ff490612e60565b80601f016020809104026020016040519081016040528092919081815260200182805461102090612e60565b801561106d5780601f106110425761010080835404028352916020019161106d565b820191906000526020600020905b81548152906001019060200180831161105057829003601f168201915b5050505050905090565b6000600b54421015801561108d5750600c544211155b1561109c5760085490506110a2565b60075490505b90565b6110ad611712565b73ffffffffffffffffffffffffffffffffffffffff166110cb610f2e565b73ffffffffffffffffffffffffffffffffffffffff1614611121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111890612b82565b60405180910390fd5b61113b3061112d610f2e565b61113630610c13565b611d11565b600060078190555060006009819055506000600a8190555060006008819055506000600b819055506000600c81905550565b600080611178611712565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590612c62565b60405180910390fd5b61124b828686840361171a565b60019250505092915050565b6000600954905090565b6000801515600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec90612a42565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136e906129e2565b60405180910390fd5b600a54421015806113d8575060001515600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e90612b42565b60405180910390fd5b61141f611499565b82600d5461142d9190612cf4565b111561146e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146590612c42565b60405180910390fd5b81600d60008282546114809190612cf4565b925050819055506114918383611f92565b905092915050565b6000600654905090565b6114ab611712565b73ffffffffffffffffffffffffffffffffffffffff166114c9610f2e565b73ffffffffffffffffffffffffffffffffffffffff161461151f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151690612b82565b60405180910390fd5b600060065411611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b90612ba2565b60405180910390fd5b826007819055508160098190555080600a819055508260088190555081600b8190555080600c81905550505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611622611712565b73ffffffffffffffffffffffffffffffffffffffff16611640610f2e565b73ffffffffffffffffffffffffffffffffffffffff1614611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d90612b82565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fd90612a62565b60405180910390fd5b61170f81611a74565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561178a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178190612c22565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f190612a82565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118d89190612ca2565b60405180910390a3505050565b6000806118f0611712565b90506118fd858285611fb5565b611908858585611d11565b60019150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197b90612c82565b60405180910390fd5b61199060008383612041565b80600260008282546119a29190612cf4565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119f79190612cf4565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a5c9190612ca2565b60405180910390a3611a7060008383612046565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba190612bc2565b60405180910390fd5b611bb682600083612041565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3390612a22565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611c939190612da4565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cf89190612ca2565b60405180910390a3611d0c83600084612046565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7890612c02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de890612a02565b60405180910390fd5b611dfc838383612041565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7990612ac2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f159190612cf4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f799190612ca2565b60405180910390a3611f8c848484612046565b50505050565b600080611f9d611712565b9050611faa818585611d11565b600191505092915050565b6000611fc18484611593565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461203b578181101561202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202490612aa2565b60405180910390fd5b61203a848484840361171a565b5b50505050565b505050565b505050565b60008135905061205a81612f01565b92915050565b60008135905061206f81612f18565b92915050565b60006020828403121561208757600080fd5b60006120958482850161204b565b91505092915050565b600080604083850312156120b157600080fd5b60006120bf8582860161204b565b92505060206120d08582860161204b565b9150509250929050565b6000806000606084860312156120ef57600080fd5b60006120fd8682870161204b565b935050602061210e8682870161204b565b925050604061211f86828701612060565b9150509250925092565b6000806040838503121561213c57600080fd5b600061214a8582860161204b565b925050602061215b85828601612060565b9150509250929050565b60006020828403121561217757600080fd5b600061218584828501612060565b91505092915050565b600080604083850312156121a157600080fd5b60006121af85828601612060565b92505060206121c085828601612060565b9150509250929050565b6000806000606084860312156121df57600080fd5b60006121ed86828701612060565b93505060206121fe86828701612060565b925050604061220f86828701612060565b9150509250925092565b61222281612dd8565b82525050565b61223181612dea565b82525050565b600061224282612cd8565b61224c8185612ce3565b935061225c818560208601612e2d565b61226581612ef0565b840191505092915050565b600061227d601983612ce3565b91507f5374616b696e6720746f6b656e7320617265206c6f636b6564000000000000006000830152602082019050919050565b60006122bd602383612ce3565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612323602283612ce3565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612389601983612ce3565b91507f50726573616c6520746f6b656e7320617265206c6f636b6564000000000000006000830152602082019050919050565b60006123c9602683612ce3565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061242f602283612ce3565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612495601d83612ce3565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b60006124d5602683612ce3565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061253b601483612ce3565b91507f496e73756666696369656e742062616c616e63650000000000000000000000006000830152602082019050919050565b600061257b600f83612ce3565b91507f416c7265616479207374616b696e6700000000000000000000000000000000006000830152602082019050919050565b60006125bb601e83612ce3565b91507f5374616b696e67206e6f7420616c6c6f77656420647572696e672049434f00006000830152602082019050919050565b60006125fb601b83612ce3565b91507f526563697069656e7420746f6b656e7320617265206c6f636b656400000000006000830152602082019050919050565b600061263b602883612ce3565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b60006126a1602083612ce3565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006126e1601183612ce3565b91507f4e6f2070726573616c6520737570706c790000000000000000000000000000006000830152602082019050919050565b6000612721602183612ce3565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612787600b83612ce3565b91507f4e6f74207374616b696e670000000000000000000000000000000000000000006000830152602082019050919050565b60006127c7602583612ce3565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061282d602483612ce3565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612893601383612ce3565b91507f49434f20746f6b656e7320736f6c64206f7574000000000000000000000000006000830152602082019050919050565b60006128d3602583612ce3565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612939601f83612ce3565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b61297581612e16565b82525050565b61298481612e20565b82525050565b600060208201905061299f6000830184612219565b92915050565b60006020820190506129ba6000830184612228565b92915050565b600060208201905081810360008301526129da8184612237565b905092915050565b600060208201905081810360008301526129fb81612270565b9050919050565b60006020820190508181036000830152612a1b816122b0565b9050919050565b60006020820190508181036000830152612a3b81612316565b9050919050565b60006020820190508181036000830152612a5b8161237c565b9050919050565b60006020820190508181036000830152612a7b816123bc565b9050919050565b60006020820190508181036000830152612a9b81612422565b9050919050565b60006020820190508181036000830152612abb81612488565b9050919050565b60006020820190508181036000830152612adb816124c8565b9050919050565b60006020820190508181036000830152612afb8161252e565b9050919050565b60006020820190508181036000830152612b1b8161256e565b9050919050565b60006020820190508181036000830152612b3b816125ae565b9050919050565b60006020820190508181036000830152612b5b816125ee565b9050919050565b60006020820190508181036000830152612b7b8161262e565b9050919050565b60006020820190508181036000830152612b9b81612694565b9050919050565b60006020820190508181036000830152612bbb816126d4565b9050919050565b60006020820190508181036000830152612bdb81612714565b9050919050565b60006020820190508181036000830152612bfb8161277a565b9050919050565b60006020820190508181036000830152612c1b816127ba565b9050919050565b60006020820190508181036000830152612c3b81612820565b9050919050565b60006020820190508181036000830152612c5b81612886565b9050919050565b60006020820190508181036000830152612c7b816128c6565b9050919050565b60006020820190508181036000830152612c9b8161292c565b9050919050565b6000602082019050612cb7600083018461296c565b92915050565b6000602082019050612cd2600083018461297b565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612cff82612e16565b9150612d0a83612e16565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d3f57612d3e612e92565b5b828201905092915050565b6000612d5582612e16565b9150612d6083612e16565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d9957612d98612e92565b5b828202905092915050565b6000612daf82612e16565b9150612dba83612e16565b925082821015612dcd57612dcc612e92565b5b828203905092915050565b6000612de382612df6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015612e4b578082015181840152602081019050612e30565b83811115612e5a576000848401525b50505050565b60006002820490506001821680612e7857607f821691505b60208210811415612e8c57612e8b612ec1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b612f0a81612dd8565b8114612f1557600080fd5b50565b612f2181612e16565b8114612f2c57600080fd5b5056fea2646970667358221220d7c37336d533412ee2131873743a97420a0df6ee4c05796a0e14023257d919b064736f6c63430008000033000000000000000000000000ad3ed81bf2cefb26e7bcbae79e076d3a3caf5a86
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ad3ed81bf2cefb26e7bcbae79e076d3a3caf5a86
-----Decoded View---------------
Arg [0] : initialMintAddress (address): 0xad3ed81bf2cefb26e7bcbae79e076d3a3caf5a86
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ad3ed81bf2cefb26e7bcbae79e076d3a3caf5a86
Deployed ByteCode Sourcemap
20340:4989:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9478:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11829:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10598:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22651:868;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24756:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24548:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24194:243;;;:::i;:::-;;10440:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13314:240;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24861:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24986:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10769:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2724:103;;;:::i;:::-;;23778:408;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25114:210;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2073:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21934:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9697:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23535:235;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21642:284;;;:::i;:::-;;14057:438;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24647:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22062:577;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24445:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21277:357;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11358:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2982:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9478:100;9532:13;9565:5;9558:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9478:100;:::o;11829:201::-;11912:4;11929:13;11945:12;:10;:12::i;:::-;11929:28;;11968:32;11977:5;11984:7;11993:6;11968:8;:32::i;:::-;12018:4;12011:11;;;11829:201;;;;:::o;10598:108::-;10659:7;10686:12;;10679:19;;10598:108;:::o;22651:868::-;22757:4;22816:5;22782:39;;:22;:30;22805:6;22782:30;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;22774:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;22899:1;22870:17;:25;22888:6;22870:25;;;;;;;;;;;;;;;;:30;22862:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22968:15;;22949;:34;;:80;;;;23024:5;22987:42;;:22;:33;23010:9;22987:33;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;22949:80;22941:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;23107:15;:13;:15::i;:::-;23097:6;23080:14;;:23;;;;:::i;:::-;:42;;23072:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;23159:24;23186:31;23196:6;23204:12;:10;:12::i;:::-;23186:9;:31::i;:::-;23159:58;;23256:6;23236:16;:26;;23228:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;23343:57;23352:6;23360:12;:10;:12::i;:::-;23393:6;23374:16;:25;23343:8;:57::i;:::-;23442:6;23424:14;;:24;;;;;;;:::i;:::-;;;;;;;;23466:45;23485:6;23493:9;23504:6;23466:18;:45::i;:::-;23459:52;;;22651:868;;;;;:::o;24756:97::-;24803:7;24830:15;;24823:22;;24756:97;:::o;24548:91::-;24592:7;24619:12;;24612:19;;24548:91;:::o;24194:243::-;24271:1;24239:17;:29;24257:10;24239:29;;;;;;;;;;;;;;;;:33;24231:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;24299:16;24318:17;:29;24336:10;24318:29;;;;;;;;;;;;;;;;24299:48;;24390:1;24358:17;:29;24376:10;24358:29;;;;;;;;;;;;;;;:33;;;;24402:27;24408:10;24420:8;24402:5;:27::i;:::-;24194:243;:::o;10440:93::-;10498:5;10523:2;10516:9;;10440:93;:::o;13314:240::-;13402:4;13419:13;13435:12;:10;:12::i;:::-;13419:28;;13458:66;13467:5;13474:7;13513:10;13483:11;:18;13495:5;13483:18;;;;;;;;;;;;;;;:27;13502:7;13483:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;13458:8;:66::i;:::-;13542:4;13535:11;;;13314:240;;;;:::o;24861:117::-;2304:12;:10;:12::i;:::-;2293:23;;:7;:5;:7::i;:::-;:23;;;2285:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24966:4:::1;24933:22;:30;24956:6;24933:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;24861:117:::0;:::o;24986:120::-;2304:12;:10;:12::i;:::-;2293:23;;:7;:5;:7::i;:::-;:23;;;2285:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25093:5:::1;25060:22;:30;25083:6;25060:30;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;24986:120:::0;:::o;10769:127::-;10843:7;10870:9;:18;10880:7;10870:18;;;;;;;;;;;;;;;;10863:25;;10769:127;;;:::o;2724:103::-;2304:12;:10;:12::i;:::-;2293:23;;:7;:5;:7::i;:::-;:23;;;2285:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2789:30:::1;2816:1;2789:18;:30::i;:::-;2724:103::o:0;23778:408::-;23882:6;23857:21;23867:10;23857:9;:21::i;:::-;:31;;23849:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23970:5;23932:43;;:22;:34;23955:10;23932:34;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;23924:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;24057:1;24024:17;:29;24042:10;24024:29;;;;;;;;;;;;;;;;:34;24016:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;24089:25;24095:10;24107:6;24089:5;:25::i;:::-;24166:12;24157:6;:21;;;;:::i;:::-;24125:17;:29;24143:10;24125:29;;;;;;;;;;;;;;;:53;;;;23778:408;;:::o;25114:210::-;25176:7;25223:15;;25204;:34;;25196:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;25291:17;:25;25309:6;25291:25;;;;;;;;;;;;;;;;25284:32;;25114:210;;;:::o;2073:87::-;2119:7;2146:6;;;;;;;;;;;2139:13;;2073:87;:::o;21934:120::-;2304:12;:10;:12::i;:::-;2293:23;;:7;:5;:7::i;:::-;:23;;;2285:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22015:4:::1;22000:12;:19;;;;22042:4;22030:9;:16;;;;21934:120:::0;:::o;9697:104::-;9753:13;9786:7;9779:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9697:104;:::o;23535:235::-;23576:7;23619:13;;23600:15;:32;;:66;;;;;23655:11;;23636:15;:30;;23600:66;23596:167;;;23690:9;;23683:16;;;;23596:167;23739:12;;23732:19;;23535:235;;:::o;21642:284::-;2304:12;:10;:12::i;:::-;2293:23;;:7;:5;:7::i;:::-;:23;;;2285:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21692:59:::1;21710:4;21717:7;:5;:7::i;:::-;21726:24;21744:4;21726:9;:24::i;:::-;21692:9;:59::i;:::-;21777:1;21762:12;:16;;;;21809:1;21789:17;:21;;;;21839:1;21821:15;:19;;;;21863:1;21851:9;:13;;;;21891:1;21875:13;:17;;;;21917:1;21903:11;:15;;;;21642:284::o:0;14057:438::-;14150:4;14167:13;14183:12;:10;:12::i;:::-;14167:28;;14206:24;14233:11;:18;14245:5;14233:18;;;;;;;;;;;;;;;:27;14252:7;14233:27;;;;;;;;;;;;;;;;14206:54;;14299:15;14279:16;:35;;14271:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14392:60;14401:5;14408:7;14436:15;14417:16;:34;14392:8;:60::i;:::-;14483:4;14476:11;;;;14057:438;;;;:::o;24647:101::-;24696:7;24723:17;;24716:24;;24647:101;:::o;22062:577::-;22148:4;22211:5;22173:43;;:22;:34;22196:10;22173:34;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;22165:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;22298:1;22265:17;:29;22283:10;22265:29;;;;;;;;;;;;;;;;:34;22257:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;22367:15;;22348;:34;;:80;;;;22423:5;22386:42;;:22;:33;22409:9;22386:33;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;22348:80;22340:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;22506:15;:13;:15::i;:::-;22496:6;22479:14;;:23;;;;:::i;:::-;:42;;22471:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;22574:6;22556:14;;:24;;;;;;;:::i;:::-;;;;;;;;22598:33;22613:9;22624:6;22598:14;:33::i;:::-;22591:40;;22062:577;;;;:::o;24445:95::-;24491:7;24518:14;;24511:21;;24445:95;:::o;21277:357::-;2304:12;:10;:12::i;:::-;2293:23;;:7;:5;:7::i;:::-;:23;;;2285:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21402:1:::1;21385:14;;:18;21377:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;21451:4;21436:12;:19;;;;21486:9;21466:17;:29;;;;21524:7;21506:15;:25;;;;21554:4;21542:9;:16;;;;21585:9;21569:13;:25;;;;21619:7;21605:11;:21;;;;21277:357:::0;;;:::o;11358:151::-;11447:7;11474:11;:18;11486:5;11474:18;;;;;;;;;;;;;;;:27;11493:7;11474:27;;;;;;;;;;;;;;;;11467:34;;11358:151;;;;:::o;2982:201::-;2304:12;:10;:12::i;:::-;2293:23;;:7;:5;:7::i;:::-;:23;;;2285:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3091:1:::1;3071:22;;:8;:22;;;;3063:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3147:28;3166:8;3147:18;:28::i;:::-;2982:201:::0;:::o;738:98::-;791:7;818:10;811:17;;738:98;:::o;17693:380::-;17846:1;17829:19;;:5;:19;;;;17821:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17927:1;17908:21;;:7;:21;;;;17900:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18011:6;17981:11;:18;17993:5;17981:18;;;;;;;;;;;;;;;:27;18000:7;17981:27;;;;;;;;;;;;;;;:36;;;;18049:7;18033:32;;18042:5;18033:32;;;18058:6;18033:32;;;;;;:::i;:::-;;;;;;;;17693:380;;;:::o;12610:295::-;12741:4;12758:15;12776:12;:10;:12::i;:::-;12758:30;;12799:38;12815:4;12821:7;12830:6;12799:15;:38::i;:::-;12848:27;12858:4;12864:2;12868:6;12848:9;:27::i;:::-;12893:4;12886:11;;;12610:295;;;;;:::o;15932:399::-;16035:1;16016:21;;:7;:21;;;;16008:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;16086:49;16115:1;16119:7;16128:6;16086:20;:49::i;:::-;16164:6;16148:12;;:22;;;;;;;:::i;:::-;;;;;;;;16203:6;16181:9;:18;16191:7;16181:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;16246:7;16225:37;;16242:1;16225:37;;;16255:6;16225:37;;;;;;:::i;:::-;;;;;;;;16275:48;16303:1;16307:7;16316:6;16275:19;:48::i;:::-;15932:399;;:::o;3343:191::-;3417:16;3436:6;;;;;;;;;;;3417:25;;3462:8;3453:6;;:17;;;;;;;;;;;;;;;;;;3517:8;3486:40;;3507:8;3486:40;;;;;;;;;;;;3343:191;;:::o;16664:591::-;16767:1;16748:21;;:7;:21;;;;16740:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16820:49;16841:7;16858:1;16862:6;16820:20;:49::i;:::-;16882:22;16907:9;:18;16917:7;16907:18;;;;;;;;;;;;;;;;16882:43;;16962:6;16944:14;:24;;16936:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17081:6;17064:14;:23;17043:9;:18;17053:7;17043:18;;;;;;;;;;;;;;;:44;;;;17125:6;17109:12;;:22;;;;;;;:::i;:::-;;;;;;;;17175:1;17149:37;;17158:7;17149:37;;;17179:6;17149:37;;;;;;:::i;:::-;;;;;;;;17199:48;17219:7;17236:1;17240:6;17199:19;:48::i;:::-;16664:591;;;:::o;14974:671::-;15121:1;15105:18;;:4;:18;;;;15097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15198:1;15184:16;;:2;:16;;;;15176:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15253:38;15274:4;15280:2;15284:6;15253:20;:38::i;:::-;15304:19;15326:9;:15;15336:4;15326:15;;;;;;;;;;;;;;;;15304:37;;15375:6;15360:11;:21;;15352:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15492:6;15478:11;:20;15460:9;:15;15470:4;15460:15;;;;;;;;;;;;;;;:38;;;;15537:6;15520:9;:13;15530:2;15520:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;15576:2;15561:26;;15570:4;15561:26;;;15580:6;15561:26;;;;;;:::i;:::-;;;;;;;;15600:37;15620:4;15626:2;15630:6;15600:19;:37::i;:::-;14974:671;;;;:::o;11102:193::-;11181:4;11198:13;11214:12;:10;:12::i;:::-;11198:28;;11237;11247:5;11254:2;11258:6;11237:9;:28::i;:::-;11283:4;11276:11;;;11102:193;;;;:::o;18360:453::-;18495:24;18522:25;18532:5;18539:7;18522:9;:25::i;:::-;18495:52;;18582:17;18562:16;:37;18558:248;;18644:6;18624:16;:26;;18616:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18728:51;18737:5;18744:7;18772:6;18753:16;:25;18728:8;:51::i;:::-;18558:248;18360:453;;;;:::o;19413:125::-;;;;:::o;20142:124::-;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;;;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;;;;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;;;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:262::-;;2057:2;2045:9;2036:7;2032:23;2028:32;2025:2;;;2073:1;2070;2063:12;2025:2;2116:1;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2087:117;2015:196;;;;:::o;2217:407::-;;;2342:2;2330:9;2321:7;2317:23;2313:32;2310:2;;;2358:1;2355;2348:12;2310:2;2401:1;2426:53;2471:7;2462:6;2451:9;2447:22;2426:53;:::i;:::-;2416:63;;2372:117;2528:2;2554:53;2599:7;2590:6;2579:9;2575:22;2554:53;:::i;:::-;2544:63;;2499:118;2300:324;;;;;:::o;2630:552::-;;;;2772:2;2760:9;2751:7;2747:23;2743:32;2740:2;;;2788:1;2785;2778:12;2740:2;2831:1;2856:53;2901:7;2892:6;2881:9;2877:22;2856:53;:::i;:::-;2846:63;;2802:117;2958:2;2984:53;3029:7;3020:6;3009:9;3005:22;2984:53;:::i;:::-;2974:63;;2929:118;3086:2;3112:53;3157:7;3148:6;3137:9;3133:22;3112:53;:::i;:::-;3102:63;;3057:118;2730:452;;;;;:::o;3188:118::-;3275:24;3293:5;3275:24;:::i;:::-;3270:3;3263:37;3253:53;;:::o;3312:109::-;3393:21;3408:5;3393:21;:::i;:::-;3388:3;3381:34;3371:50;;:::o;3427:364::-;;3543:39;3576:5;3543:39;:::i;:::-;3598:71;3662:6;3657:3;3598:71;:::i;:::-;3591:78;;3678:52;3723:6;3718:3;3711:4;3704:5;3700:16;3678:52;:::i;:::-;3755:29;3777:6;3755:29;:::i;:::-;3750:3;3746:39;3739:46;;3519:272;;;;;:::o;3797:323::-;;3960:67;4024:2;4019:3;3960:67;:::i;:::-;3953:74;;4057:27;4053:1;4048:3;4044:11;4037:48;4111:2;4106:3;4102:12;4095:19;;3943:177;;;:::o;4126:367::-;;4289:67;4353:2;4348:3;4289:67;:::i;:::-;4282:74;;4386:34;4382:1;4377:3;4373:11;4366:55;4452:5;4447:2;4442:3;4438:12;4431:27;4484:2;4479:3;4475:12;4468:19;;4272:221;;;:::o;4499:366::-;;4662:67;4726:2;4721:3;4662:67;:::i;:::-;4655:74;;4759:34;4755:1;4750:3;4746:11;4739:55;4825:4;4820:2;4815:3;4811:12;4804:26;4856:2;4851:3;4847:12;4840:19;;4645:220;;;:::o;4871:323::-;;5034:67;5098:2;5093:3;5034:67;:::i;:::-;5027:74;;5131:27;5127:1;5122:3;5118:11;5111:48;5185:2;5180:3;5176:12;5169:19;;5017:177;;;:::o;5200:370::-;;5363:67;5427:2;5422:3;5363:67;:::i;:::-;5356:74;;5460:34;5456:1;5451:3;5447:11;5440:55;5526:8;5521:2;5516:3;5512:12;5505:30;5561:2;5556:3;5552:12;5545:19;;5346:224;;;:::o;5576:366::-;;5739:67;5803:2;5798:3;5739:67;:::i;:::-;5732:74;;5836:34;5832:1;5827:3;5823:11;5816:55;5902:4;5897:2;5892:3;5888:12;5881:26;5933:2;5928:3;5924:12;5917:19;;5722:220;;;:::o;5948:327::-;;6111:67;6175:2;6170:3;6111:67;:::i;:::-;6104:74;;6208:31;6204:1;6199:3;6195:11;6188:52;6266:2;6261:3;6257:12;6250:19;;6094:181;;;:::o;6281:370::-;;6444:67;6508:2;6503:3;6444:67;:::i;:::-;6437:74;;6541:34;6537:1;6532:3;6528:11;6521:55;6607:8;6602:2;6597:3;6593:12;6586:30;6642:2;6637:3;6633:12;6626:19;;6427:224;;;:::o;6657:318::-;;6820:67;6884:2;6879:3;6820:67;:::i;:::-;6813:74;;6917:22;6913:1;6908:3;6904:11;6897:43;6966:2;6961:3;6957:12;6950:19;;6803:172;;;:::o;6981:313::-;;7144:67;7208:2;7203:3;7144:67;:::i;:::-;7137:74;;7241:17;7237:1;7232:3;7228:11;7221:38;7285:2;7280:3;7276:12;7269:19;;7127:167;;;:::o;7300:328::-;;7463:67;7527:2;7522:3;7463:67;:::i;:::-;7456:74;;7560:32;7556:1;7551:3;7547:11;7540:53;7619:2;7614:3;7610:12;7603:19;;7446:182;;;:::o;7634:325::-;;7797:67;7861:2;7856:3;7797:67;:::i;:::-;7790:74;;7894:29;7890:1;7885:3;7881:11;7874:50;7950:2;7945:3;7941:12;7934:19;;7780:179;;;:::o;7965:372::-;;8128:67;8192:2;8187:3;8128:67;:::i;:::-;8121:74;;8225:34;8221:1;8216:3;8212:11;8205:55;8291:10;8286:2;8281:3;8277:12;8270:32;8328:2;8323:3;8319:12;8312:19;;8111:226;;;:::o;8343:330::-;;8506:67;8570:2;8565:3;8506:67;:::i;:::-;8499:74;;8603:34;8599:1;8594:3;8590:11;8583:55;8664:2;8659:3;8655:12;8648:19;;8489:184;;;:::o;8679:315::-;;8842:67;8906:2;8901:3;8842:67;:::i;:::-;8835:74;;8939:19;8935:1;8930:3;8926:11;8919:40;8985:2;8980:3;8976:12;8969:19;;8825:169;;;:::o;9000:365::-;;9163:67;9227:2;9222:3;9163:67;:::i;:::-;9156:74;;9260:34;9256:1;9251:3;9247:11;9240:55;9326:3;9321:2;9316:3;9312:12;9305:25;9356:2;9351:3;9347:12;9340:19;;9146:219;;;:::o;9371:309::-;;9534:67;9598:2;9593:3;9534:67;:::i;:::-;9527:74;;9631:13;9627:1;9622:3;9618:11;9611:34;9671:2;9666:3;9662:12;9655:19;;9517:163;;;:::o;9686:369::-;;9849:67;9913:2;9908:3;9849:67;:::i;:::-;9842:74;;9946:34;9942:1;9937:3;9933:11;9926:55;10012:7;10007:2;10002:3;9998:12;9991:29;10046:2;10041:3;10037:12;10030:19;;9832:223;;;:::o;10061:368::-;;10224:67;10288:2;10283:3;10224:67;:::i;:::-;10217:74;;10321:34;10317:1;10312:3;10308:11;10301:55;10387:6;10382:2;10377:3;10373:12;10366:28;10420:2;10415:3;10411:12;10404:19;;10207:222;;;:::o;10435:317::-;;10598:67;10662:2;10657:3;10598:67;:::i;:::-;10591:74;;10695:21;10691:1;10686:3;10682:11;10675:42;10743:2;10738:3;10734:12;10727:19;;10581:171;;;:::o;10758:369::-;;10921:67;10985:2;10980:3;10921:67;:::i;:::-;10914:74;;11018:34;11014:1;11009:3;11005:11;10998:55;11084:7;11079:2;11074:3;11070:12;11063:29;11118:2;11113:3;11109:12;11102:19;;10904:223;;;:::o;11133:329::-;;11296:67;11360:2;11355:3;11296:67;:::i;:::-;11289:74;;11393:33;11389:1;11384:3;11380:11;11373:54;11453:2;11448:3;11444:12;11437:19;;11279:183;;;:::o;11468:118::-;11555:24;11573:5;11555:24;:::i;:::-;11550:3;11543:37;11533:53;;:::o;11592:112::-;11675:22;11691:5;11675:22;:::i;:::-;11670:3;11663:35;11653:51;;:::o;11710:222::-;;11841:2;11830:9;11826:18;11818:26;;11854:71;11922:1;11911:9;11907:17;11898:6;11854:71;:::i;:::-;11808:124;;;;:::o;11938:210::-;;12063:2;12052:9;12048:18;12040:26;;12076:65;12138:1;12127:9;12123:17;12114:6;12076:65;:::i;:::-;12030:118;;;;:::o;12154:313::-;;12305:2;12294:9;12290:18;12282:26;;12354:9;12348:4;12344:20;12340:1;12329:9;12325:17;12318:47;12382:78;12455:4;12446:6;12382:78;:::i;:::-;12374:86;;12272:195;;;;:::o;12473:419::-;;12677:2;12666:9;12662:18;12654:26;;12726:9;12720:4;12716:20;12712:1;12701:9;12697:17;12690:47;12754:131;12880:4;12754:131;:::i;:::-;12746:139;;12644:248;;;:::o;12898:419::-;;13102:2;13091:9;13087:18;13079:26;;13151:9;13145:4;13141:20;13137:1;13126:9;13122:17;13115:47;13179:131;13305:4;13179:131;:::i;:::-;13171:139;;13069:248;;;:::o;13323:419::-;;13527:2;13516:9;13512:18;13504:26;;13576:9;13570:4;13566:20;13562:1;13551:9;13547:17;13540:47;13604:131;13730:4;13604:131;:::i;:::-;13596:139;;13494:248;;;:::o;13748:419::-;;13952:2;13941:9;13937:18;13929:26;;14001:9;13995:4;13991:20;13987:1;13976:9;13972:17;13965:47;14029:131;14155:4;14029:131;:::i;:::-;14021:139;;13919:248;;;:::o;14173:419::-;;14377:2;14366:9;14362:18;14354:26;;14426:9;14420:4;14416:20;14412:1;14401:9;14397:17;14390:47;14454:131;14580:4;14454:131;:::i;:::-;14446:139;;14344:248;;;:::o;14598:419::-;;14802:2;14791:9;14787:18;14779:26;;14851:9;14845:4;14841:20;14837:1;14826:9;14822:17;14815:47;14879:131;15005:4;14879:131;:::i;:::-;14871:139;;14769:248;;;:::o;15023:419::-;;15227:2;15216:9;15212:18;15204:26;;15276:9;15270:4;15266:20;15262:1;15251:9;15247:17;15240:47;15304:131;15430:4;15304:131;:::i;:::-;15296:139;;15194:248;;;:::o;15448:419::-;;15652:2;15641:9;15637:18;15629:26;;15701:9;15695:4;15691:20;15687:1;15676:9;15672:17;15665:47;15729:131;15855:4;15729:131;:::i;:::-;15721:139;;15619:248;;;:::o;15873:419::-;;16077:2;16066:9;16062:18;16054:26;;16126:9;16120:4;16116:20;16112:1;16101:9;16097:17;16090:47;16154:131;16280:4;16154:131;:::i;:::-;16146:139;;16044:248;;;:::o;16298:419::-;;16502:2;16491:9;16487:18;16479:26;;16551:9;16545:4;16541:20;16537:1;16526:9;16522:17;16515:47;16579:131;16705:4;16579:131;:::i;:::-;16571:139;;16469:248;;;:::o;16723:419::-;;16927:2;16916:9;16912:18;16904:26;;16976:9;16970:4;16966:20;16962:1;16951:9;16947:17;16940:47;17004:131;17130:4;17004:131;:::i;:::-;16996:139;;16894:248;;;:::o;17148:419::-;;17352:2;17341:9;17337:18;17329:26;;17401:9;17395:4;17391:20;17387:1;17376:9;17372:17;17365:47;17429:131;17555:4;17429:131;:::i;:::-;17421:139;;17319:248;;;:::o;17573:419::-;;17777:2;17766:9;17762:18;17754:26;;17826:9;17820:4;17816:20;17812:1;17801:9;17797:17;17790:47;17854:131;17980:4;17854:131;:::i;:::-;17846:139;;17744:248;;;:::o;17998:419::-;;18202:2;18191:9;18187:18;18179:26;;18251:9;18245:4;18241:20;18237:1;18226:9;18222:17;18215:47;18279:131;18405:4;18279:131;:::i;:::-;18271:139;;18169:248;;;:::o;18423:419::-;;18627:2;18616:9;18612:18;18604:26;;18676:9;18670:4;18666:20;18662:1;18651:9;18647:17;18640:47;18704:131;18830:4;18704:131;:::i;:::-;18696:139;;18594:248;;;:::o;18848:419::-;;19052:2;19041:9;19037:18;19029:26;;19101:9;19095:4;19091:20;19087:1;19076:9;19072:17;19065:47;19129:131;19255:4;19129:131;:::i;:::-;19121:139;;19019:248;;;:::o;19273:419::-;;19477:2;19466:9;19462:18;19454:26;;19526:9;19520:4;19516:20;19512:1;19501:9;19497:17;19490:47;19554:131;19680:4;19554:131;:::i;:::-;19546:139;;19444:248;;;:::o;19698:419::-;;19902:2;19891:9;19887:18;19879:26;;19951:9;19945:4;19941:20;19937:1;19926:9;19922:17;19915:47;19979:131;20105:4;19979:131;:::i;:::-;19971:139;;19869:248;;;:::o;20123:419::-;;20327:2;20316:9;20312:18;20304:26;;20376:9;20370:4;20366:20;20362:1;20351:9;20347:17;20340:47;20404:131;20530:4;20404:131;:::i;:::-;20396:139;;20294:248;;;:::o;20548:419::-;;20752:2;20741:9;20737:18;20729:26;;20801:9;20795:4;20791:20;20787:1;20776:9;20772:17;20765:47;20829:131;20955:4;20829:131;:::i;:::-;20821:139;;20719:248;;;:::o;20973:419::-;;21177:2;21166:9;21162:18;21154:26;;21226:9;21220:4;21216:20;21212:1;21201:9;21197:17;21190:47;21254:131;21380:4;21254:131;:::i;:::-;21246:139;;21144:248;;;:::o;21398:419::-;;21602:2;21591:9;21587:18;21579:26;;21651:9;21645:4;21641:20;21637:1;21626:9;21622:17;21615:47;21679:131;21805:4;21679:131;:::i;:::-;21671:139;;21569:248;;;:::o;21823:222::-;;21954:2;21943:9;21939:18;21931:26;;21967:71;22035:1;22024:9;22020:17;22011:6;21967:71;:::i;:::-;21921:124;;;;:::o;22051:214::-;;22178:2;22167:9;22163:18;22155:26;;22191:67;22255:1;22244:9;22240:17;22231:6;22191:67;:::i;:::-;22145:120;;;;:::o;22271:99::-;;22357:5;22351:12;22341:22;;22330:40;;;:::o;22376:169::-;;22494:6;22489:3;22482:19;22534:4;22529:3;22525:14;22510:29;;22472:73;;;;:::o;22551:305::-;;22610:20;22628:1;22610:20;:::i;:::-;22605:25;;22644:20;22662:1;22644:20;:::i;:::-;22639:25;;22798:1;22730:66;22726:74;22723:1;22720:81;22717:2;;;22804:18;;:::i;:::-;22717:2;22848:1;22845;22841:9;22834:16;;22595:261;;;;:::o;22862:348::-;;22925:20;22943:1;22925:20;:::i;:::-;22920:25;;22959:20;22977:1;22959:20;:::i;:::-;22954:25;;23147:1;23079:66;23075:74;23072:1;23069:81;23064:1;23057:9;23050:17;23046:105;23043:2;;;23154:18;;:::i;:::-;23043:2;23202:1;23199;23195:9;23184:20;;22910:300;;;;:::o;23216:191::-;;23276:20;23294:1;23276:20;:::i;:::-;23271:25;;23310:20;23328:1;23310:20;:::i;:::-;23305:25;;23349:1;23346;23343:8;23340:2;;;23354:18;;:::i;:::-;23340:2;23399:1;23396;23392:9;23384:17;;23261:146;;;;:::o;23413:96::-;;23479:24;23497:5;23479:24;:::i;:::-;23468:35;;23458:51;;;:::o;23515:90::-;;23592:5;23585:13;23578:21;23567:32;;23557:48;;;:::o;23611:126::-;;23688:42;23681:5;23677:54;23666:65;;23656:81;;;:::o;23743:77::-;;23809:5;23798:16;;23788:32;;;:::o;23826:86::-;;23901:4;23894:5;23890:16;23879:27;;23869:43;;;:::o;23918:307::-;23986:1;23996:113;24010:6;24007:1;24004:13;23996:113;;;24095:1;24090:3;24086:11;24080:18;24076:1;24071:3;24067:11;24060:39;24032:2;24029:1;24025:10;24020:15;;23996:113;;;24127:6;24124:1;24121:13;24118:2;;;24207:1;24198:6;24193:3;24189:16;24182:27;24118:2;23967:258;;;;:::o;24231:320::-;;24312:1;24306:4;24302:12;24292:22;;24359:1;24353:4;24349:12;24380:18;24370:2;;24436:4;24428:6;24424:17;24414:27;;24370:2;24498;24490:6;24487:14;24467:18;24464:38;24461:2;;;24517:18;;:::i;:::-;24461:2;24282:269;;;;:::o;24557:180::-;24605:77;24602:1;24595:88;24702:4;24699:1;24692:15;24726:4;24723:1;24716:15;24743:180;24791:77;24788:1;24781:88;24888:4;24885:1;24878:15;24912:4;24909:1;24902:15;24929:102;;25021:2;25017:7;25012:2;25005:5;25001:14;24997:28;24987:38;;24977:54;;;:::o;25037:122::-;25110:24;25128:5;25110:24;:::i;:::-;25103:5;25100:35;25090:2;;25149:1;25146;25139:12;25090:2;25080:79;:::o;25165:122::-;25238:24;25256:5;25238:24;:::i;:::-;25231:5;25228:35;25218:2;;25277:1;25274;25267:12;25218:2;25208:79;:::o
Swarm Source
ipfs://d7c37336d533412ee2131873743a97420a0df6ee4c05796a0e14023257d919b0