Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
CommonERC20
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-03-01 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // SPDX-License-Identifier: MIT 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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @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 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) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @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 guidelines: functions revert instead * of 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 defaut value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `to` 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); } /** * @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"); _balances[account] = accountBalance - amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to 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 {} } /** * @title ERC20Decimals * @dev Implementation of the ERC20Decimals. Extension of {ERC20} that adds decimals storage slot. */ abstract contract ERC20Decimals is ERC20 { uint8 private immutable _decimals; /** * @dev Sets the value of the `decimals`. This value is immutable, it can only be * set once during construction. */ constructor(uint8 decimals_) { _decimals = decimals_; } function decimals() public view virtual override returns (uint8) { return _decimals; } } /** * @title ERC20Mintable * @dev Implementation of the ERC20Mintable. Extension of {ERC20} that adds a minting behaviour. */ abstract contract ERC20Mintable is ERC20 { // indicates if minting is finished bool private _mintingFinished = false; /** * @dev Emitted during finish minting */ event MintFinished(); /** * @dev Tokens can be minted only before minting finished. */ modifier canMint() { require(!_mintingFinished, "ERC20Mintable: Minting is finished"); _; } /** * @return if minting is finished or not. */ function mintingFinished() external view returns (bool) { return _mintingFinished; } /** * @dev Function to mint tokens. * * WARNING: it allows everyone to mint new tokens. Access controls MUST be defined in derived contracts. * * @param account The address that will receive the minted tokens * @param amount The amount of tokens to mint */ function mint(address account, uint256 amount) external canMint { _mint(account, amount); } /** * @dev Function to stop minting new tokens. * * WARNING: it allows everyone to finish minting. Access controls MUST be defined in derived contracts. */ function finishMinting() external canMint { _finishMinting(); } /** * @dev Function to stop minting new tokens. */ function _finishMinting() internal virtual { _mintingFinished = true; emit MintFinished(); } } interface IPayable { function pay(string memory serviceName) external payable; } /** * @title ServicePayer * @dev Implementation of the ServicePayer */ abstract contract ServicePayer { constructor(address payable receiver) payable { receiver.transfer(msg.value); } } /** * @dev Extension of {ERC20} that adds a cap to the supply of tokens. */ abstract contract ERC20Capped is ERC20 { uint256 private immutable _cap; /** * @dev Sets the value of the `cap`. This value is immutable, it can only be * set once during construction. */ constructor(uint256 cap_) { require(cap_ > 0, "ERC20Capped: cap is 0"); _cap = cap_; } /** * @dev Returns the cap on the token's total supply. */ function cap() public view virtual returns (uint256) { return _cap; } /** * @dev See {ERC20-_mint}. */ function _mint(address account, uint256 amount) internal virtual override { require(ERC20.totalSupply() + amount <= cap(), "ERC20Capped: cap exceeded"); super._mint(account, amount); } } /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { uint256 currentAllowance = allowance(account, _msgSender()); require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance"); _approve(account, _msgSender(), currentAllowance - amount); _burn(account, amount); } } /** * @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 msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), 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 { emit OwnershipTransferred(_owner, address(0)); _owner = 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"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } /** * @title CommonERC20 * @author Veshi * @dev Implementation of the CommonERC20 */ contract CommonERC20 is ERC20Decimals, ERC20Capped, ERC20Mintable, ERC20Burnable, Ownable, ServicePayer { constructor( string memory name_, string memory symbol_, uint8 decimals_, uint256 cap_, uint256 initialBalance_, address payable feeReceiver_ ) payable ERC20(name_, symbol_) ERC20Decimals(decimals_) ERC20Capped(cap_) ServicePayer(feeReceiver_) { // Immutable variables cannot be read during contract creation time // https://github.com/ethereum/solidity/issues/10463 require(initialBalance_ <= cap_, "ERC20Capped: Cap exceeded"); ERC20._mint(_msgSender(), initialBalance_); } function decimals() public view virtual override(ERC20, ERC20Decimals) returns (uint8) { return super.decimals(); } /** * @dev Function to mint tokens. * * NOTE: restricting access to owner only. See {ERC20Mintable-mint}. * * @param account The address that will receive the minted tokens * @param amount The amount of tokens to mint */ function _mint(address account, uint256 amount) internal override(ERC20, ERC20Capped) onlyOwner { super._mint(account, amount); } /** * @dev Function to stop minting new tokens. * * NOTE: restricting access to owner only. See {ERC20Mintable-finishMinting}. */ function _finishMinting() internal override onlyOwner { super._finishMinting(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"cap_","type":"uint256"},{"internalType":"uint256","name":"initialBalance_","type":"uint256"},{"internalType":"address payable","name":"feeReceiver_","type":"address"}],"stateMutability":"payable","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":[],"name":"MintFinished","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cap","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":"finishMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintingFinished","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"renounceOwnership","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"}]
Contract Creation Code
60c06040525f60055f6101000a81548160ff021916908315150217905550604051612d84380380612d84833981810160405281019061003e919061058a565b80838588888160039081610052919061084f565b508060049081610062919061084f565b5050508060ff1660808160ff1681525050505f81116100b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ad90610978565b60405180910390fd5b8060a08181525050505f6100ce61021c60201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508073ffffffffffffffffffffffffffffffffffffffff166108fc3490811502906040515f60405180830381858888f193505050501580156101af573d5f803e3d5ffd5b5050828211156101f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101eb906109e0565b60405180910390fd5b61021161020561021c60201b60201c565b8361022360201b60201c565b505050505050610aee565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028890610a48565b60405180910390fd5b6102a25f838361037560201b60201c565b8060025f8282546102b39190610a93565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546103059190610a93565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103699190610ad5565b60405180910390a35050565b505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6103d982610393565b810181811067ffffffffffffffff821117156103f8576103f76103a3565b5b80604052505050565b5f61040a61037a565b905061041682826103d0565b919050565b5f67ffffffffffffffff821115610435576104346103a3565b5b61043e82610393565b9050602081019050919050565b8281835e5f83830152505050565b5f61046b6104668461041b565b610401565b9050828152602081018484840111156104875761048661038f565b5b61049284828561044b565b509392505050565b5f82601f8301126104ae576104ad61038b565b5b81516104be848260208601610459565b91505092915050565b5f60ff82169050919050565b6104dc816104c7565b81146104e6575f80fd5b50565b5f815190506104f7816104d3565b92915050565b5f819050919050565b61050f816104fd565b8114610519575f80fd5b50565b5f8151905061052a81610506565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61055982610530565b9050919050565b6105698161054f565b8114610573575f80fd5b50565b5f8151905061058481610560565b92915050565b5f805f805f8060c087890312156105a4576105a3610383565b5b5f87015167ffffffffffffffff8111156105c1576105c0610387565b5b6105cd89828a0161049a565b965050602087015167ffffffffffffffff8111156105ee576105ed610387565b5b6105fa89828a0161049a565b955050604061060b89828a016104e9565b945050606061061c89828a0161051c565b935050608061062d89828a0161051c565b92505060a061063e89828a01610576565b9150509295509295509295565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061069957607f821691505b6020821081036106ac576106ab610655565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261070e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826106d3565b61071886836106d3565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61075361074e610749846104fd565b610730565b6104fd565b9050919050565b5f819050919050565b61076c83610739565b6107806107788261075a565b8484546106df565b825550505050565b5f90565b610794610788565b61079f818484610763565b505050565b5b818110156107c2576107b75f8261078c565b6001810190506107a5565b5050565b601f821115610807576107d8816106b2565b6107e1846106c4565b810160208510156107f0578190505b6108046107fc856106c4565b8301826107a4565b50505b505050565b5f82821c905092915050565b5f6108275f198460080261080c565b1980831691505092915050565b5f61083f8383610818565b9150826002028217905092915050565b6108588261064b565b67ffffffffffffffff811115610871576108706103a3565b5b61087b8254610682565b6108868282856107c6565b5f60209050601f8311600181146108b7575f84156108a5578287015190505b6108af8582610834565b865550610916565b601f1984166108c5866106b2565b5f5b828110156108ec578489015182556001820191506020850194506020810190506108c7565b868310156109095784890151610905601f891682610818565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332304361707065643a20636170206973203000000000000000000000005f82015250565b5f61096260158361091e565b915061096d8261092e565b602082019050919050565b5f6020820190508181035f83015261098f81610956565b9050919050565b7f45524332304361707065643a20436170206578636565646564000000000000005f82015250565b5f6109ca60198361091e565b91506109d582610996565b602082019050919050565b5f6020820190508181035f8301526109f7816109be565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610a32601f8361091e565b9150610a3d826109fe565b602082019050919050565b5f6020820190508181035f830152610a5f81610a26565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a9d826104fd565b9150610aa8836104fd565b9250828201905080821115610ac057610abf610a66565b5b92915050565b610acf816104fd565b82525050565b5f602082019050610ae85f830184610ac6565b92915050565b60805160a051612275610b0f5f395f6105ab01525f61117401526122755ff3fe608060405234801561000f575f80fd5b506004361061012a575f3560e01c806370a08231116100ab57806395d89b411161006f57806395d89b411461030a578063a457c2d714610328578063a9059cbb14610358578063dd62ed3e14610388578063f2fde38b146103b85761012a565b806370a082311461028c578063715018a6146102bc57806379cc6790146102c65780637d64bcb4146102e25780638da5cb5b146102ec5761012a565b8063313ce567116100f2578063313ce567146101e8578063355274ea14610206578063395093511461022457806340c10f191461025457806342966c68146102705761012a565b806305d2035b1461012e57806306fdde031461014c578063095ea7b31461016a57806318160ddd1461019a57806323b872dd146101b8575b5f80fd5b6101366103d4565b604051610143919061168f565b60405180910390f35b6101546103e9565b6040516101619190611718565b60405180910390f35b610184600480360381019061017f91906117c9565b610479565b604051610191919061168f565b60405180910390f35b6101a2610496565b6040516101af9190611816565b60405180910390f35b6101d260048036038101906101cd919061182f565b61049f565b6040516101df919061168f565b60405180910390f35b6101f061059a565b6040516101fd919061189a565b60405180910390f35b61020e6105a8565b60405161021b9190611816565b60405180910390f35b61023e600480360381019061023991906117c9565b6105cf565b60405161024b919061168f565b60405180910390f35b61026e600480360381019061026991906117c9565b610676565b005b61028a600480360381019061028591906118b3565b6106d3565b005b6102a660048036038101906102a191906118de565b6106e7565b6040516102b39190611816565b60405180910390f35b6102c461072c565b005b6102e060048036038101906102db91906117c9565b610867565b005b6102ea6108ea565b005b6102f4610943565b6040516103019190611918565b60405180910390f35b61031261096c565b60405161031f9190611718565b60405180910390f35b610342600480360381019061033d91906117c9565b6109fc565b60405161034f919061168f565b60405180910390f35b610372600480360381019061036d91906117c9565b610aeb565b60405161037f919061168f565b60405180910390f35b6103a2600480360381019061039d9190611931565b610b08565b6040516103af9190611816565b60405180910390f35b6103d260048036038101906103cd91906118de565b610b8a565b005b5f60055f9054906101000a900460ff16905090565b6060600380546103f89061199c565b80601f01602080910402602001604051908101604052809291908181526020018280546104249061199c565b801561046f5780601f106104465761010080835404028352916020019161046f565b820191905f5260205f20905b81548152906001019060200180831161045257829003601f168201915b5050505050905090565b5f61048c610485610d34565b8484610d3b565b6001905092915050565b5f600254905090565b5f6104ab848484610efe565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6104f2610d34565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056890611a3c565b60405180910390fd5b61058e8561057d610d34565b85846105899190611a87565b610d3b565b60019150509392505050565b5f6105a3611171565b905090565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f61066c6105db610d34565b848460015f6105e8610d34565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106679190611aba565b610d3b565b6001905092915050565b60055f9054906101000a900460ff16156106c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bc90611b5d565b60405180910390fd5b6106cf8282611198565b5050565b6106e46106de610d34565b82611222565b50565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610734610d34565b73ffffffffffffffffffffffffffffffffffffffff16610752610943565b73ffffffffffffffffffffffffffffffffffffffff16146107a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079f90611bc5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f61087983610874610d34565b610b08565b9050818110156108be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b590611c53565b60405180910390fd5b6108db836108ca610d34565b84846108d69190611a87565b610d3b565b6108e58383611222565b505050565b60055f9054906101000a900460ff1615610939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093090611b5d565b60405180910390fd5b6109416113ec565b565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461097b9061199c565b80601f01602080910402602001604051908101604052809291908181526020018280546109a79061199c565b80156109f25780601f106109c9576101008083540402835291602001916109f2565b820191905f5260205f20905b8154815290600101906020018083116109d557829003601f168201915b5050505050905090565b5f8060015f610a09610d34565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aba90611ce1565b60405180910390fd5b610ae0610ace610d34565b858584610adb9190611a87565b610d3b565b600191505092915050565b5f610afe610af7610d34565b8484610efe565b6001905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610b92610d34565b73ffffffffffffffffffffffffffffffffffffffff16610bb0610943565b73ffffffffffffffffffffffffffffffffffffffff1614610c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfd90611bc5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6b90611d6f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da090611dfd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e90611e8b565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ef19190611816565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6390611f19565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd190611fa7565b60405180910390fd5b610fe5838383611472565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f90612035565b60405180910390fd5b81816110749190611a87565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110ff9190611aba565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111639190611816565b60405180910390a350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b6111a0610d34565b73ffffffffffffffffffffffffffffffffffffffff166111be610943565b73ffffffffffffffffffffffffffffffffffffffff1614611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120b90611bc5565b60405180910390fd5b61121e8282611477565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611290576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611287906120c3565b60405180910390fd5b61129b825f83611472565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561131e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131590612151565b60405180910390fd5b818161132a9190611a87565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825461137b9190611a87565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113df9190611816565b60405180910390a3505050565b6113f4610d34565b73ffffffffffffffffffffffffffffffffffffffff16611412610943565b73ffffffffffffffffffffffffffffffffffffffff1614611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f90611bc5565b60405180910390fd5b6114706114e1565b565b505050565b61147f6105a8565b81611488610496565b6114929190611aba565b11156114d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ca906121b9565b60405180910390fd5b6114dd8282611529565b5050565b600160055f6101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e90612221565b60405180910390fd5b6115a25f8383611472565b8060025f8282546115b39190611aba565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546116059190611aba565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116699190611816565b60405180910390a35050565b5f8115159050919050565b61168981611675565b82525050565b5f6020820190506116a25f830184611680565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6116ea826116a8565b6116f481856116b2565b93506117048185602086016116c2565b61170d816116d0565b840191505092915050565b5f6020820190508181035f83015261173081846116e0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117658261173c565b9050919050565b6117758161175b565b811461177f575f80fd5b50565b5f813590506117908161176c565b92915050565b5f819050919050565b6117a881611796565b81146117b2575f80fd5b50565b5f813590506117c38161179f565b92915050565b5f80604083850312156117df576117de611738565b5b5f6117ec85828601611782565b92505060206117fd858286016117b5565b9150509250929050565b61181081611796565b82525050565b5f6020820190506118295f830184611807565b92915050565b5f805f6060848603121561184657611845611738565b5b5f61185386828701611782565b935050602061186486828701611782565b9250506040611875868287016117b5565b9150509250925092565b5f60ff82169050919050565b6118948161187f565b82525050565b5f6020820190506118ad5f83018461188b565b92915050565b5f602082840312156118c8576118c7611738565b5b5f6118d5848285016117b5565b91505092915050565b5f602082840312156118f3576118f2611738565b5b5f61190084828501611782565b91505092915050565b6119128161175b565b82525050565b5f60208201905061192b5f830184611909565b92915050565b5f806040838503121561194757611946611738565b5b5f61195485828601611782565b925050602061196585828601611782565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806119b357607f821691505b6020821081036119c6576119c561196f565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611a266028836116b2565b9150611a31826119cc565b604082019050919050565b5f6020820190508181035f830152611a5381611a1a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a9182611796565b9150611a9c83611796565b9250828203905081811115611ab457611ab3611a5a565b5b92915050565b5f611ac482611796565b9150611acf83611796565b9250828201905080821115611ae757611ae6611a5a565b5b92915050565b7f45524332304d696e7461626c653a204d696e74696e672069732066696e6973685f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f611b476022836116b2565b9150611b5282611aed565b604082019050919050565b5f6020820190508181035f830152611b7481611b3b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611baf6020836116b2565b9150611bba82611b7b565b602082019050919050565b5f6020820190508181035f830152611bdc81611ba3565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f775f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f611c3d6024836116b2565b9150611c4882611be3565b604082019050919050565b5f6020820190508181035f830152611c6a81611c31565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611ccb6025836116b2565b9150611cd682611c71565b604082019050919050565b5f6020820190508181035f830152611cf881611cbf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611d596026836116b2565b9150611d6482611cff565b604082019050919050565b5f6020820190508181035f830152611d8681611d4d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611de76024836116b2565b9150611df282611d8d565b604082019050919050565b5f6020820190508181035f830152611e1481611ddb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611e756022836116b2565b9150611e8082611e1b565b604082019050919050565b5f6020820190508181035f830152611ea281611e69565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611f036025836116b2565b9150611f0e82611ea9565b604082019050919050565b5f6020820190508181035f830152611f3081611ef7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611f916023836116b2565b9150611f9c82611f37565b604082019050919050565b5f6020820190508181035f830152611fbe81611f85565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61201f6026836116b2565b915061202a82611fc5565b604082019050919050565b5f6020820190508181035f83015261204c81612013565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6120ad6021836116b2565b91506120b882612053565b604082019050919050565b5f6020820190508181035f8301526120da816120a1565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f61213b6022836116b2565b9150612146826120e1565b604082019050919050565b5f6020820190508181035f8301526121688161212f565b9050919050565b7f45524332304361707065643a20636170206578636565646564000000000000005f82015250565b5f6121a36019836116b2565b91506121ae8261216f565b602082019050919050565b5f6020820190508181035f8301526121d081612197565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f61220b601f836116b2565b9150612216826121d7565b602082019050919050565b5f6020820190508181035f830152612238816121ff565b905091905056fea2646970667358221220c8d4d63dd4bc75d819f2a6dcc84dd5a9e1d1d80951b04565374fc3363de9301064736f6c634300081a003300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000000000000000000000000000001bc16d674ec80000000000000000000000000003a48b0b1d095ebee917bacd426d75d6cb35a82950000000000000000000000000000000000000000000000000000000000000009546574686572555344000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553445400000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061012a575f3560e01c806370a08231116100ab57806395d89b411161006f57806395d89b411461030a578063a457c2d714610328578063a9059cbb14610358578063dd62ed3e14610388578063f2fde38b146103b85761012a565b806370a082311461028c578063715018a6146102bc57806379cc6790146102c65780637d64bcb4146102e25780638da5cb5b146102ec5761012a565b8063313ce567116100f2578063313ce567146101e8578063355274ea14610206578063395093511461022457806340c10f191461025457806342966c68146102705761012a565b806305d2035b1461012e57806306fdde031461014c578063095ea7b31461016a57806318160ddd1461019a57806323b872dd146101b8575b5f80fd5b6101366103d4565b604051610143919061168f565b60405180910390f35b6101546103e9565b6040516101619190611718565b60405180910390f35b610184600480360381019061017f91906117c9565b610479565b604051610191919061168f565b60405180910390f35b6101a2610496565b6040516101af9190611816565b60405180910390f35b6101d260048036038101906101cd919061182f565b61049f565b6040516101df919061168f565b60405180910390f35b6101f061059a565b6040516101fd919061189a565b60405180910390f35b61020e6105a8565b60405161021b9190611816565b60405180910390f35b61023e600480360381019061023991906117c9565b6105cf565b60405161024b919061168f565b60405180910390f35b61026e600480360381019061026991906117c9565b610676565b005b61028a600480360381019061028591906118b3565b6106d3565b005b6102a660048036038101906102a191906118de565b6106e7565b6040516102b39190611816565b60405180910390f35b6102c461072c565b005b6102e060048036038101906102db91906117c9565b610867565b005b6102ea6108ea565b005b6102f4610943565b6040516103019190611918565b60405180910390f35b61031261096c565b60405161031f9190611718565b60405180910390f35b610342600480360381019061033d91906117c9565b6109fc565b60405161034f919061168f565b60405180910390f35b610372600480360381019061036d91906117c9565b610aeb565b60405161037f919061168f565b60405180910390f35b6103a2600480360381019061039d9190611931565b610b08565b6040516103af9190611816565b60405180910390f35b6103d260048036038101906103cd91906118de565b610b8a565b005b5f60055f9054906101000a900460ff16905090565b6060600380546103f89061199c565b80601f01602080910402602001604051908101604052809291908181526020018280546104249061199c565b801561046f5780601f106104465761010080835404028352916020019161046f565b820191905f5260205f20905b81548152906001019060200180831161045257829003601f168201915b5050505050905090565b5f61048c610485610d34565b8484610d3b565b6001905092915050565b5f600254905090565b5f6104ab848484610efe565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6104f2610d34565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056890611a3c565b60405180910390fd5b61058e8561057d610d34565b85846105899190611a87565b610d3b565b60019150509392505050565b5f6105a3611171565b905090565b5f7f00000000000000000000000000000000000000000000000001bc16d674ec8000905090565b5f61066c6105db610d34565b848460015f6105e8610d34565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106679190611aba565b610d3b565b6001905092915050565b60055f9054906101000a900460ff16156106c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bc90611b5d565b60405180910390fd5b6106cf8282611198565b5050565b6106e46106de610d34565b82611222565b50565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610734610d34565b73ffffffffffffffffffffffffffffffffffffffff16610752610943565b73ffffffffffffffffffffffffffffffffffffffff16146107a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079f90611bc5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f61087983610874610d34565b610b08565b9050818110156108be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b590611c53565b60405180910390fd5b6108db836108ca610d34565b84846108d69190611a87565b610d3b565b6108e58383611222565b505050565b60055f9054906101000a900460ff1615610939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093090611b5d565b60405180910390fd5b6109416113ec565b565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461097b9061199c565b80601f01602080910402602001604051908101604052809291908181526020018280546109a79061199c565b80156109f25780601f106109c9576101008083540402835291602001916109f2565b820191905f5260205f20905b8154815290600101906020018083116109d557829003601f168201915b5050505050905090565b5f8060015f610a09610d34565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aba90611ce1565b60405180910390fd5b610ae0610ace610d34565b858584610adb9190611a87565b610d3b565b600191505092915050565b5f610afe610af7610d34565b8484610efe565b6001905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610b92610d34565b73ffffffffffffffffffffffffffffffffffffffff16610bb0610943565b73ffffffffffffffffffffffffffffffffffffffff1614610c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfd90611bc5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6b90611d6f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da090611dfd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e90611e8b565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ef19190611816565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6390611f19565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd190611fa7565b60405180910390fd5b610fe5838383611472565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f90612035565b60405180910390fd5b81816110749190611a87565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110ff9190611aba565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111639190611816565b60405180910390a350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000006905090565b6111a0610d34565b73ffffffffffffffffffffffffffffffffffffffff166111be610943565b73ffffffffffffffffffffffffffffffffffffffff1614611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120b90611bc5565b60405180910390fd5b61121e8282611477565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611290576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611287906120c3565b60405180910390fd5b61129b825f83611472565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561131e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131590612151565b60405180910390fd5b818161132a9190611a87565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825461137b9190611a87565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113df9190611816565b60405180910390a3505050565b6113f4610d34565b73ffffffffffffffffffffffffffffffffffffffff16611412610943565b73ffffffffffffffffffffffffffffffffffffffff1614611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f90611bc5565b60405180910390fd5b6114706114e1565b565b505050565b61147f6105a8565b81611488610496565b6114929190611aba565b11156114d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ca906121b9565b60405180910390fd5b6114dd8282611529565b5050565b600160055f6101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e90612221565b60405180910390fd5b6115a25f8383611472565b8060025f8282546115b39190611aba565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546116059190611aba565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116699190611816565b60405180910390a35050565b5f8115159050919050565b61168981611675565b82525050565b5f6020820190506116a25f830184611680565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6116ea826116a8565b6116f481856116b2565b93506117048185602086016116c2565b61170d816116d0565b840191505092915050565b5f6020820190508181035f83015261173081846116e0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117658261173c565b9050919050565b6117758161175b565b811461177f575f80fd5b50565b5f813590506117908161176c565b92915050565b5f819050919050565b6117a881611796565b81146117b2575f80fd5b50565b5f813590506117c38161179f565b92915050565b5f80604083850312156117df576117de611738565b5b5f6117ec85828601611782565b92505060206117fd858286016117b5565b9150509250929050565b61181081611796565b82525050565b5f6020820190506118295f830184611807565b92915050565b5f805f6060848603121561184657611845611738565b5b5f61185386828701611782565b935050602061186486828701611782565b9250506040611875868287016117b5565b9150509250925092565b5f60ff82169050919050565b6118948161187f565b82525050565b5f6020820190506118ad5f83018461188b565b92915050565b5f602082840312156118c8576118c7611738565b5b5f6118d5848285016117b5565b91505092915050565b5f602082840312156118f3576118f2611738565b5b5f61190084828501611782565b91505092915050565b6119128161175b565b82525050565b5f60208201905061192b5f830184611909565b92915050565b5f806040838503121561194757611946611738565b5b5f61195485828601611782565b925050602061196585828601611782565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806119b357607f821691505b6020821081036119c6576119c561196f565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611a266028836116b2565b9150611a31826119cc565b604082019050919050565b5f6020820190508181035f830152611a5381611a1a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a9182611796565b9150611a9c83611796565b9250828203905081811115611ab457611ab3611a5a565b5b92915050565b5f611ac482611796565b9150611acf83611796565b9250828201905080821115611ae757611ae6611a5a565b5b92915050565b7f45524332304d696e7461626c653a204d696e74696e672069732066696e6973685f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f611b476022836116b2565b9150611b5282611aed565b604082019050919050565b5f6020820190508181035f830152611b7481611b3b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611baf6020836116b2565b9150611bba82611b7b565b602082019050919050565b5f6020820190508181035f830152611bdc81611ba3565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f775f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f611c3d6024836116b2565b9150611c4882611be3565b604082019050919050565b5f6020820190508181035f830152611c6a81611c31565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611ccb6025836116b2565b9150611cd682611c71565b604082019050919050565b5f6020820190508181035f830152611cf881611cbf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611d596026836116b2565b9150611d6482611cff565b604082019050919050565b5f6020820190508181035f830152611d8681611d4d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611de76024836116b2565b9150611df282611d8d565b604082019050919050565b5f6020820190508181035f830152611e1481611ddb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611e756022836116b2565b9150611e8082611e1b565b604082019050919050565b5f6020820190508181035f830152611ea281611e69565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611f036025836116b2565b9150611f0e82611ea9565b604082019050919050565b5f6020820190508181035f830152611f3081611ef7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611f916023836116b2565b9150611f9c82611f37565b604082019050919050565b5f6020820190508181035f830152611fbe81611f85565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61201f6026836116b2565b915061202a82611fc5565b604082019050919050565b5f6020820190508181035f83015261204c81612013565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6120ad6021836116b2565b91506120b882612053565b604082019050919050565b5f6020820190508181035f8301526120da816120a1565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f61213b6022836116b2565b9150612146826120e1565b604082019050919050565b5f6020820190508181035f8301526121688161212f565b9050919050565b7f45524332304361707065643a20636170206578636565646564000000000000005f82015250565b5f6121a36019836116b2565b91506121ae8261216f565b602082019050919050565b5f6020820190508181035f8301526121d081612197565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f61220b601f836116b2565b9150612216826121d7565b602082019050919050565b5f6020820190508181035f830152612238816121ff565b905091905056fea2646970667358221220c8d4d63dd4bc75d819f2a6dcc84dd5a9e1d1d80951b04565374fc3363de9301064736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000000000000000000000000000001bc16d674ec80000000000000000000000000003a48b0b1d095ebee917bacd426d75d6cb35a82950000000000000000000000000000000000000000000000000000000000000009546574686572555344000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553445400000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): TetherUSD
Arg [1] : symbol_ (string): USDT
Arg [2] : decimals_ (uint8): 6
Arg [3] : cap_ (uint256): 125000000000000000
Arg [4] : initialBalance_ (uint256): 125000000000000000
Arg [5] : feeReceiver_ (address): 0x3A48B0B1D095EBEe917Bacd426D75d6CB35a8295
-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [3] : 00000000000000000000000000000000000000000000000001bc16d674ec8000
Arg [4] : 00000000000000000000000000000000000000000000000001bc16d674ec8000
Arg [5] : 0000000000000000000000003a48b0b1d095ebee917bacd426d75d6cb35a8295
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [7] : 5465746865725553440000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [9] : 5553445400000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
21931:1557:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16352:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6267:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8434:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7387:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9085:456;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22675:129;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18142:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9950:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16762:105;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18876:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7558:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21283:148;;;:::i;:::-;;19286:332;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17060:77;;;:::i;:::-;;20632:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6486:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10668:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7898:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8136:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21586:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16352:98;16402:4;16426:16;;;;;;;;;;;16419:23;;16352:98;:::o;6267:100::-;6321:13;6354:5;6347:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6267:100;:::o;8434:169::-;8517:4;8534:39;8543:12;:10;:12::i;:::-;8557:7;8566:6;8534:8;:39::i;:::-;8591:4;8584:11;;8434:169;;;;:::o;7387:108::-;7448:7;7475:12;;7468:19;;7387:108;:::o;9085:456::-;9225:4;9242:36;9252:6;9260:9;9271:6;9242:9;:36::i;:::-;9291:24;9318:11;:19;9330:6;9318:19;;;;;;;;;;;;;;;:33;9338:12;:10;:12::i;:::-;9318:33;;;;;;;;;;;;;;;;9291:60;;9390:6;9370:16;:26;;9362:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9452:57;9461:6;9469:12;:10;:12::i;:::-;9502:6;9483:16;:25;;;;:::i;:::-;9452:8;:57::i;:::-;9529:4;9522:11;;;9085:456;;;;;:::o;22675:129::-;22755:5;22780:16;:14;:16::i;:::-;22773:23;;22675:129;:::o;18142:83::-;18186:7;18213:4;18206:11;;18142:83;:::o;9950:215::-;10038:4;10055:80;10064:12;:10;:12::i;:::-;10078:7;10124:10;10087:11;:25;10099:12;:10;:12::i;:::-;10087:25;;;;;;;;;;;;;;;:34;10113:7;10087:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10055:8;:80::i;:::-;10153:4;10146:11;;9950:215;;;;:::o;16762:105::-;16204:16;;;;;;;;;;;16203:17;16195:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16837:22:::1;16843:7;16852:6;16837:5;:22::i;:::-;16762:105:::0;;:::o;18876:91::-;18932:27;18938:12;:10;:12::i;:::-;18952:6;18932:5;:27::i;:::-;18876:91;:::o;7558:127::-;7632:7;7659:9;:18;7669:7;7659:18;;;;;;;;;;;;;;;;7652:25;;7558:127;;;:::o;21283:148::-;20863:12;:10;:12::i;:::-;20852:23;;:7;:5;:7::i;:::-;:23;;;20844:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21390:1:::1;21353:40;;21374:6;;;;;;;;;;;21353:40;;;;;;;;;;;;21421:1;21404:6;;:19;;;;;;;;;;;;;;;;;;21283:148::o:0;19286:332::-;19363:24;19390:32;19400:7;19409:12;:10;:12::i;:::-;19390:9;:32::i;:::-;19363:59;;19461:6;19441:16;:26;;19433:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;19519:58;19528:7;19537:12;:10;:12::i;:::-;19570:6;19551:16;:25;;;;:::i;:::-;19519:8;:58::i;:::-;19588:22;19594:7;19603:6;19588:5;:22::i;:::-;19352:266;19286:332;;:::o;17060:77::-;16204:16;;;;;;;;;;;16203:17;16195:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17113:16:::1;:14;:16::i;:::-;17060:77::o:0;20632:87::-;20678:7;20705:6;;;;;;;;;;;20698:13;;20632:87;:::o;6486:104::-;6542:13;6575:7;6568:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6486:104;:::o;10668:377::-;10761:4;10778:24;10805:11;:25;10817:12;:10;:12::i;:::-;10805:25;;;;;;;;;;;;;;;:34;10831:7;10805:34;;;;;;;;;;;;;;;;10778:61;;10878:15;10858:16;:35;;10850:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10946:67;10955:12;:10;:12::i;:::-;10969:7;10997:15;10978:16;:34;;;;:::i;:::-;10946:8;:67::i;:::-;11033:4;11026:11;;;10668:377;;;;:::o;7898:175::-;7984:4;8001:42;8011:12;:10;:12::i;:::-;8025:9;8036:6;8001:9;:42::i;:::-;8061:4;8054:11;;7898:175;;;;:::o;8136:151::-;8225:7;8252:11;:18;8264:5;8252:18;;;;;;;;;;;;;;;:27;8271:7;8252:27;;;;;;;;;;;;;;;;8245:34;;8136:151;;;;:::o;21586:244::-;20863:12;:10;:12::i;:::-;20852:23;;:7;:5;:7::i;:::-;:23;;;20844:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21695:1:::1;21675:22;;:8;:22;;::::0;21667:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21785:8;21756:38;;21777:6;;;;;;;;;;;21756:38;;;;;;;;;;;;21814:8;21805:6;;:17;;;;;;;;;;;;;;;;;;21586:244:::0;:::o;3953:98::-;4006:7;4033:10;4026:17;;3953:98;:::o;14058:380::-;14211:1;14194:19;;:5;:19;;;14186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14292:1;14273:21;;:7;:21;;;14265:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14376:6;14346:11;:18;14358:5;14346:18;;;;;;;;;;;;;;;:27;14365:7;14346:27;;;;;;;;;;;;;;;:36;;;;14414:7;14398:32;;14407:5;14398:32;;;14423:6;14398:32;;;;;;:::i;:::-;;;;;;;;14058:380;;;:::o;11535:638::-;11693:1;11675:20;;:6;:20;;;11667:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11777:1;11756:23;;:9;:23;;;11748:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11832:47;11853:6;11861:9;11872:6;11832:20;:47::i;:::-;11892:21;11916:9;:17;11926:6;11916:17;;;;;;;;;;;;;;;;11892:41;;11969:6;11952:13;:23;;11944:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12065:6;12049:13;:22;;;;:::i;:::-;12029:9;:17;12039:6;12029:17;;;;;;;;;;;;;;;:42;;;;12106:6;12082:9;:20;12092:9;12082:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12147:9;12130:35;;12139:6;12130:35;;;12158:6;12130:35;;;;;;:::i;:::-;;;;;;;;11656:517;11535:638;;;:::o;15618:100::-;15676:5;15701:9;15694:16;;15618:100;:::o;23080:143::-;20863:12;:10;:12::i;:::-;20852:23;;:7;:5;:7::i;:::-;:23;;;20844:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23187:28:::1;23199:7;23208:6;23187:11;:28::i;:::-;23080:143:::0;;:::o;13126:494::-;13229:1;13210:21;;:7;:21;;;13202:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13282:49;13303:7;13320:1;13324:6;13282:20;:49::i;:::-;13344:22;13369:9;:18;13379:7;13369:18;;;;;;;;;;;;;;;;13344:43;;13424:6;13406:14;:24;;13398:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13518:6;13501:14;:23;;;;:::i;:::-;13480:9;:18;13490:7;13480:18;;;;;;;;;;;;;;;:44;;;;13551:6;13535:12;;:22;;;;;;;:::i;:::-;;;;;;;;13601:1;13575:37;;13584:7;13575:37;;;13605:6;13575:37;;;;;;:::i;:::-;;;;;;;;13191:429;13126:494;;:::o;23390:95::-;20863:12;:10;:12::i;:::-;20852:23;;:7;:5;:7::i;:::-;:23;;;20844:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23455:22:::1;:20;:22::i;:::-;23390:95::o:0;15041:125::-;;;;:::o;18283:207::-;18408:5;:3;:5::i;:::-;18398:6;18376:19;:17;:19::i;:::-;:28;;;;:::i;:::-;:37;;18368:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;18454:28;18466:7;18475:6;18454:11;:28::i;:::-;18283:207;;:::o;17213:117::-;17286:4;17267:16;;:23;;;;;;;;;;;;;;;;;;17308:14;;;;;;;;;;17213:117::o;12455:338::-;12558:1;12539:21;;:7;:21;;;12531:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12609:49;12638:1;12642:7;12651:6;12609:20;:49::i;:::-;12687:6;12671:12;;:22;;;;;;;:::i;:::-;;;;;;;;12726:6;12704:9;:18;12714:7;12704:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;12769:7;12748:37;;12765:1;12748:37;;;12778:6;12748:37;;;;;;:::i;:::-;;;;;;;;12455:338;;:::o;7:90:1:-;41:7;84:5;77:13;70:21;59:32;;7:90;;;:::o;103:109::-;184:21;199:5;184:21;:::i;:::-;179:3;172:34;103:109;;:::o;218:210::-;305:4;343:2;332:9;328:18;320:26;;356:65;418:1;407:9;403:17;394:6;356:65;:::i;:::-;218:210;;;;:::o;434:99::-;486:6;520:5;514:12;504:22;;434:99;;;:::o;539:169::-;623:11;657:6;652:3;645:19;697:4;692:3;688:14;673:29;;539:169;;;;:::o;714:139::-;803:6;798:3;793;787:23;844:1;835:6;830:3;826:16;819:27;714:139;;;:::o;859:102::-;900:6;951:2;947:7;942:2;935:5;931:14;927:28;917:38;;859:102;;;:::o;967:377::-;1055:3;1083:39;1116:5;1083:39;:::i;:::-;1138:71;1202:6;1197:3;1138:71;:::i;:::-;1131:78;;1218:65;1276:6;1271:3;1264:4;1257:5;1253:16;1218:65;:::i;:::-;1308:29;1330:6;1308:29;:::i;:::-;1303:3;1299:39;1292:46;;1059:285;967:377;;;;:::o;1350:313::-;1463:4;1501:2;1490:9;1486:18;1478:26;;1550:9;1544:4;1540:20;1536:1;1525:9;1521:17;1514:47;1578:78;1651:4;1642:6;1578:78;:::i;:::-;1570:86;;1350:313;;;;:::o;1750:117::-;1859:1;1856;1849:12;1996:126;2033:7;2073:42;2066:5;2062:54;2051:65;;1996:126;;;:::o;2128:96::-;2165:7;2194:24;2212:5;2194:24;:::i;:::-;2183:35;;2128:96;;;:::o;2230:122::-;2303:24;2321:5;2303:24;:::i;:::-;2296:5;2293:35;2283:63;;2342:1;2339;2332:12;2283:63;2230:122;:::o;2358:139::-;2404:5;2442:6;2429:20;2420:29;;2458:33;2485:5;2458:33;:::i;:::-;2358:139;;;;:::o;2503:77::-;2540:7;2569:5;2558:16;;2503:77;;;:::o;2586:122::-;2659:24;2677:5;2659:24;:::i;:::-;2652:5;2649:35;2639:63;;2698:1;2695;2688:12;2639:63;2586:122;:::o;2714:139::-;2760:5;2798:6;2785:20;2776:29;;2814:33;2841:5;2814:33;:::i;:::-;2714:139;;;;:::o;2859:474::-;2927:6;2935;2984:2;2972:9;2963:7;2959:23;2955:32;2952:119;;;2990:79;;:::i;:::-;2952:119;3110:1;3135:53;3180:7;3171:6;3160:9;3156:22;3135:53;:::i;:::-;3125:63;;3081:117;3237:2;3263:53;3308:7;3299:6;3288:9;3284:22;3263:53;:::i;:::-;3253:63;;3208:118;2859:474;;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:::-;5140:6;5189:2;5177:9;5168:7;5164:23;5160:32;5157:119;;;5195:79;;:::i;:::-;5157:119;5315:1;5340:53;5385:7;5376:6;5365:9;5361:22;5340:53;:::i;:::-;5330:63;;5286:117;5081:329;;;;:::o;5416:118::-;5503:24;5521:5;5503:24;:::i;:::-;5498:3;5491:37;5416:118;;:::o;5540:222::-;5633:4;5671:2;5660:9;5656:18;5648:26;;5684:71;5752:1;5741:9;5737:17;5728:6;5684:71;:::i;:::-;5540:222;;;;:::o;5768:474::-;5836:6;5844;5893:2;5881:9;5872:7;5868:23;5864:32;5861:119;;;5899:79;;:::i;:::-;5861:119;6019:1;6044:53;6089:7;6080:6;6069:9;6065:22;6044:53;:::i;:::-;6034:63;;5990:117;6146:2;6172:53;6217:7;6208:6;6197:9;6193:22;6172:53;:::i;:::-;6162:63;;6117:118;5768:474;;;;;:::o;6248:180::-;6296:77;6293:1;6286:88;6393:4;6390:1;6383:15;6417:4;6414:1;6407:15;6434:320;6478:6;6515:1;6509:4;6505:12;6495:22;;6562:1;6556:4;6552:12;6583:18;6573:81;;6639:4;6631:6;6627:17;6617:27;;6573:81;6701:2;6693:6;6690:14;6670:18;6667:38;6664:84;;6720:18;;:::i;:::-;6664:84;6485:269;6434:320;;;:::o;6760:227::-;6900:34;6896:1;6888:6;6884:14;6877:58;6969:10;6964:2;6956:6;6952:15;6945:35;6760:227;:::o;6993:366::-;7135:3;7156:67;7220:2;7215:3;7156:67;:::i;:::-;7149:74;;7232:93;7321:3;7232:93;:::i;:::-;7350:2;7345:3;7341:12;7334:19;;6993:366;;;:::o;7365:419::-;7531:4;7569:2;7558:9;7554:18;7546:26;;7618:9;7612:4;7608:20;7604:1;7593:9;7589:17;7582:47;7646:131;7772:4;7646:131;:::i;:::-;7638:139;;7365:419;;;:::o;7790:180::-;7838:77;7835:1;7828:88;7935:4;7932:1;7925:15;7959:4;7956:1;7949:15;7976:194;8016:4;8036:20;8054:1;8036:20;:::i;:::-;8031:25;;8070:20;8088:1;8070:20;:::i;:::-;8065:25;;8114:1;8111;8107:9;8099:17;;8138:1;8132:4;8129:11;8126:37;;;8143:18;;:::i;:::-;8126:37;7976:194;;;;:::o;8176:191::-;8216:3;8235:20;8253:1;8235:20;:::i;:::-;8230:25;;8269:20;8287:1;8269:20;:::i;:::-;8264:25;;8312:1;8309;8305:9;8298:16;;8333:3;8330:1;8327:10;8324:36;;;8340:18;;:::i;:::-;8324:36;8176:191;;;;:::o;8373:221::-;8513:34;8509:1;8501:6;8497:14;8490:58;8582:4;8577:2;8569:6;8565:15;8558:29;8373:221;:::o;8600:366::-;8742:3;8763:67;8827:2;8822:3;8763:67;:::i;:::-;8756:74;;8839:93;8928:3;8839:93;:::i;:::-;8957:2;8952:3;8948:12;8941:19;;8600:366;;;:::o;8972:419::-;9138:4;9176:2;9165:9;9161:18;9153:26;;9225:9;9219:4;9215:20;9211:1;9200:9;9196:17;9189:47;9253:131;9379:4;9253:131;:::i;:::-;9245:139;;8972:419;;;:::o;9397:182::-;9537:34;9533:1;9525:6;9521:14;9514:58;9397:182;:::o;9585:366::-;9727:3;9748:67;9812:2;9807:3;9748:67;:::i;:::-;9741:74;;9824:93;9913:3;9824:93;:::i;:::-;9942:2;9937:3;9933:12;9926:19;;9585:366;;;:::o;9957:419::-;10123:4;10161:2;10150:9;10146:18;10138:26;;10210:9;10204:4;10200:20;10196:1;10185:9;10181:17;10174:47;10238:131;10364:4;10238:131;:::i;:::-;10230:139;;9957:419;;;:::o;10382:223::-;10522:34;10518:1;10510:6;10506:14;10499:58;10591:6;10586:2;10578:6;10574:15;10567:31;10382:223;:::o;10611:366::-;10753:3;10774:67;10838:2;10833:3;10774:67;:::i;:::-;10767:74;;10850:93;10939:3;10850:93;:::i;:::-;10968:2;10963:3;10959:12;10952:19;;10611:366;;;:::o;10983:419::-;11149:4;11187:2;11176:9;11172:18;11164:26;;11236:9;11230:4;11226:20;11222:1;11211:9;11207:17;11200:47;11264:131;11390:4;11264:131;:::i;:::-;11256:139;;10983:419;;;:::o;11408:224::-;11548:34;11544:1;11536:6;11532:14;11525:58;11617:7;11612:2;11604:6;11600:15;11593:32;11408:224;:::o;11638:366::-;11780:3;11801:67;11865:2;11860:3;11801:67;:::i;:::-;11794:74;;11877:93;11966:3;11877:93;:::i;:::-;11995:2;11990:3;11986:12;11979:19;;11638:366;;;:::o;12010:419::-;12176:4;12214:2;12203:9;12199:18;12191:26;;12263:9;12257:4;12253:20;12249:1;12238:9;12234:17;12227:47;12291:131;12417:4;12291:131;:::i;:::-;12283:139;;12010:419;;;:::o;12435:225::-;12575:34;12571:1;12563:6;12559:14;12552:58;12644:8;12639:2;12631:6;12627:15;12620:33;12435:225;:::o;12666:366::-;12808:3;12829:67;12893:2;12888:3;12829:67;:::i;:::-;12822:74;;12905:93;12994:3;12905:93;:::i;:::-;13023:2;13018:3;13014:12;13007:19;;12666:366;;;:::o;13038:419::-;13204:4;13242:2;13231:9;13227:18;13219:26;;13291:9;13285:4;13281:20;13277:1;13266:9;13262:17;13255:47;13319:131;13445:4;13319:131;:::i;:::-;13311:139;;13038:419;;;:::o;13463:223::-;13603:34;13599:1;13591:6;13587:14;13580:58;13672:6;13667:2;13659:6;13655:15;13648:31;13463:223;:::o;13692:366::-;13834:3;13855:67;13919:2;13914:3;13855:67;:::i;:::-;13848:74;;13931:93;14020:3;13931:93;:::i;:::-;14049:2;14044:3;14040:12;14033:19;;13692:366;;;:::o;14064:419::-;14230:4;14268:2;14257:9;14253:18;14245:26;;14317:9;14311:4;14307:20;14303:1;14292:9;14288:17;14281:47;14345:131;14471:4;14345:131;:::i;:::-;14337:139;;14064:419;;;:::o;14489:221::-;14629:34;14625:1;14617:6;14613:14;14606:58;14698:4;14693:2;14685:6;14681:15;14674:29;14489:221;:::o;14716:366::-;14858:3;14879:67;14943:2;14938:3;14879:67;:::i;:::-;14872:74;;14955:93;15044:3;14955:93;:::i;:::-;15073:2;15068:3;15064:12;15057:19;;14716:366;;;:::o;15088:419::-;15254:4;15292:2;15281:9;15277:18;15269:26;;15341:9;15335:4;15331:20;15327:1;15316:9;15312:17;15305:47;15369:131;15495:4;15369:131;:::i;:::-;15361:139;;15088:419;;;:::o;15513:224::-;15653:34;15649:1;15641:6;15637:14;15630:58;15722:7;15717:2;15709:6;15705:15;15698:32;15513:224;:::o;15743:366::-;15885:3;15906:67;15970:2;15965:3;15906:67;:::i;:::-;15899:74;;15982:93;16071:3;15982:93;:::i;:::-;16100:2;16095:3;16091:12;16084:19;;15743:366;;;:::o;16115:419::-;16281:4;16319:2;16308:9;16304:18;16296:26;;16368:9;16362:4;16358:20;16354:1;16343:9;16339:17;16332:47;16396:131;16522:4;16396:131;:::i;:::-;16388:139;;16115:419;;;:::o;16540:222::-;16680:34;16676:1;16668:6;16664:14;16657:58;16749:5;16744:2;16736:6;16732:15;16725:30;16540:222;:::o;16768:366::-;16910:3;16931:67;16995:2;16990:3;16931:67;:::i;:::-;16924:74;;17007:93;17096:3;17007:93;:::i;:::-;17125:2;17120:3;17116:12;17109:19;;16768:366;;;:::o;17140:419::-;17306:4;17344:2;17333:9;17329:18;17321:26;;17393:9;17387:4;17383:20;17379:1;17368:9;17364:17;17357:47;17421:131;17547:4;17421:131;:::i;:::-;17413:139;;17140:419;;;:::o;17565:225::-;17705:34;17701:1;17693:6;17689:14;17682:58;17774:8;17769:2;17761:6;17757:15;17750:33;17565:225;:::o;17796:366::-;17938:3;17959:67;18023:2;18018:3;17959:67;:::i;:::-;17952:74;;18035:93;18124:3;18035:93;:::i;:::-;18153:2;18148:3;18144:12;18137:19;;17796:366;;;:::o;18168:419::-;18334:4;18372:2;18361:9;18357:18;18349:26;;18421:9;18415:4;18411:20;18407:1;18396:9;18392:17;18385:47;18449:131;18575:4;18449:131;:::i;:::-;18441:139;;18168:419;;;:::o;18593:220::-;18733:34;18729:1;18721:6;18717:14;18710:58;18802:3;18797:2;18789:6;18785:15;18778:28;18593:220;:::o;18819:366::-;18961:3;18982:67;19046:2;19041:3;18982:67;:::i;:::-;18975:74;;19058:93;19147:3;19058:93;:::i;:::-;19176:2;19171:3;19167:12;19160:19;;18819:366;;;:::o;19191:419::-;19357:4;19395:2;19384:9;19380:18;19372:26;;19444:9;19438:4;19434:20;19430:1;19419:9;19415:17;19408:47;19472:131;19598:4;19472:131;:::i;:::-;19464:139;;19191:419;;;:::o;19616:221::-;19756:34;19752:1;19744:6;19740:14;19733:58;19825:4;19820:2;19812:6;19808:15;19801:29;19616:221;:::o;19843:366::-;19985:3;20006:67;20070:2;20065:3;20006:67;:::i;:::-;19999:74;;20082:93;20171:3;20082:93;:::i;:::-;20200:2;20195:3;20191:12;20184:19;;19843:366;;;:::o;20215:419::-;20381:4;20419:2;20408:9;20404:18;20396:26;;20468:9;20462:4;20458:20;20454:1;20443:9;20439:17;20432:47;20496:131;20622:4;20496:131;:::i;:::-;20488:139;;20215:419;;;:::o;20640:175::-;20780:27;20776:1;20768:6;20764:14;20757:51;20640:175;:::o;20821:366::-;20963:3;20984:67;21048:2;21043:3;20984:67;:::i;:::-;20977:74;;21060:93;21149:3;21060:93;:::i;:::-;21178:2;21173:3;21169:12;21162:19;;20821:366;;;:::o;21193:419::-;21359:4;21397:2;21386:9;21382:18;21374:26;;21446:9;21440:4;21436:20;21432:1;21421:9;21417:17;21410:47;21474:131;21600:4;21474:131;:::i;:::-;21466:139;;21193:419;;;:::o;21618:181::-;21758:33;21754:1;21746:6;21742:14;21735:57;21618:181;:::o;21805:366::-;21947:3;21968:67;22032:2;22027:3;21968:67;:::i;:::-;21961:74;;22044:93;22133:3;22044:93;:::i;:::-;22162:2;22157:3;22153:12;22146:19;;21805:366;;;:::o;22177:419::-;22343:4;22381:2;22370:9;22366:18;22358:26;;22430:9;22424:4;22420:20;22416:1;22405:9;22401:17;22394:47;22458:131;22584:4;22458:131;:::i;:::-;22450:139;;22177:419;;;:::o
Swarm Source
ipfs://c8d4d63dd4bc75d819f2a6dcc84dd5a9e1d1d80951b04565374fc3363de93010
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.