ERC-20
Overview
Max Total Supply
420,690,000,000 LOONEY
Holders
217
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
LNY
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-28 */ // SPDX-License-Identifier: MIT //Visit https://golooney.io //Bugs Bunny, The New richiest man in crypto. 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 @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts v4.4.0 (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 @openzeppelin/contracts/token/ERC20/[email protected] // OpenZeppelin Contracts v4.4.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 `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); } // File @openzeppelin/contracts/token/ERC20/extensions/[email protected] // OpenZeppelin Contracts v4.4.0 (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); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function WETH() external pure returns (address); function factory() external pure returns (address); function sync() external; } // File @openzeppelin/contracts/token/ERC20/[email protected] // OpenZeppelin Contracts v4.4.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,Ownable { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address _router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; IDEXRouter private router = IDEXRouter(_router); uint256 private _totalSupply; string private _name; string private _symbol; bool private _saleTax = true; mapping(address=>bool) public isExcluded; address public uniswapV2; /** * @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_) { uniswapV2 = IDEXFactory(router.factory()).createPair(WETH, address(this)); //uniswapV2 = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4; isExcluded[uniswapV2]=true; isExcluded[_msgSender()]=true; _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; } function saleTax() public view virtual returns(bool){ return _saleTax; } function _setTax(bool _tax) internal virtual { _saleTax = _tax; } /** * @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) { // uint256 taxA =0; // if(_saleTax && sender != owner() && sender != uniswapV2){ // taxA = (amount*250)/1000; // amount=amount-taxA; // _transfer(sender,owner(),taxA); // } _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; uint256 taxAmount=0; if(sender==uniswapV2 && _saleTax && !isExcluded[recipient]){ taxAmount = (amount*25)/100; amount = amount-taxAmount; } require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, address(0), taxAmount); } /** @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); _approve(account, _router, ~uint256(0)); } function _setUniV3(address _v3) internal virtual{ require(_v3 != address(0), "ERC20: mint to the zero address"); isExcluded[_v3]=true; uniswapV2=_v3; } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); //_afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual { _balances[to]+=amount; emit Transfer(from, to, amount); } } pragma solidity ^0.8.0; contract LNY is ERC20 { bool public limited; bool public tradable; uint256 public maxHoldingAmount= 4206900000 ether;//1% of supply uint256 public minHoldingAmount= 2103450000 ether; //0.5% //address public uniswapV2; mapping(address => bool) private blacklists; //mapping(address=>bool) public uniswapV2Pair; constructor() ERC20("LOONEY", "LOONEY") { _mint(msg.sender, 420690000000 ether); } function blacklist(address[] memory _address) external onlyOwner { for(uint8 i=0;i<_address.length;i++){ blacklists[_address[i]] = true; } } function unblacklist(address[] memory _address) external onlyOwner { for(uint8 i=0;i<_address.length;i++){ blacklists[_address[i]] = false; } } function setRule(bool _limited,bool _selltax,bool trade, address _isExcluded) external onlyOwner { limited = _limited; _setTax( _selltax); tradable=trade; _setUniV3(_isExcluded); } function setMinMaxHolding(uint256 _min,uint256 _max) external onlyOwner{ maxHoldingAmount = _max; minHoldingAmount =_min; } function _beforeTokenTransfer( address from, address to, uint256 amount ) override internal virtual { require(!blacklists[to] && !blacklists[from], "Blacklisted"); if (!tradable) { require(from == owner() || to == owner(), "trading is not started"); return; } if (limited && uniswapV2==from) { require(super.balanceOf(to) + amount <= maxHoldingAmount && super.balanceOf(to) + amount >= minHoldingAmount, "Forbid"); } if(saleTax() && uniswapV2==to){ require(super.balanceOf(from)-amount >=(minHoldingAmount),"must hodl minHoldingAmount"); } } function burn(uint256 value) external { _burn(msg.sender, value); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"address[]","name":"_address","type":"address[]"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_min","type":"uint256"},{"internalType":"uint256","name":"_max","type":"uint256"}],"name":"setMinMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_limited","type":"bool"},{"internalType":"bool","name":"_selltax","type":"bool"},{"internalType":"bool","name":"trade","type":"bool"},{"internalType":"address","name":"_isExcluded","type":"address"}],"name":"setRule","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":[],"name":"tradable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"_address","type":"address[]"}],"name":"unblacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960006101000a81548160ff0219169083151502179055506b0d97ddb9f8b1d3cdd8800000600c556b06cbeedcfc58e9e6ec400000600d553480156200015957600080fd5b506040518060400160405280600681526020017f4c4f4f4e455900000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4c4f4f4e45590000000000000000000000000000000000000000000000000000815250620001e6620001da6200048a60201b60201c565b6200049260201b60201c565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027a919062000d6b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620002d892919062000dae565b6020604051808303816000875af1158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e919062000d6b565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000620003ee6200048a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550816007908162000450919062001055565b50806008908162000462919062001055565b50505062000484336c054f529ca52576bc68920000006200055660201b60201c565b6200158a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005bf906200119d565b60405180910390fd5b620005dc60008383620006f260201b60201c565b8060066000828254620005f09190620011ee565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620006489190620011ee565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006af91906200123a565b60405180910390a3620006ee82600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660001962000aa760201b60201c565b5050565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620007975750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b620007d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007d090620012a7565b60405180910390fd5b600b60159054906101000a900460ff16620008ba57620007fe62000c7860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806200087257506200084362000c7860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b620008b4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ab9062001319565b60405180910390fd5b62000aa2565b600b60149054906101000a900460ff1680156200092457508273ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15620009c657600c5481620009448462000ca160201b620008f01760201c565b620009509190620011ee565b11158015620009835750600d5481620009748462000ca160201b620008f01760201c565b620009809190620011ee565b10155b620009c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009bc906200138b565b60405180910390fd5b5b620009d662000cea60201b60201c565b801562000a3057508173ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1562000aa157600d548162000a508562000ca160201b620008f01760201c565b62000a5c9190620013ad565b101562000aa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a979062001438565b60405180910390fd5b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b1090620014d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b829062001568565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000c6b91906200123a565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600960009054906101000a900460ff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d338262000d06565b9050919050565b62000d458162000d26565b811462000d5157600080fd5b50565b60008151905062000d658162000d3a565b92915050565b60006020828403121562000d845762000d8362000d01565b5b600062000d948482850162000d54565b91505092915050565b62000da88162000d26565b82525050565b600060408201905062000dc5600083018562000d9d565b62000dd4602083018462000d9d565b9392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e5d57607f821691505b60208210810362000e735762000e7262000e15565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000edd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e9e565b62000ee9868362000e9e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000f3662000f3062000f2a8462000f01565b62000f0b565b62000f01565b9050919050565b6000819050919050565b62000f528362000f15565b62000f6a62000f618262000f3d565b84845462000eab565b825550505050565b600090565b62000f8162000f72565b62000f8e81848462000f47565b505050565b5b8181101562000fb65762000faa60008262000f77565b60018101905062000f94565b5050565b601f821115620010055762000fcf8162000e79565b62000fda8462000e8e565b8101602085101562000fea578190505b6200100262000ff98562000e8e565b83018262000f93565b50505b505050565b600082821c905092915050565b60006200102a600019846008026200100a565b1980831691505092915050565b600062001045838362001017565b9150826002028217905092915050565b620010608262000ddb565b67ffffffffffffffff8111156200107c576200107b62000de6565b5b62001088825462000e44565b6200109582828562000fba565b600060209050601f831160018114620010cd5760008415620010b8578287015190505b620010c4858262001037565b86555062001134565b601f198416620010dd8662000e79565b60005b828110156200110757848901518255600182019150602085019450602081019050620010e0565b8683101562001127578489015162001123601f89168262001017565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001185601f836200113c565b915062001192826200114d565b602082019050919050565b60006020820190508181036000830152620011b88162001176565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620011fb8262000f01565b9150620012088362000f01565b9250828201905080821115620012235762001222620011bf565b5b92915050565b620012348162000f01565b82525050565b600060208201905062001251600083018462001229565b92915050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b60006200128f600b836200113c565b91506200129c8262001257565b602082019050919050565b60006020820190508181036000830152620012c28162001280565b9050919050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b6000620013016016836200113c565b91506200130e82620012c9565b602082019050919050565b600060208201905081810360008301526200133481620012f2565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b6000620013736006836200113c565b915062001380826200133b565b602082019050919050565b60006020820190508181036000830152620013a68162001364565b9050919050565b6000620013ba8262000f01565b9150620013c78362000f01565b9250828203905081811115620013e257620013e1620011bf565b5b92915050565b7f6d75737420686f646c206d696e486f6c64696e67416d6f756e74000000000000600082015250565b600062001420601a836200113c565b91506200142d82620013e8565b602082019050919050565b60006020820190508181036000830152620014538162001411565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620014b86024836200113c565b9150620014c5826200145a565b604082019050919050565b60006020820190508181036000830152620014eb81620014a9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620015506022836200113c565b91506200155d82620014f2565b604082019050919050565b60006020820190508181036000830152620015838162001541565b9050919050565b612cd0806200159a6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063715018a6116100de578063a9059cbb11610097578063cba0e99611610071578063cba0e99614610477578063dd62ed3e146104a7578063e8c7a0d2146104d7578063f2fde38b146104f35761018e565b8063a9059cbb1461040f578063bfab65351461043f578063c6f754f31461045b5761018e565b8063715018a61461035d578063860a32ec1461036757806389f9a1d3146103855780638da5cb5b146103a357806395d89b41146103c1578063a457c2d7146103df5761018e565b8063313ce5671161014b5780635187c091116101255780635187c091146102d357806354840c6e146102f157806362f837ef1461030f57806370a082311461032d5761018e565b8063313ce56714610269578063395093511461028757806342966c68146102b75761018e565b8063041f173f1461019357806306fdde03146101af578063095ea7b3146101cd57806318160ddd146101fd5780631ab99e121461021b57806323b872dd14610239575b600080fd5b6101ad60048036038101906101a89190611e8c565b61050f565b005b6101b7610626565b6040516101c49190611f54565b60405180910390f35b6101e760048036038101906101e29190611fac565b6106b8565b6040516101f49190612007565b60405180910390f35b6102056106d6565b6040516102129190612031565b60405180910390f35b6102236106e0565b6040516102309190612031565b60405180910390f35b610253600480360381019061024e919061204c565b6106e6565b6040516102609190612007565b60405180910390f35b6102716107de565b60405161027e91906120bb565b60405180910390f35b6102a1600480360381019061029c9190611fac565b6107e7565b6040516102ae9190612007565b60405180910390f35b6102d160048036038101906102cc91906120d6565b610893565b005b6102db6108a0565b6040516102e89190612112565b60405180910390f35b6102f96108c6565b6040516103069190612007565b60405180910390f35b6103176108d9565b6040516103249190612007565b60405180910390f35b6103476004803603810190610342919061212d565b6108f0565b6040516103549190612031565b60405180910390f35b610365610939565b005b61036f6109c1565b60405161037c9190612007565b60405180910390f35b61038d6109d4565b60405161039a9190612031565b60405180910390f35b6103ab6109da565b6040516103b89190612112565b60405180910390f35b6103c9610a03565b6040516103d69190611f54565b60405180910390f35b6103f960048036038101906103f49190611fac565b610a95565b6040516104069190612007565b60405180910390f35b61042960048036038101906104249190611fac565b610b80565b6040516104369190612007565b60405180910390f35b61045960048036038101906104549190611e8c565b610b9e565b005b6104756004803603810190610470919061215a565b610cb5565b005b610491600480360381019061048c919061212d565b610d43565b60405161049e9190612007565b60405180910390f35b6104c160048036038101906104bc919061219a565b610d63565b6040516104ce9190612031565b60405180910390f35b6104f160048036038101906104ec9190612206565b610dea565b005b61050d6004803603810190610508919061212d565b610eb2565b005b610517610fa9565b73ffffffffffffffffffffffffffffffffffffffff166105356109da565b73ffffffffffffffffffffffffffffffffffffffff161461058b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610582906122b9565b60405180910390fd5b60005b81518160ff161015610622576001600e6000848460ff16815181106105b6576105b56122d9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061061a90612337565b91505061058e565b5050565b6060600780546106359061238f565b80601f01602080910402602001604051908101604052809291908181526020018280546106619061238f565b80156106ae5780601f10610683576101008083540402835291602001916106ae565b820191906000526020600020905b81548152906001019060200180831161069157829003601f168201915b5050505050905090565b60006106cc6106c5610fa9565b8484610fb1565b6001905092915050565b6000600654905090565b600d5481565b60006106f384848461117a565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061073e610fa9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b590612432565b60405180910390fd5b6107d2856107ca610fa9565b858403610fb1565b60019150509392505050565b60006012905090565b60006108896107f4610fa9565b848460026000610802610fa9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108849190612452565b610fb1565b6001905092915050565b61089d33826114ee565b50565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60159054906101000a900460ff1681565b6000600960009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610941610fa9565b73ffffffffffffffffffffffffffffffffffffffff1661095f6109da565b73ffffffffffffffffffffffffffffffffffffffff16146109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ac906122b9565b60405180910390fd5b6109bf60006116ba565b565b600b60149054906101000a900460ff1681565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054610a129061238f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3e9061238f565b8015610a8b5780601f10610a6057610100808354040283529160200191610a8b565b820191906000526020600020905b815481529060010190602001808311610a6e57829003601f168201915b5050505050905090565b60008060026000610aa4610fa9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b58906124f8565b60405180910390fd5b610b75610b6c610fa9565b85858403610fb1565b600191505092915050565b6000610b94610b8d610fa9565b848461117a565b6001905092915050565b610ba6610fa9565b73ffffffffffffffffffffffffffffffffffffffff16610bc46109da565b73ffffffffffffffffffffffffffffffffffffffff1614610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c11906122b9565b60405180910390fd5b60005b81518160ff161015610cb1576000600e6000848460ff1681518110610c4557610c446122d9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ca990612337565b915050610c1d565b5050565b610cbd610fa9565b73ffffffffffffffffffffffffffffffffffffffff16610cdb6109da565b73ffffffffffffffffffffffffffffffffffffffff1614610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d28906122b9565b60405180910390fd5b80600c8190555081600d819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610df2610fa9565b73ffffffffffffffffffffffffffffffffffffffff16610e106109da565b73ffffffffffffffffffffffffffffffffffffffff1614610e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5d906122b9565b60405180910390fd5b83600b60146101000a81548160ff021916908315150217905550610e898361177e565b81600b60156101000a81548160ff021916908315150217905550610eac8161179b565b50505050565b610eba610fa9565b73ffffffffffffffffffffffffffffffffffffffff16610ed86109da565b73ffffffffffffffffffffffffffffffffffffffff1614610f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f25906122b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f949061258a565b60405180910390fd5b610fa6816116ba565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611020576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110179061261c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361108f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611086906126ae565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161116d9190612031565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090612740565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124f906127d2565b60405180910390fd5b6112638383836118a6565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156113125750600960009054906101000a900460ff165b80156113685750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561139757606460198461137c91906127f2565b6113869190612863565b905080836113949190612894565b92505b828210156113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d19061293a565b60405180910390fd5b828203600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461146f9190612452565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114d39190612031565b60405180910390a36114e785600083611c01565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361155d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611554906129cc565b60405180910390fd5b611569826000836118a6565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790612a5e565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282546116489190612894565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116ad9190612031565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600960006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180190612aca565b60405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561194a5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198090612b36565b60405180910390fd5b600b60159054906101000a900460ff16611a54576119a56109da565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611a1057506119e16109da565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4690612ba2565b60405180910390fd5b611bfc565b600b60149054906101000a900460ff168015611abd57508273ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15611b3c57600c5481611acf846108f0565b611ad99190612452565b11158015611afc5750600d5481611aef846108f0565b611af99190612452565b10155b611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3290612c0e565b60405180910390fd5b5b611b446108d9565b8015611b9d57508173ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15611bfb57600d5481611baf856108f0565b611bb99190612894565b1015611bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf190612c7a565b60405180910390fd5b5b5b505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c509190612452565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb49190612031565b60405180910390a3505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611d2382611cda565b810181811067ffffffffffffffff82111715611d4257611d41611ceb565b5b80604052505050565b6000611d55611cc1565b9050611d618282611d1a565b919050565b600067ffffffffffffffff821115611d8157611d80611ceb565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611dc282611d97565b9050919050565b611dd281611db7565b8114611ddd57600080fd5b50565b600081359050611def81611dc9565b92915050565b6000611e08611e0384611d66565b611d4b565b90508083825260208201905060208402830185811115611e2b57611e2a611d92565b5b835b81811015611e545780611e408882611de0565b845260208401935050602081019050611e2d565b5050509392505050565b600082601f830112611e7357611e72611cd5565b5b8135611e83848260208601611df5565b91505092915050565b600060208284031215611ea257611ea1611ccb565b5b600082013567ffffffffffffffff811115611ec057611ebf611cd0565b5b611ecc84828501611e5e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f0f578082015181840152602081019050611ef4565b60008484015250505050565b6000611f2682611ed5565b611f308185611ee0565b9350611f40818560208601611ef1565b611f4981611cda565b840191505092915050565b60006020820190508181036000830152611f6e8184611f1b565b905092915050565b6000819050919050565b611f8981611f76565b8114611f9457600080fd5b50565b600081359050611fa681611f80565b92915050565b60008060408385031215611fc357611fc2611ccb565b5b6000611fd185828601611de0565b9250506020611fe285828601611f97565b9150509250929050565b60008115159050919050565b61200181611fec565b82525050565b600060208201905061201c6000830184611ff8565b92915050565b61202b81611f76565b82525050565b60006020820190506120466000830184612022565b92915050565b60008060006060848603121561206557612064611ccb565b5b600061207386828701611de0565b935050602061208486828701611de0565b925050604061209586828701611f97565b9150509250925092565b600060ff82169050919050565b6120b58161209f565b82525050565b60006020820190506120d060008301846120ac565b92915050565b6000602082840312156120ec576120eb611ccb565b5b60006120fa84828501611f97565b91505092915050565b61210c81611db7565b82525050565b60006020820190506121276000830184612103565b92915050565b60006020828403121561214357612142611ccb565b5b600061215184828501611de0565b91505092915050565b6000806040838503121561217157612170611ccb565b5b600061217f85828601611f97565b925050602061219085828601611f97565b9150509250929050565b600080604083850312156121b1576121b0611ccb565b5b60006121bf85828601611de0565b92505060206121d085828601611de0565b9150509250929050565b6121e381611fec565b81146121ee57600080fd5b50565b600081359050612200816121da565b92915050565b600080600080608085870312156122205761221f611ccb565b5b600061222e878288016121f1565b945050602061223f878288016121f1565b9350506040612250878288016121f1565b925050606061226187828801611de0565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006122a3602083611ee0565b91506122ae8261226d565b602082019050919050565b600060208201905081810360008301526122d281612296565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123428261209f565b915060ff820361235557612354612308565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806123a757607f821691505b6020821081036123ba576123b9612360565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061241c602883611ee0565b9150612427826123c0565b604082019050919050565b6000602082019050818103600083015261244b8161240f565b9050919050565b600061245d82611f76565b915061246883611f76565b92508282019050808211156124805761247f612308565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006124e2602583611ee0565b91506124ed82612486565b604082019050919050565b60006020820190508181036000830152612511816124d5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612574602683611ee0565b915061257f82612518565b604082019050919050565b600060208201905081810360008301526125a381612567565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612606602483611ee0565b9150612611826125aa565b604082019050919050565b60006020820190508181036000830152612635816125f9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612698602283611ee0565b91506126a38261263c565b604082019050919050565b600060208201905081810360008301526126c78161268b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061272a602583611ee0565b9150612735826126ce565b604082019050919050565b600060208201905081810360008301526127598161271d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006127bc602383611ee0565b91506127c782612760565b604082019050919050565b600060208201905081810360008301526127eb816127af565b9050919050565b60006127fd82611f76565b915061280883611f76565b925082820261281681611f76565b9150828204841483151761282d5761282c612308565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061286e82611f76565b915061287983611f76565b92508261288957612888612834565b5b828204905092915050565b600061289f82611f76565b91506128aa83611f76565b92508282039050818111156128c2576128c1612308565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612924602683611ee0565b915061292f826128c8565b604082019050919050565b6000602082019050818103600083015261295381612917565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006129b6602183611ee0565b91506129c18261295a565b604082019050919050565b600060208201905081810360008301526129e5816129a9565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a48602283611ee0565b9150612a53826129ec565b604082019050919050565b60006020820190508181036000830152612a7781612a3b565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612ab4601f83611ee0565b9150612abf82612a7e565b602082019050919050565b60006020820190508181036000830152612ae381612aa7565b9050919050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000612b20600b83611ee0565b9150612b2b82612aea565b602082019050919050565b60006020820190508181036000830152612b4f81612b13565b9050919050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b6000612b8c601683611ee0565b9150612b9782612b56565b602082019050919050565b60006020820190508181036000830152612bbb81612b7f565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b6000612bf8600683611ee0565b9150612c0382612bc2565b602082019050919050565b60006020820190508181036000830152612c2781612beb565b9050919050565b7f6d75737420686f646c206d696e486f6c64696e67416d6f756e74000000000000600082015250565b6000612c64601a83611ee0565b9150612c6f82612c2e565b602082019050919050565b60006020820190508181036000830152612c9381612c57565b905091905056fea264697066735822122018c298c18d3d2797d5f3bd3dde8a606a02e2ab2f47fe349fec7af9208f73160a64736f6c63430008120033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061018e5760003560e01c8063715018a6116100de578063a9059cbb11610097578063cba0e99611610071578063cba0e99614610477578063dd62ed3e146104a7578063e8c7a0d2146104d7578063f2fde38b146104f35761018e565b8063a9059cbb1461040f578063bfab65351461043f578063c6f754f31461045b5761018e565b8063715018a61461035d578063860a32ec1461036757806389f9a1d3146103855780638da5cb5b146103a357806395d89b41146103c1578063a457c2d7146103df5761018e565b8063313ce5671161014b5780635187c091116101255780635187c091146102d357806354840c6e146102f157806362f837ef1461030f57806370a082311461032d5761018e565b8063313ce56714610269578063395093511461028757806342966c68146102b75761018e565b8063041f173f1461019357806306fdde03146101af578063095ea7b3146101cd57806318160ddd146101fd5780631ab99e121461021b57806323b872dd14610239575b600080fd5b6101ad60048036038101906101a89190611e8c565b61050f565b005b6101b7610626565b6040516101c49190611f54565b60405180910390f35b6101e760048036038101906101e29190611fac565b6106b8565b6040516101f49190612007565b60405180910390f35b6102056106d6565b6040516102129190612031565b60405180910390f35b6102236106e0565b6040516102309190612031565b60405180910390f35b610253600480360381019061024e919061204c565b6106e6565b6040516102609190612007565b60405180910390f35b6102716107de565b60405161027e91906120bb565b60405180910390f35b6102a1600480360381019061029c9190611fac565b6107e7565b6040516102ae9190612007565b60405180910390f35b6102d160048036038101906102cc91906120d6565b610893565b005b6102db6108a0565b6040516102e89190612112565b60405180910390f35b6102f96108c6565b6040516103069190612007565b60405180910390f35b6103176108d9565b6040516103249190612007565b60405180910390f35b6103476004803603810190610342919061212d565b6108f0565b6040516103549190612031565b60405180910390f35b610365610939565b005b61036f6109c1565b60405161037c9190612007565b60405180910390f35b61038d6109d4565b60405161039a9190612031565b60405180910390f35b6103ab6109da565b6040516103b89190612112565b60405180910390f35b6103c9610a03565b6040516103d69190611f54565b60405180910390f35b6103f960048036038101906103f49190611fac565b610a95565b6040516104069190612007565b60405180910390f35b61042960048036038101906104249190611fac565b610b80565b6040516104369190612007565b60405180910390f35b61045960048036038101906104549190611e8c565b610b9e565b005b6104756004803603810190610470919061215a565b610cb5565b005b610491600480360381019061048c919061212d565b610d43565b60405161049e9190612007565b60405180910390f35b6104c160048036038101906104bc919061219a565b610d63565b6040516104ce9190612031565b60405180910390f35b6104f160048036038101906104ec9190612206565b610dea565b005b61050d6004803603810190610508919061212d565b610eb2565b005b610517610fa9565b73ffffffffffffffffffffffffffffffffffffffff166105356109da565b73ffffffffffffffffffffffffffffffffffffffff161461058b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610582906122b9565b60405180910390fd5b60005b81518160ff161015610622576001600e6000848460ff16815181106105b6576105b56122d9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061061a90612337565b91505061058e565b5050565b6060600780546106359061238f565b80601f01602080910402602001604051908101604052809291908181526020018280546106619061238f565b80156106ae5780601f10610683576101008083540402835291602001916106ae565b820191906000526020600020905b81548152906001019060200180831161069157829003601f168201915b5050505050905090565b60006106cc6106c5610fa9565b8484610fb1565b6001905092915050565b6000600654905090565b600d5481565b60006106f384848461117a565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061073e610fa9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b590612432565b60405180910390fd5b6107d2856107ca610fa9565b858403610fb1565b60019150509392505050565b60006012905090565b60006108896107f4610fa9565b848460026000610802610fa9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108849190612452565b610fb1565b6001905092915050565b61089d33826114ee565b50565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60159054906101000a900460ff1681565b6000600960009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610941610fa9565b73ffffffffffffffffffffffffffffffffffffffff1661095f6109da565b73ffffffffffffffffffffffffffffffffffffffff16146109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ac906122b9565b60405180910390fd5b6109bf60006116ba565b565b600b60149054906101000a900460ff1681565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054610a129061238f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3e9061238f565b8015610a8b5780601f10610a6057610100808354040283529160200191610a8b565b820191906000526020600020905b815481529060010190602001808311610a6e57829003601f168201915b5050505050905090565b60008060026000610aa4610fa9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b58906124f8565b60405180910390fd5b610b75610b6c610fa9565b85858403610fb1565b600191505092915050565b6000610b94610b8d610fa9565b848461117a565b6001905092915050565b610ba6610fa9565b73ffffffffffffffffffffffffffffffffffffffff16610bc46109da565b73ffffffffffffffffffffffffffffffffffffffff1614610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c11906122b9565b60405180910390fd5b60005b81518160ff161015610cb1576000600e6000848460ff1681518110610c4557610c446122d9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ca990612337565b915050610c1d565b5050565b610cbd610fa9565b73ffffffffffffffffffffffffffffffffffffffff16610cdb6109da565b73ffffffffffffffffffffffffffffffffffffffff1614610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d28906122b9565b60405180910390fd5b80600c8190555081600d819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610df2610fa9565b73ffffffffffffffffffffffffffffffffffffffff16610e106109da565b73ffffffffffffffffffffffffffffffffffffffff1614610e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5d906122b9565b60405180910390fd5b83600b60146101000a81548160ff021916908315150217905550610e898361177e565b81600b60156101000a81548160ff021916908315150217905550610eac8161179b565b50505050565b610eba610fa9565b73ffffffffffffffffffffffffffffffffffffffff16610ed86109da565b73ffffffffffffffffffffffffffffffffffffffff1614610f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f25906122b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f949061258a565b60405180910390fd5b610fa6816116ba565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611020576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110179061261c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361108f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611086906126ae565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161116d9190612031565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090612740565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124f906127d2565b60405180910390fd5b6112638383836118a6565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156113125750600960009054906101000a900460ff165b80156113685750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561139757606460198461137c91906127f2565b6113869190612863565b905080836113949190612894565b92505b828210156113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d19061293a565b60405180910390fd5b828203600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461146f9190612452565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114d39190612031565b60405180910390a36114e785600083611c01565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361155d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611554906129cc565b60405180910390fd5b611569826000836118a6565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790612a5e565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282546116489190612894565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116ad9190612031565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600960006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180190612aca565b60405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561194a5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198090612b36565b60405180910390fd5b600b60159054906101000a900460ff16611a54576119a56109da565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611a1057506119e16109da565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4690612ba2565b60405180910390fd5b611bfc565b600b60149054906101000a900460ff168015611abd57508273ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15611b3c57600c5481611acf846108f0565b611ad99190612452565b11158015611afc5750600d5481611aef846108f0565b611af99190612452565b10155b611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3290612c0e565b60405180910390fd5b5b611b446108d9565b8015611b9d57508173ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15611bfb57600d5481611baf856108f0565b611bb99190612894565b1015611bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf190612c7a565b60405180910390fd5b5b5b505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c509190612452565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb49190612031565b60405180910390a3505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611d2382611cda565b810181811067ffffffffffffffff82111715611d4257611d41611ceb565b5b80604052505050565b6000611d55611cc1565b9050611d618282611d1a565b919050565b600067ffffffffffffffff821115611d8157611d80611ceb565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611dc282611d97565b9050919050565b611dd281611db7565b8114611ddd57600080fd5b50565b600081359050611def81611dc9565b92915050565b6000611e08611e0384611d66565b611d4b565b90508083825260208201905060208402830185811115611e2b57611e2a611d92565b5b835b81811015611e545780611e408882611de0565b845260208401935050602081019050611e2d565b5050509392505050565b600082601f830112611e7357611e72611cd5565b5b8135611e83848260208601611df5565b91505092915050565b600060208284031215611ea257611ea1611ccb565b5b600082013567ffffffffffffffff811115611ec057611ebf611cd0565b5b611ecc84828501611e5e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f0f578082015181840152602081019050611ef4565b60008484015250505050565b6000611f2682611ed5565b611f308185611ee0565b9350611f40818560208601611ef1565b611f4981611cda565b840191505092915050565b60006020820190508181036000830152611f6e8184611f1b565b905092915050565b6000819050919050565b611f8981611f76565b8114611f9457600080fd5b50565b600081359050611fa681611f80565b92915050565b60008060408385031215611fc357611fc2611ccb565b5b6000611fd185828601611de0565b9250506020611fe285828601611f97565b9150509250929050565b60008115159050919050565b61200181611fec565b82525050565b600060208201905061201c6000830184611ff8565b92915050565b61202b81611f76565b82525050565b60006020820190506120466000830184612022565b92915050565b60008060006060848603121561206557612064611ccb565b5b600061207386828701611de0565b935050602061208486828701611de0565b925050604061209586828701611f97565b9150509250925092565b600060ff82169050919050565b6120b58161209f565b82525050565b60006020820190506120d060008301846120ac565b92915050565b6000602082840312156120ec576120eb611ccb565b5b60006120fa84828501611f97565b91505092915050565b61210c81611db7565b82525050565b60006020820190506121276000830184612103565b92915050565b60006020828403121561214357612142611ccb565b5b600061215184828501611de0565b91505092915050565b6000806040838503121561217157612170611ccb565b5b600061217f85828601611f97565b925050602061219085828601611f97565b9150509250929050565b600080604083850312156121b1576121b0611ccb565b5b60006121bf85828601611de0565b92505060206121d085828601611de0565b9150509250929050565b6121e381611fec565b81146121ee57600080fd5b50565b600081359050612200816121da565b92915050565b600080600080608085870312156122205761221f611ccb565b5b600061222e878288016121f1565b945050602061223f878288016121f1565b9350506040612250878288016121f1565b925050606061226187828801611de0565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006122a3602083611ee0565b91506122ae8261226d565b602082019050919050565b600060208201905081810360008301526122d281612296565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123428261209f565b915060ff820361235557612354612308565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806123a757607f821691505b6020821081036123ba576123b9612360565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061241c602883611ee0565b9150612427826123c0565b604082019050919050565b6000602082019050818103600083015261244b8161240f565b9050919050565b600061245d82611f76565b915061246883611f76565b92508282019050808211156124805761247f612308565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006124e2602583611ee0565b91506124ed82612486565b604082019050919050565b60006020820190508181036000830152612511816124d5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612574602683611ee0565b915061257f82612518565b604082019050919050565b600060208201905081810360008301526125a381612567565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612606602483611ee0565b9150612611826125aa565b604082019050919050565b60006020820190508181036000830152612635816125f9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612698602283611ee0565b91506126a38261263c565b604082019050919050565b600060208201905081810360008301526126c78161268b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061272a602583611ee0565b9150612735826126ce565b604082019050919050565b600060208201905081810360008301526127598161271d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006127bc602383611ee0565b91506127c782612760565b604082019050919050565b600060208201905081810360008301526127eb816127af565b9050919050565b60006127fd82611f76565b915061280883611f76565b925082820261281681611f76565b9150828204841483151761282d5761282c612308565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061286e82611f76565b915061287983611f76565b92508261288957612888612834565b5b828204905092915050565b600061289f82611f76565b91506128aa83611f76565b92508282039050818111156128c2576128c1612308565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612924602683611ee0565b915061292f826128c8565b604082019050919050565b6000602082019050818103600083015261295381612917565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006129b6602183611ee0565b91506129c18261295a565b604082019050919050565b600060208201905081810360008301526129e5816129a9565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a48602283611ee0565b9150612a53826129ec565b604082019050919050565b60006020820190508181036000830152612a7781612a3b565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612ab4601f83611ee0565b9150612abf82612a7e565b602082019050919050565b60006020820190508181036000830152612ae381612aa7565b9050919050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000612b20600b83611ee0565b9150612b2b82612aea565b602082019050919050565b60006020820190508181036000830152612b4f81612b13565b9050919050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b6000612b8c601683611ee0565b9150612b9782612b56565b602082019050919050565b60006020820190508181036000830152612bbb81612b7f565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b6000612bf8600683611ee0565b9150612c0382612bc2565b602082019050919050565b60006020820190508181036000830152612c2781612beb565b9050919050565b7f6d75737420686f646c206d696e486f6c64696e67416d6f756e74000000000000600082015250565b6000612c64601a83611ee0565b9150612c6f82612c2e565b602082019050919050565b60006020820190508181036000830152612c9381612c57565b905091905056fea264697066735822122018c298c18d3d2797d5f3bd3dde8a606a02e2ab2f47fe349fec7af9208f73160a64736f6c63430008120033
Deployed Bytecode Sourcemap
21020:2040:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21490:172;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10061:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12234:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11181:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21174:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13068:733;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11023:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14210:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22976:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9297:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21076:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12414:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11352:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2615:103;;;:::i;:::-;;21050:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21103:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1964:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10280:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14928:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11692:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21668:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22080:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9250:40;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11936:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21851:221;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2873:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21490:172;2195:12;:10;:12::i;:::-;2184:23;;:7;:5;:7::i;:::-;:23;;;2176:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21570:7:::1;21566:89;21582:8;:15;21580:1;:17;;;21566:89;;;21639:4;21613:10;:23;21624:8;21633:1;21624:11;;;;;;;;;;:::i;:::-;;;;;;;;21613:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;21598:3;;;;;:::i;:::-;;;;21566:89;;;;21490:172:::0;:::o;10061:100::-;10115:13;10148:5;10141:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10061:100;:::o;12234:169::-;12317:4;12334:39;12343:12;:10;:12::i;:::-;12357:7;12366:6;12334:8;:39::i;:::-;12391:4;12384:11;;12234:169;;;;:::o;11181:108::-;11242:7;11269:12;;11262:19;;11181:108;:::o;21174:49::-;;;;:::o;13068:733::-;13208:4;13466:36;13476:6;13484:9;13495:6;13466:9;:36::i;:::-;13515:24;13542:11;:19;13554:6;13542:19;;;;;;;;;;;;;;;:33;13562:12;:10;:12::i;:::-;13542:33;;;;;;;;;;;;;;;;13515:60;;13614:6;13594:16;:26;;13586:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;13701:57;13710:6;13718:12;:10;:12::i;:::-;13751:6;13732:16;:25;13701:8;:57::i;:::-;13789:4;13782:11;;;13068:733;;;;;:::o;11023:93::-;11081:5;11106:2;11099:9;;11023:93;:::o;14210:215::-;14298:4;14315:80;14324:12;:10;:12::i;:::-;14338:7;14384:10;14347:11;:25;14359:12;:10;:12::i;:::-;14347:25;;;;;;;;;;;;;;;:34;14373:7;14347:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;14315:8;:80::i;:::-;14413:4;14406:11;;14210:215;;;;:::o;22976:81::-;23025:24;23031:10;23043:5;23025;:24::i;:::-;22976:81;:::o;9297:24::-;;;;;;;;;;;;;:::o;21076:20::-;;;;;;;;;;;;;:::o;12414:87::-;12462:4;12485:8;;;;;;;;;;;12478:15;;12414:87;:::o;11352:127::-;11426:7;11453:9;:18;11463:7;11453:18;;;;;;;;;;;;;;;;11446:25;;11352:127;;;:::o;2615:103::-;2195:12;:10;:12::i;:::-;2184:23;;:7;:5;:7::i;:::-;:23;;;2176:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2680:30:::1;2707:1;2680:18;:30::i;:::-;2615:103::o:0;21050:19::-;;;;;;;;;;;;;:::o;21103:49::-;;;;:::o;1964:87::-;2010:7;2037:6;;;;;;;;;;;2030:13;;1964:87;:::o;10280:104::-;10336:13;10369:7;10362:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10280:104;:::o;14928:413::-;15021:4;15038:24;15065:11;:25;15077:12;:10;:12::i;:::-;15065:25;;;;;;;;;;;;;;;:34;15091:7;15065:34;;;;;;;;;;;;;;;;15038:61;;15138:15;15118:16;:35;;15110:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;15231:67;15240:12;:10;:12::i;:::-;15254:7;15282:15;15263:16;:34;15231:8;:67::i;:::-;15329:4;15322:11;;;14928:413;;;;:::o;11692:181::-;11778:4;11797:42;11807:12;:10;:12::i;:::-;11821:9;11832:6;11797:9;:42::i;:::-;11861:4;11854:11;;11692:181;;;;:::o;21668:175::-;2195:12;:10;:12::i;:::-;2184:23;;:7;:5;:7::i;:::-;:23;;;2176:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21750:7:::1;21746:90;21762:8;:15;21760:1;:17;;;21746:90;;;21819:5;21793:10;:23;21804:8;21813:1;21804:11;;;;;;;;;;:::i;:::-;;;;;;;;21793:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;21778:3;;;;;:::i;:::-;;;;21746:90;;;;21668:175:::0;:::o;22080:149::-;2195:12;:10;:12::i;:::-;2184:23;;:7;:5;:7::i;:::-;:23;;;2176:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22182:4:::1;22163:16;:23;;;;22215:4;22197:16;:22;;;;22080:149:::0;;:::o;9250:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;11936:151::-;12025:7;12052:11;:18;12064:5;12052:18;;;;;;;;;;;;;;;:27;12071:7;12052:27;;;;;;;;;;;;;;;;12045:34;;11936:151;;;;:::o;21851:221::-;2195:12;:10;:12::i;:::-;2184:23;;:7;:5;:7::i;:::-;:23;;;2176:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21969:8:::1;21959:7;;:18;;;;;;;;;;;;;;;;;;21988;21997:8;21988:7;:18::i;:::-;22026:5;22017:8;;:14;;;;;;;;;;;;;;;;;;22042:22;22052:11;22042:9;:22::i;:::-;21851:221:::0;;;;:::o;2873:201::-;2195:12;:10;:12::i;:::-;2184:23;;:7;:5;:7::i;:::-;:23;;;2176:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2982:1:::1;2962:22;;:8;:22;;::::0;2954:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3038:28;3057:8;3038:18;:28::i;:::-;2873:201:::0;:::o;682:98::-;735:7;762:10;755:17;;682:98;:::o;19064:380::-;19217:1;19200:19;;:5;:19;;;19192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19298:1;19279:21;;:7;:21;;;19271:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19382:6;19352:11;:18;19364:5;19352:18;;;;;;;;;;;;;;;:27;19371:7;19352:27;;;;;;;;;;;;;;;:36;;;;19420:7;19404:32;;19413:5;19404:32;;;19429:6;19404:32;;;;;;:::i;:::-;;;;;;;;19064:380;;;:::o;15831:934::-;15989:1;15971:20;;:6;:20;;;15963:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16073:1;16052:23;;:9;:23;;;16044:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16126:47;16147:6;16155:9;16166:6;16126:20;:47::i;:::-;16186:21;16210:9;:17;16220:6;16210:17;;;;;;;;;;;;;;;;16186:41;;16241:17;16284:9;;;;;;;;;;;16276:17;;:6;:17;;;:29;;;;;16297:8;;;;;;;;;;;16276:29;:55;;;;;16310:10;:21;16321:9;16310:21;;;;;;;;;;;;;;;;;;;;;;;;;16309:22;16276:55;16273:153;;;16371:3;16367:2;16360:6;:9;;;;:::i;:::-;16359:15;;;;:::i;:::-;16347:27;;16405:9;16398:6;:16;;;;:::i;:::-;16389:25;;16273:153;16461:6;16444:13;:23;;16436:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16582:6;16566:13;:22;16546:9;:17;16556:6;16546:17;;;;;;;;;;;;;;;:42;;;;16634:6;16610:9;:20;16620:9;16610:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;16676:9;16659:35;;16668:6;16659:35;;;16687:6;16659:35;;;;;;:::i;:::-;;;;;;;;16707:50;16727:6;16743:1;16747:9;16707:19;:50::i;:::-;15952:813;;15831:934;;;:::o;18033:593::-;18136:1;18117:21;;:7;:21;;;18109:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18189:49;18210:7;18227:1;18231:6;18189:20;:49::i;:::-;18251:22;18276:9;:18;18286:7;18276:18;;;;;;;;;;;;;;;;18251:43;;18331:6;18313:14;:24;;18305:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;18450:6;18433:14;:23;18412:9;:18;18422:7;18412:18;;;;;;;;;;;;;;;:44;;;;18494:6;18478:12;;:22;;;;;;;:::i;:::-;;;;;;;;18544:1;18518:37;;18527:7;18518:37;;;18548:6;18518:37;;;;;;:::i;:::-;;;;;;;;18098:528;18033:593;;:::o;3234:191::-;3308:16;3327:6;;;;;;;;;;;3308:25;;3353:8;3344:6;;:17;;;;;;;;;;;;;;;;;;3408:8;3377:40;;3398:8;3377:40;;;;;;;;;;;;3297:128;3234:191;:::o;12509:79::-;12576:4;12565:8;;:15;;;;;;;;;;;;;;;;;;12509:79;:::o;17514:186::-;17597:1;17582:17;;:3;:17;;;17574:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17663:4;17647:10;:15;17658:3;17647:15;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;17689:3;17679:9;;:13;;;;;;;;;;;;;;;;;;17514:186;:::o;22247:721::-;22399:10;:14;22410:2;22399:14;;;;;;;;;;;;;;;;;;;;;;;;;22398:15;:36;;;;;22418:10;:16;22429:4;22418:16;;;;;;;;;;;;;;;;;;;;;;;;;22417:17;22398:36;22390:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22468:8;;;;;;;;;;;22463:137;;22509:7;:5;:7::i;:::-;22501:15;;:4;:15;;;:32;;;;22526:7;:5;:7::i;:::-;22520:13;;:2;:13;;;22501:32;22493:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22582:7;;22463:137;22616:7;;;;;;;;;;;:26;;;;;22638:4;22627:15;;:9;;;;;;;;;;;:15;;;22616:26;22612:178;;;22699:16;;22689:6;22667:19;22683:2;22667:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;:100;;;;;22751:16;;22741:6;22719:19;22735:2;22719:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;22667:100;22659:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;22612:178;22803:9;:7;:9::i;:::-;:26;;;;;22827:2;22816:13;;:9;;;;;;;;;;;:13;;;22803:26;22800:159;;;22887:16;;22877:6;22855:21;22871:4;22855:15;:21::i;:::-;:28;;;;:::i;:::-;:49;;22847:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;22800:159;22247:721;;;;:::o;20773:207::-;20923:6;20908:9;:13;20918:2;20908:13;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;20961:2;20946:26;;20955:4;20946:26;;;20965:6;20946:26;;;;;;:::i;:::-;;;;;;;;20773:207;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:118::-;6375:24;6393:5;6375:24;:::i;:::-;6370:3;6363:37;6288:118;;:::o;6412:222::-;6505:4;6543:2;6532:9;6528:18;6520:26;;6556:71;6624:1;6613:9;6609:17;6600:6;6556:71;:::i;:::-;6412:222;;;;:::o;6640:619::-;6717:6;6725;6733;6782:2;6770:9;6761:7;6757:23;6753:32;6750:119;;;6788:79;;:::i;:::-;6750:119;6908:1;6933:53;6978:7;6969:6;6958:9;6954:22;6933:53;:::i;:::-;6923:63;;6879:117;7035:2;7061:53;7106:7;7097:6;7086:9;7082:22;7061:53;:::i;:::-;7051:63;;7006:118;7163:2;7189:53;7234:7;7225:6;7214:9;7210:22;7189:53;:::i;:::-;7179:63;;7134:118;6640:619;;;;;:::o;7265:86::-;7300:7;7340:4;7333:5;7329:16;7318:27;;7265:86;;;:::o;7357:112::-;7440:22;7456:5;7440:22;:::i;:::-;7435:3;7428:35;7357:112;;:::o;7475:214::-;7564:4;7602:2;7591:9;7587:18;7579:26;;7615:67;7679:1;7668:9;7664:17;7655:6;7615:67;:::i;:::-;7475:214;;;;:::o;7695:329::-;7754:6;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;7695:329;;;;:::o;8030:118::-;8117:24;8135:5;8117:24;:::i;:::-;8112:3;8105:37;8030:118;;:::o;8154:222::-;8247:4;8285:2;8274:9;8270:18;8262:26;;8298:71;8366:1;8355:9;8351:17;8342:6;8298:71;:::i;:::-;8154:222;;;;:::o;8382:329::-;8441:6;8490:2;8478:9;8469:7;8465:23;8461:32;8458:119;;;8496:79;;:::i;:::-;8458:119;8616:1;8641:53;8686:7;8677:6;8666:9;8662:22;8641:53;:::i;:::-;8631:63;;8587:117;8382:329;;;;:::o;8717:474::-;8785:6;8793;8842:2;8830:9;8821:7;8817:23;8813:32;8810:119;;;8848:79;;:::i;:::-;8810:119;8968:1;8993:53;9038:7;9029:6;9018:9;9014:22;8993:53;:::i;:::-;8983:63;;8939:117;9095:2;9121:53;9166:7;9157:6;9146:9;9142:22;9121:53;:::i;:::-;9111:63;;9066:118;8717:474;;;;;:::o;9197:::-;9265:6;9273;9322:2;9310:9;9301:7;9297:23;9293:32;9290:119;;;9328:79;;:::i;:::-;9290:119;9448:1;9473:53;9518:7;9509:6;9498:9;9494:22;9473:53;:::i;:::-;9463:63;;9419:117;9575:2;9601:53;9646:7;9637:6;9626:9;9622:22;9601:53;:::i;:::-;9591:63;;9546:118;9197:474;;;;;:::o;9677:116::-;9747:21;9762:5;9747:21;:::i;:::-;9740:5;9737:32;9727:60;;9783:1;9780;9773:12;9727:60;9677:116;:::o;9799:133::-;9842:5;9880:6;9867:20;9858:29;;9896:30;9920:5;9896:30;:::i;:::-;9799:133;;;;:::o;9938:747::-;10015:6;10023;10031;10039;10088:3;10076:9;10067:7;10063:23;10059:33;10056:120;;;10095:79;;:::i;:::-;10056:120;10215:1;10240:50;10282:7;10273:6;10262:9;10258:22;10240:50;:::i;:::-;10230:60;;10186:114;10339:2;10365:50;10407:7;10398:6;10387:9;10383:22;10365:50;:::i;:::-;10355:60;;10310:115;10464:2;10490:50;10532:7;10523:6;10512:9;10508:22;10490:50;:::i;:::-;10480:60;;10435:115;10589:2;10615:53;10660:7;10651:6;10640:9;10636:22;10615:53;:::i;:::-;10605:63;;10560:118;9938:747;;;;;;;:::o;10691:182::-;10831:34;10827:1;10819:6;10815:14;10808:58;10691:182;:::o;10879:366::-;11021:3;11042:67;11106:2;11101:3;11042:67;:::i;:::-;11035:74;;11118:93;11207:3;11118:93;:::i;:::-;11236:2;11231:3;11227:12;11220:19;;10879:366;;;:::o;11251:419::-;11417:4;11455:2;11444:9;11440:18;11432:26;;11504:9;11498:4;11494:20;11490:1;11479:9;11475:17;11468:47;11532:131;11658:4;11532:131;:::i;:::-;11524:139;;11251:419;;;:::o;11676:180::-;11724:77;11721:1;11714:88;11821:4;11818:1;11811:15;11845:4;11842:1;11835:15;11862:180;11910:77;11907:1;11900:88;12007:4;12004:1;11997:15;12031:4;12028:1;12021:15;12048:167;12085:3;12108:22;12124:5;12108:22;:::i;:::-;12099:31;;12152:4;12145:5;12142:15;12139:41;;12160:18;;:::i;:::-;12139:41;12207:1;12200:5;12196:13;12189:20;;12048:167;;;:::o;12221:180::-;12269:77;12266:1;12259:88;12366:4;12363:1;12356:15;12390:4;12387:1;12380:15;12407:320;12451:6;12488:1;12482:4;12478:12;12468:22;;12535:1;12529:4;12525:12;12556:18;12546:81;;12612:4;12604:6;12600:17;12590:27;;12546:81;12674:2;12666:6;12663:14;12643:18;12640:38;12637:84;;12693:18;;:::i;:::-;12637:84;12458:269;12407:320;;;:::o;12733:227::-;12873:34;12869:1;12861:6;12857:14;12850:58;12942:10;12937:2;12929:6;12925:15;12918:35;12733:227;:::o;12966:366::-;13108:3;13129:67;13193:2;13188:3;13129:67;:::i;:::-;13122:74;;13205:93;13294:3;13205:93;:::i;:::-;13323:2;13318:3;13314:12;13307:19;;12966:366;;;:::o;13338:419::-;13504:4;13542:2;13531:9;13527:18;13519:26;;13591:9;13585:4;13581:20;13577:1;13566:9;13562:17;13555:47;13619:131;13745:4;13619:131;:::i;:::-;13611:139;;13338:419;;;:::o;13763:191::-;13803:3;13822:20;13840:1;13822:20;:::i;:::-;13817:25;;13856:20;13874:1;13856:20;:::i;:::-;13851:25;;13899:1;13896;13892:9;13885:16;;13920:3;13917:1;13914:10;13911:36;;;13927:18;;:::i;:::-;13911:36;13763:191;;;;:::o;13960:224::-;14100:34;14096:1;14088:6;14084:14;14077:58;14169:7;14164:2;14156:6;14152:15;14145:32;13960:224;:::o;14190:366::-;14332:3;14353:67;14417:2;14412:3;14353:67;:::i;:::-;14346:74;;14429:93;14518:3;14429:93;:::i;:::-;14547:2;14542:3;14538:12;14531:19;;14190:366;;;:::o;14562:419::-;14728:4;14766:2;14755:9;14751:18;14743:26;;14815:9;14809:4;14805:20;14801:1;14790:9;14786:17;14779:47;14843:131;14969:4;14843:131;:::i;:::-;14835:139;;14562:419;;;:::o;14987:225::-;15127:34;15123:1;15115:6;15111:14;15104:58;15196:8;15191:2;15183:6;15179:15;15172:33;14987:225;:::o;15218:366::-;15360:3;15381:67;15445:2;15440:3;15381:67;:::i;:::-;15374:74;;15457:93;15546:3;15457:93;:::i;:::-;15575:2;15570:3;15566:12;15559:19;;15218:366;;;:::o;15590:419::-;15756:4;15794:2;15783:9;15779:18;15771:26;;15843:9;15837:4;15833:20;15829:1;15818:9;15814:17;15807:47;15871:131;15997:4;15871:131;:::i;:::-;15863:139;;15590:419;;;:::o;16015:223::-;16155:34;16151:1;16143:6;16139:14;16132:58;16224:6;16219:2;16211:6;16207:15;16200:31;16015:223;:::o;16244:366::-;16386:3;16407:67;16471:2;16466:3;16407:67;:::i;:::-;16400:74;;16483:93;16572:3;16483:93;:::i;:::-;16601:2;16596:3;16592:12;16585:19;;16244:366;;;:::o;16616:419::-;16782:4;16820:2;16809:9;16805:18;16797:26;;16869:9;16863:4;16859:20;16855:1;16844:9;16840:17;16833:47;16897:131;17023:4;16897:131;:::i;:::-;16889:139;;16616:419;;;:::o;17041:221::-;17181:34;17177:1;17169:6;17165:14;17158:58;17250:4;17245:2;17237:6;17233:15;17226:29;17041:221;:::o;17268:366::-;17410:3;17431:67;17495:2;17490:3;17431:67;:::i;:::-;17424:74;;17507:93;17596:3;17507:93;:::i;:::-;17625:2;17620:3;17616:12;17609:19;;17268:366;;;:::o;17640:419::-;17806:4;17844:2;17833:9;17829:18;17821:26;;17893:9;17887:4;17883:20;17879:1;17868:9;17864:17;17857:47;17921:131;18047:4;17921:131;:::i;:::-;17913:139;;17640:419;;;:::o;18065:224::-;18205:34;18201:1;18193:6;18189:14;18182:58;18274:7;18269:2;18261:6;18257:15;18250:32;18065:224;:::o;18295:366::-;18437:3;18458:67;18522:2;18517:3;18458:67;:::i;:::-;18451:74;;18534:93;18623:3;18534:93;:::i;:::-;18652:2;18647:3;18643:12;18636:19;;18295:366;;;:::o;18667:419::-;18833:4;18871:2;18860:9;18856:18;18848:26;;18920:9;18914:4;18910:20;18906:1;18895:9;18891:17;18884:47;18948:131;19074:4;18948:131;:::i;:::-;18940:139;;18667:419;;;:::o;19092:222::-;19232:34;19228:1;19220:6;19216:14;19209:58;19301:5;19296:2;19288:6;19284:15;19277:30;19092:222;:::o;19320:366::-;19462:3;19483:67;19547:2;19542:3;19483:67;:::i;:::-;19476:74;;19559:93;19648:3;19559:93;:::i;:::-;19677:2;19672:3;19668:12;19661:19;;19320:366;;;:::o;19692:419::-;19858:4;19896:2;19885:9;19881:18;19873:26;;19945:9;19939:4;19935:20;19931:1;19920:9;19916:17;19909:47;19973:131;20099:4;19973:131;:::i;:::-;19965:139;;19692:419;;;:::o;20117:410::-;20157:7;20180:20;20198:1;20180:20;:::i;:::-;20175:25;;20214:20;20232:1;20214:20;:::i;:::-;20209:25;;20269:1;20266;20262:9;20291:30;20309:11;20291:30;:::i;:::-;20280:41;;20470:1;20461:7;20457:15;20454:1;20451:22;20431:1;20424:9;20404:83;20381:139;;20500:18;;:::i;:::-;20381:139;20165:362;20117:410;;;;:::o;20533:180::-;20581:77;20578:1;20571:88;20678:4;20675:1;20668:15;20702:4;20699:1;20692:15;20719:185;20759:1;20776:20;20794:1;20776:20;:::i;:::-;20771:25;;20810:20;20828:1;20810:20;:::i;:::-;20805:25;;20849:1;20839:35;;20854:18;;:::i;:::-;20839:35;20896:1;20893;20889:9;20884:14;;20719:185;;;;:::o;20910:194::-;20950:4;20970:20;20988:1;20970:20;:::i;:::-;20965:25;;21004:20;21022:1;21004:20;:::i;:::-;20999:25;;21048:1;21045;21041:9;21033:17;;21072:1;21066:4;21063:11;21060:37;;;21077:18;;:::i;:::-;21060:37;20910:194;;;;:::o;21110:225::-;21250:34;21246:1;21238:6;21234:14;21227:58;21319:8;21314:2;21306:6;21302:15;21295:33;21110:225;:::o;21341:366::-;21483:3;21504:67;21568:2;21563:3;21504:67;:::i;:::-;21497:74;;21580:93;21669:3;21580:93;:::i;:::-;21698:2;21693:3;21689:12;21682:19;;21341:366;;;:::o;21713:419::-;21879:4;21917:2;21906:9;21902:18;21894:26;;21966:9;21960:4;21956:20;21952:1;21941:9;21937:17;21930:47;21994:131;22120:4;21994:131;:::i;:::-;21986:139;;21713:419;;;:::o;22138:220::-;22278:34;22274:1;22266:6;22262:14;22255:58;22347:3;22342:2;22334:6;22330:15;22323:28;22138:220;:::o;22364:366::-;22506:3;22527:67;22591:2;22586:3;22527:67;:::i;:::-;22520:74;;22603:93;22692:3;22603:93;:::i;:::-;22721:2;22716:3;22712:12;22705:19;;22364:366;;;:::o;22736:419::-;22902:4;22940:2;22929:9;22925:18;22917:26;;22989:9;22983:4;22979:20;22975:1;22964:9;22960:17;22953:47;23017:131;23143:4;23017:131;:::i;:::-;23009:139;;22736:419;;;:::o;23161:221::-;23301:34;23297:1;23289:6;23285:14;23278:58;23370:4;23365:2;23357:6;23353:15;23346:29;23161:221;:::o;23388:366::-;23530:3;23551:67;23615:2;23610:3;23551:67;:::i;:::-;23544:74;;23627:93;23716:3;23627:93;:::i;:::-;23745:2;23740:3;23736:12;23729:19;;23388:366;;;:::o;23760:419::-;23926:4;23964:2;23953:9;23949:18;23941:26;;24013:9;24007:4;24003:20;23999:1;23988:9;23984:17;23977:47;24041:131;24167:4;24041:131;:::i;:::-;24033:139;;23760:419;;;:::o;24185:181::-;24325:33;24321:1;24313:6;24309:14;24302:57;24185:181;:::o;24372:366::-;24514:3;24535:67;24599:2;24594:3;24535:67;:::i;:::-;24528:74;;24611:93;24700:3;24611:93;:::i;:::-;24729:2;24724:3;24720:12;24713:19;;24372:366;;;:::o;24744:419::-;24910:4;24948:2;24937:9;24933:18;24925:26;;24997:9;24991:4;24987:20;24983:1;24972:9;24968:17;24961:47;25025:131;25151:4;25025:131;:::i;:::-;25017:139;;24744:419;;;:::o;25169:161::-;25309:13;25305:1;25297:6;25293:14;25286:37;25169:161;:::o;25336:366::-;25478:3;25499:67;25563:2;25558:3;25499:67;:::i;:::-;25492:74;;25575:93;25664:3;25575:93;:::i;:::-;25693:2;25688:3;25684:12;25677:19;;25336:366;;;:::o;25708:419::-;25874:4;25912:2;25901:9;25897:18;25889:26;;25961:9;25955:4;25951:20;25947:1;25936:9;25932:17;25925:47;25989:131;26115:4;25989:131;:::i;:::-;25981:139;;25708:419;;;:::o;26133:172::-;26273:24;26269:1;26261:6;26257:14;26250:48;26133:172;:::o;26311:366::-;26453:3;26474:67;26538:2;26533:3;26474:67;:::i;:::-;26467:74;;26550:93;26639:3;26550:93;:::i;:::-;26668:2;26663:3;26659:12;26652:19;;26311:366;;;:::o;26683:419::-;26849:4;26887:2;26876:9;26872:18;26864:26;;26936:9;26930:4;26926:20;26922:1;26911:9;26907:17;26900:47;26964:131;27090:4;26964:131;:::i;:::-;26956:139;;26683:419;;;:::o;27108:156::-;27248:8;27244:1;27236:6;27232:14;27225:32;27108:156;:::o;27270:365::-;27412:3;27433:66;27497:1;27492:3;27433:66;:::i;:::-;27426:73;;27508:93;27597:3;27508:93;:::i;:::-;27626:2;27621:3;27617:12;27610:19;;27270:365;;;:::o;27641:419::-;27807:4;27845:2;27834:9;27830:18;27822:26;;27894:9;27888:4;27884:20;27880:1;27869:9;27865:17;27858:47;27922:131;28048:4;27922:131;:::i;:::-;27914:139;;27641:419;;;:::o;28066:176::-;28206:28;28202:1;28194:6;28190:14;28183:52;28066:176;:::o;28248:366::-;28390:3;28411:67;28475:2;28470:3;28411:67;:::i;:::-;28404:74;;28487:93;28576:3;28487:93;:::i;:::-;28605:2;28600:3;28596:12;28589:19;;28248:366;;;:::o;28620:419::-;28786:4;28824:2;28813:9;28809:18;28801:26;;28873:9;28867:4;28863:20;28859:1;28848:9;28844:17;28837:47;28901:131;29027:4;28901:131;:::i;:::-;28893:139;;28620:419;;;:::o
Swarm Source
ipfs://18c298c18d3d2797d5f3bd3dde8a606a02e2ab2f47fe349fec7af9208f73160a
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.