Token Zuki Moba
Overview ERC-20
Price
$0.00 @ 0.000000 MATIC
Fully Diluted Market Cap
Total Supply:
1,000,000,000 ZUKI
Holders:
267 addresses
Transfers:
-
Contract:
Decimals:
18
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Token
Compiler Version
v0.7.4+commit.3f05b770
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity 0.7.4; import "./ERC20.sol"; contract Token is ERC20 { using SafeMath for uint256; uint256 public maxSupply = 1000 * 10**6 * 10**18; constructor() { _initialize("Zuki Moba", "ZUKI", 18, maxSupply); } function burn(uint256 amount) public { _burn(_msgSender(), amount); } function _transfer( address sender, address recipient, uint256 amount ) internal virtual override { if ( !whiteListBot[sender] && !whiteListBot[recipient] && antiBotEnabled ) { revert("Anti Bot"); } super._transfer(sender, recipient, amount); } // receive eth from uniswap swap receive() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity 0.7.4; /* * @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 GSN 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 payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.7.4; import "./Context.sol"; import "./IERC20.sol"; import "./SafeMath.sol"; import "./Ownable.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, Ownable { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; bool private _mintable; mapping(address => bool) public whiteListSender; mapping(address => bool) public whiteListReceiver; mapping(address => bool) public blackList; mapping(address => bool) public whiteListBot; mapping(address => bool) public whiteListPool; bool public antiBotEnabled = false; bool public swapWhiteList = false; uint256 public _feeTransfer = 0; uint256 public constant PERCENTS_DIVIDER = 1000; address public _feeWallet; /** * @dev sets initials supply and the owner */ function _initialize( string memory _pname, string memory _psymbol, uint8 _pdecimals, uint256 _pamount ) internal { _name = _pname; _symbol = _psymbol; _decimals = _pdecimals; _feeWallet = owner(); _mint(owner(), _pamount); whiteListSender[owner()] = true; whiteListReceiver[owner()] = true; whiteListBot[owner()] = true; _mintable = true; } /** * @dev Returns the name of the token. */ function name() public view virtual returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual 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 {_setupDecimals} is * called. * * 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 returns (uint8) { return _decimals; } /** * @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) { uint256 feeTransfer = amount.mul(_feeTransfer).div(PERCENTS_DIVIDER); uint256 amountAfterFee = amount.sub(feeTransfer); if ( _msgSender() != owner() && whiteListSender[_msgSender()] == false && whiteListReceiver[recipient] == false ) { _transfer(_msgSender(), recipient, amountAfterFee); if(feeTransfer > 0) { _transfer(_msgSender(), _feeWallet, feeTransfer); } } if ( _msgSender() == owner() || whiteListSender[_msgSender()] == true || whiteListReceiver[recipient] == true ) { _transfer(_msgSender(), recipient, amount); } return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { uint256 feeTransfer = amount.mul(_feeTransfer).div(PERCENTS_DIVIDER); uint256 amountAfterFee = amount.sub(feeTransfer); if ( sender != owner() && whiteListSender[_msgSender()] == false && whiteListSender[sender] == false && whiteListReceiver[recipient] == false ) { _transfer(sender, recipient, amountAfterFee); if(feeTransfer > 0) { _transfer(sender, _feeWallet, feeTransfer); } } else { _transfer(sender, recipient, amount); } _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "BEP20: transfer amount exceeds allowance" ) ); 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].add(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) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(!blackList[sender], "ERC20: transfer to the black list address"); require(!blackList[recipient], "ERC20: transfer to the black list address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub( amount, "ERC20: transfer amount exceeds balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub( amount, "ERC20: burn amount exceeds balance" ); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Sets {decimals} to a value other than the default one of 18. * * WARNING: This function should only be called from the constructor. Most * applications that interact with token contracts will not expect * {decimals} to ever change, and may work incorrectly if it does. */ function _setupDecimals(uint8 decimals_) internal virtual { _decimals = decimals_; } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Creates `amount` tokens and assigns them to `msg.sender`, increasing * the total supply. * * Requirements * * - `msg.sender` must be the token owner * - `_mintable` must be true */ function mint(uint256 amount) public onlyOwner returns (bool) { require(_mintable, "this token is not mintable"); _mint(_msgSender(), amount); return true; } function enableMint(bool _pmintable) public onlyOwner returns (bool) { _mintable = _pmintable; return true; } function modifyWhiteListSender( address[] memory newWhiteList, address[] memory removedWhiteList ) public onlyOwner { for (uint256 index; index < newWhiteList.length; index++) { whiteListSender[newWhiteList[index]] = true; } for (uint256 index; index < removedWhiteList.length; index++) { whiteListSender[removedWhiteList[index]] = false; } } function isExcludedFromFee(address account) public view returns (bool) { return whiteListSender[account]; } function modifyWhiteListReceiver( address[] memory newWhiteList, address[] memory removedWhiteList ) public onlyOwner { for (uint256 index; index < newWhiteList.length; index++) { whiteListReceiver[newWhiteList[index]] = true; } for (uint256 index; index < removedWhiteList.length; index++) { whiteListReceiver[removedWhiteList[index]] = false; } } function isExcludedToFee(address account) public view returns (bool) { return whiteListReceiver[account]; } function modifyBlackList( address[] memory newWhiteList, address[] memory removedWhiteList ) public onlyOwner { for (uint256 index; index < newWhiteList.length; index++) { blackList[newWhiteList[index]] = true; } for (uint256 index; index < removedWhiteList.length; index++) { blackList[removedWhiteList[index]] = false; } } function isBlackList(address account) public view returns (bool) { return blackList[account]; } function setAntiBot(bool _enable) external onlyOwner { antiBotEnabled = _enable; } function setSwapWhiteList(bool _enable) external onlyOwner { swapWhiteList = _enable; } function transferToken( address coinAddress, uint256 value, address payable to ) public onlyOwner { if (coinAddress == address(0)) { return to.transfer(value); } IERC20(coinAddress).transfer(to, value); } function modifyWhiteListBot( address[] memory newWhiteList, address[] memory removedWhiteList ) public onlyOwner { for (uint256 index; index < newWhiteList.length; index++) { whiteListBot[newWhiteList[index]] = true; } for (uint256 index; index < removedWhiteList.length; index++) { whiteListBot[removedWhiteList[index]] = false; } } function isExcludedFromBot(address account) public view returns (bool) { return whiteListBot[account]; } function changeFeeWallet(address feeWallet) public onlyOwner { _feeWallet = feeWallet; } function changeFee(uint256 feeTransfer) public onlyOwner { _feeTransfer = feeTransfer; } function modifyWhiteListPool( address[] memory newWhiteList, address[] memory removedWhiteList ) public onlyOwner { for (uint256 index; index < newWhiteList.length; index++) { whiteListPool[newWhiteList[index]] = true; } for (uint256 index; index < removedWhiteList.length; index++) { whiteListPool[removedWhiteList[index]] = false; } } function isExcludedFromPool(address account) public view returns (bool) { return whiteListPool[account]; } }
// SPDX-License-Identifier: MIT pragma solidity 0.7.4; /** * @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); }
// SPDX-License-Identifier: MIT pragma solidity 0.7.4; import "./Context.sol"; import "./SafeMath.sol"; /** * @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. */ contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; using SafeMath for uint256; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function geUnlockTime() public view returns (uint256) { return _lockTime; } }
// SPDX-License-Identifier: MIT pragma solidity 0.7.4; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } }
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":[],"name":"PERCENTS_DIVIDER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeTransfer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBotEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeTransfer","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"feeWallet","type":"address"}],"name":"changeFeeWallet","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":"bool","name":"_pmintable","type":"bool"}],"name":"enableMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedToFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"newWhiteList","type":"address[]"},{"internalType":"address[]","name":"removedWhiteList","type":"address[]"}],"name":"modifyBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"newWhiteList","type":"address[]"},{"internalType":"address[]","name":"removedWhiteList","type":"address[]"}],"name":"modifyWhiteListBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"newWhiteList","type":"address[]"},{"internalType":"address[]","name":"removedWhiteList","type":"address[]"}],"name":"modifyWhiteListPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"newWhiteList","type":"address[]"},{"internalType":"address[]","name":"removedWhiteList","type":"address[]"}],"name":"modifyWhiteListReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"newWhiteList","type":"address[]"},{"internalType":"address[]","name":"removedWhiteList","type":"address[]"}],"name":"modifyWhiteListSender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setSwapWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"coinAddress","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address payable","name":"to","type":"address"}],"name":"transferToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whiteListBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whiteListPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whiteListReceiver","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whiteListSender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600f556b033b2e3c9fd0803ce80000006011553480156200005c57600080fd5b5060006200006f6200019460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200018e6040518060400160405280600981526020017f5a756b69204d6f626100000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a554b490000000000000000000000000000000000000000000000000000000081525060126011546200019c60201b60201c565b620006fd565b600033905090565b8360069080519060200190620001b492919062000647565b508260079080519060200190620001cd92919062000647565b5081600860006101000a81548160ff021916908360ff160217905550620001f9620003b060201b60201c565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200025a6200024d620003b060201b60201c565b82620003d960201b60201c565b60016009600062000270620003b060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000620002d7620003b060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60006200033e620003b060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860016101000a81548160ff02191690831515021790555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200047d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6200049160008383620005b960201b60201c565b620004ad81600554620005be60201b620037311790919060201c565b6005819055506200050c81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620005be60201b620037311790919060201c565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b6000808284019050838110156200063d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200067f5760008555620006cb565b82601f106200069a57805160ff1916838001178555620006cb565b82800160010185558215620006cb579182015b82811115620006ca578251825591602001919060010190620006ad565b5b509050620006da9190620006de565b5090565b5b80821115620006f9576000816000905550600101620006df565b5090565b6146cc806200070d6000396000f3fe60806040526004361061026b5760003560e01c80636a1db1bf11610144578063b6c52324116100b6578063d5abeb011161007a578063d5abeb0114611340578063d5e406491461136b578063d8c6404b146114c4578063dd62ed3e146114f1578063f2fde38b14611576578063f640d508146115c757610272565b8063b6c5232414610fd3578063c24df1f214610ffe578063c2c7c03a14611157578063c68b330514611194578063cb045c61146111e757610272565b80638da5cb5b116101085780638da5cb5b14610d6857806395d89b4114610da9578063a0712d6814610e39578063a457c2d714610e8a578063a9059cbb14610efb578063b36d691914610f6c57610272565b80636a1db1bf14610af157806370a0823114610b2c578063715018a614610b915780637730e81914610ba8578063844f30fb14610d0157610272565b806332a88ea2116101dd5780634838d165116101a15780634838d165146108ad5780635342acb41461091457806356e88ff11461097b578063643b0de4146109e257806364c0218f14610a49578063659419a414610ab057610272565b806332a88ea2146105f057806336807a531461065757806339509351146107b05780633e4d03101461082157806342966c681461087257610272565b806311bdfd141161022f57806311bdfd141461043557806318160ddd146104725780631f6d1d751461049d57806323b872dd14610504578063313ce5671461059557806331428a41146105c357610272565b806301c234a81461027757806306fdde03146102a2578063095ea7b3146103325780630b38dd3e146103a35780630f61b70e146103ce57610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c611642565b6040518082815260200191505060405180910390f35b3480156102ae57600080fd5b506102b7611648565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033e57600080fd5b5061038b6004803603604081101561035557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116ea565b60405180821515815260200191505060405180910390f35b3480156103af57600080fd5b506103b8611708565b6040518082815260200191505060405180910390f35b3480156103da57600080fd5b5061041d600480360360208110156103f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061170e565b60405180821515815260200191505060405180910390f35b34801561044157600080fd5b506104706004803603602081101561045857600080fd5b8101908080351515906020019092919050505061172e565b005b34801561047e57600080fd5b50610487611813565b6040518082815260200191505060405180910390f35b3480156104a957600080fd5b506104ec600480360360208110156104c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061181d565b60405180821515815260200191505060405180910390f35b34801561051057600080fd5b5061057d6004803603606081101561052757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611873565b60405180821515815260200191505060405180910390f35b3480156105a157600080fd5b506105aa611b30565b604051808260ff16815260200191505060405180910390f35b3480156105cf57600080fd5b506105d8611b47565b60405180821515815260200191505060405180910390f35b3480156105fc57600080fd5b5061063f6004803603602081101561061357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b5a565b60405180821515815260200191505060405180910390f35b34801561066357600080fd5b506107ae6004803603604081101561067a57600080fd5b810190808035906020019064010000000081111561069757600080fd5b8201836020820111156106a957600080fd5b803590602001918460208302840111640100000000831117156106cb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561072b57600080fd5b82018360208201111561073d57600080fd5b8035906020019184602083028401116401000000008311171561075f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611bb0565b005b3480156107bc57600080fd5b50610809600480360360408110156107d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d86565b60405180821515815260200191505060405180910390f35b34801561082d57600080fd5b506108706004803603602081101561084457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e39565b005b34801561087e57600080fd5b506108ab6004803603602081101561089557600080fd5b8101908080359060200190929190505050611f45565b005b3480156108b957600080fd5b506108fc600480360360208110156108d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f59565b60405180821515815260200191505060405180910390f35b34801561092057600080fd5b506109636004803603602081101561093757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f79565b60405180821515815260200191505060405180910390f35b34801561098757600080fd5b506109ca6004803603602081101561099e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fcf565b60405180821515815260200191505060405180910390f35b3480156109ee57600080fd5b50610a3160048036036020811015610a0557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fef565b60405180821515815260200191505060405180910390f35b348015610a5557600080fd5b50610a9860048036036020811015610a6c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061200f565b60405180821515815260200191505060405180910390f35b348015610abc57600080fd5b50610ac561202f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610afd57600080fd5b50610b2a60048036036020811015610b1457600080fd5b8101908080359060200190929190505050612055565b005b348015610b3857600080fd5b50610b7b60048036036020811015610b4f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612127565b6040518082815260200191505060405180910390f35b348015610b9d57600080fd5b50610ba6612170565b005b348015610bb457600080fd5b50610cff60048036036040811015610bcb57600080fd5b8101908080359060200190640100000000811115610be857600080fd5b820183602082011115610bfa57600080fd5b80359060200191846020830284011164010000000083111715610c1c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610c7c57600080fd5b820183602082011115610c8e57600080fd5b80359060200191846020830284011164010000000083111715610cb057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506122f6565b005b348015610d0d57600080fd5b50610d5060048036036020811015610d2457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124cc565b60405180821515815260200191505060405180910390f35b348015610d7457600080fd5b50610d7d612522565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610db557600080fd5b50610dbe61254b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610dfe578082015181840152602081019050610de3565b50505050905090810190601f168015610e2b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610e4557600080fd5b50610e7260048036036020811015610e5c57600080fd5b81019080803590602001909291905050506125ed565b60405180821515815260200191505060405180910390f35b348015610e9657600080fd5b50610ee360048036036040811015610ead57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612753565b60405180821515815260200191505060405180910390f35b348015610f0757600080fd5b50610f5460048036036040811015610f1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612820565b60405180821515815260200191505060405180910390f35b348015610f7857600080fd5b50610fbb60048036036020811015610f8f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ad6565b60405180821515815260200191505060405180910390f35b348015610fdf57600080fd5b50610fe8612b2c565b6040518082815260200191505060405180910390f35b34801561100a57600080fd5b506111556004803603604081101561102157600080fd5b810190808035906020019064010000000081111561103e57600080fd5b82018360208201111561105057600080fd5b8035906020019184602083028401116401000000008311171561107257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156110d257600080fd5b8201836020820111156110e457600080fd5b8035906020019184602083028401116401000000008311171561110657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612b36565b005b34801561116357600080fd5b506111926004803603602081101561117a57600080fd5b81019080803515159060200190929190505050612d0c565b005b3480156111a057600080fd5b506111cf600480360360208110156111b757600080fd5b81019080803515159060200190929190505050612df1565b60405180821515815260200191505060405180910390f35b3480156111f357600080fd5b5061133e6004803603604081101561120a57600080fd5b810190808035906020019064010000000081111561122757600080fd5b82018360208201111561123957600080fd5b8035906020019184602083028401116401000000008311171561125b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156112bb57600080fd5b8201836020820111156112cd57600080fd5b803590602001918460208302840111640100000000831117156112ef57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612ede565b005b34801561134c57600080fd5b506113556130b4565b6040518082815260200191505060405180910390f35b34801561137757600080fd5b506114c26004803603604081101561138e57600080fd5b81019080803590602001906401000000008111156113ab57600080fd5b8201836020820111156113bd57600080fd5b803590602001918460208302840111640100000000831117156113df57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561143f57600080fd5b82018360208201111561145157600080fd5b8035906020019184602083028401116401000000008311171561147357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506130ba565b005b3480156114d057600080fd5b506114d9613290565b60405180821515815260200191505060405180910390f35b3480156114fd57600080fd5b506115606004803603604081101561151457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132a3565b6040518082815260200191505060405180910390f35b34801561158257600080fd5b506115c56004803603602081101561159957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061332a565b005b3480156115d357600080fd5b50611640600480360360608110156115ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613535565b005b6103e881565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116e05780601f106116b5576101008083540402835291602001916116e0565b820191906000526020600020905b8154815290600101906020018083116116c357829003601f168201915b5050505050905090565b60006116fe6116f76137b9565b84846137c1565b6001905092915050565b600f5481565b600d6020528060005260406000206000915054906101000a900460ff1681565b6117366137b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600e60016101000a81548160ff02191690831515021790555050565b6000600554905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008061189f6103e8611891600f54866139b890919063ffffffff16565b613a3e90919063ffffffff16565b905060006118b68285613ac790919063ffffffff16565b90506118c0612522565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015611952575060001515600960006119066137b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b80156119ae575060001515600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b8015611a0a575060001515600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15611a5657611a1a868683613b4a565b6000821115611a5157611a5086601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613b4a565b5b611a62565b611a61868686613b4a565b5b611b2386611a6e6137b9565b611b1e8760405180606001604052806028815260200161459660289139600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611ad46137b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c899092919063ffffffff16565b6137c1565b6001925050509392505050565b6000600860009054906101000a900460ff16905090565b600e60019054906101000a900460ff1681565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611bb86137b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b8251811015611cfc576001600a6000858481518110611c9657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611c7b565b5060005b8151811015611d81576000600a6000848481518110611d1b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611d00565b505050565b6000611e2f611d936137b9565b84611e2a8560046000611da46137b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461373190919063ffffffff16565b6137c1565b6001905092915050565b611e416137b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611f56611f506137b9565b82613d43565b50565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61205d6137b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461211d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600f8190555050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6121786137b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612238576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6122fe6137b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b8251811015612442576001600d60008584815181106123dc57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506123c1565b5060005b81518110156124c7576000600d600084848151811061246157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050612446565b505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156125e35780601f106125b8576101008083540402835291602001916125e3565b820191906000526020600020905b8154815290600101906020018083116125c657829003601f168201915b5050505050905090565b60006125f76137b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860019054906101000a900460ff16612739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7468697320746f6b656e206973206e6f74206d696e7461626c6500000000000081525060200191505060405180910390fd5b61274a6127446137b9565b83613f09565b60019050919050565b60006128166127606137b9565b8461281185604051806060016040528060258152602001614672602591396004600061278a6137b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c899092919063ffffffff16565b6137c1565b6001905092915050565b60008061284c6103e861283e600f54866139b890919063ffffffff16565b613a3e90919063ffffffff16565b905060006128638285613ac790919063ffffffff16565b905061286d612522565b73ffffffffffffffffffffffffffffffffffffffff1661288b6137b9565b73ffffffffffffffffffffffffffffffffffffffff1614158015612906575060001515600960006128ba6137b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b8015612962575060001515600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b156129b8576129796129726137b9565b8683613b4a565b60008211156129b7576129b661298d6137b9565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613b4a565b5b5b6129c0612522565b73ffffffffffffffffffffffffffffffffffffffff166129de6137b9565b73ffffffffffffffffffffffffffffffffffffffff161480612a5757506001151560096000612a0b6137b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b80612ab2575060011515600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612aca57612ac9612ac26137b9565b8686613b4a565b5b60019250505092915050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600254905090565b612b3e6137b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bfe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b8251811015612c8257600160096000858481518110612c1c57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050612c01565b5060005b8151811015612d0757600060096000848481518110612ca157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050612c86565b505050565b612d146137b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b6000612dfb6137b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ebb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b81600860016101000a81548160ff02191690831515021790555060019050919050565b612ee66137b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612fa6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b825181101561302a576001600c6000858481518110612fc457fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050612fa9565b5060005b81518110156130af576000600c600084848151811061304957fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505061302e565b505050565b60115481565b6130c26137b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613182576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b8251811015613206576001600b60008584815181106131a057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050613185565b5060005b815181101561328b576000600b600084848151811061322557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505061320a565b505050565b600e60009054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6133326137b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146133f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613478576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806145286026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61353d6137b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146135fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561367e578073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613678573d6000803e3d6000fd5b5061372c565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156136ef57600080fd5b505af1158015613703573d6000803e3d6000fd5b505050506040513d602081101561371957600080fd5b8101908080519060200190929190505050505b505050565b6000808284019050838110156137af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061464e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061454e6022913960400191505060405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000808314156139cb5760009050613a38565b60008284029050828482816139dc57fe5b0414613a33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806145e76021913960400191505060405180910390fd5b809150505b92915050565b6000808211613ab5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b818381613abe57fe5b04905092915050565b600082821115613b3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613bee5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613c065750600e60009054906101000a900460ff165b15613c79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f416e746920426f7400000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b613c848383836140d2565b505050565b6000838311158290613d36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613cfb578082015181840152602081019050613ce0565b50505050905090810190601f168015613d285780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613dc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806146086021913960400191505060405180910390fd5b613dd5826000836144dd565b613e418160405180606001604052806022815260200161450660229139600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c899092919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e9981600554613ac790919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613fac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b613fb8600083836144dd565b613fcd8160055461373190919063ffffffff16565b60058190555061402581600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461373190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614158576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806146296025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156141de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806144e36023913960400191505060405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806145be6029913960400191505060405180910390fd5b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614324576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806145be6029913960400191505060405180910390fd5b61432f8383836144dd565b61439b8160405180606001604052806026815260200161457060269139600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c899092919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061443081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461373190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e7366657220746f2074686520626c61636b206c6973742061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220500caf6b6262a4640fddd4804688936fc1733aca85be4413ef3e5cccb17170fa64736f6c63430007040033
Deployed ByteCode Sourcemap
79:695:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2048:47:1;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2714:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5586:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2011:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1878:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15665:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3781:106;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16467:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6255:990;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3632:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1970:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17223:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14483:428;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7640:289;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16589:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;281:81:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1781:41:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14358:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1726:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1828:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1673:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2101:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16695:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3945:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1800:145:3;;;;;;;;;;;;;:::i;:::-;;16801:416:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14917:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1176:77:3;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2916:93:1;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13604:185;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8416:386;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4317:880;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15452:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2340:87:3;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13930:422:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15565:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13795:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16048:413;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;142:48:5;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15042:404:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1930:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5255:193;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2094:240:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15770:272:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2048:47;2091:4;2048:47;:::o;2714:89::-;2759:13;2791:5;2784:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:89;:::o;5586:202::-;5701:4;5721:39;5730:12;:10;:12::i;:::-;5744:7;5753:6;5721:8;:39::i;:::-;5777:4;5770:11;;5586:202;;;;:::o;2011:31::-;;;;:::o;1878:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;15665:99::-;1390:12:3;:10;:12::i;:::-;1380:22;;:6;;;;;;;;;;:22;;;1372:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15750:7:1::1;15734:13;;:23;;;;;;;;;;;;;;;;;;15665:99:::0;:::o;3781:106::-;3842:7;3868:12;;3861:19;;3781:106;:::o;16467:116::-;16532:4;16555:12;:21;16568:7;16555:21;;;;;;;;;;;;;;;;;;;;;;;;;16548:28;;16467:116;;;:::o;6255:990::-;6391:4;6407:19;6429:46;2091:4;6429:24;6440:12;;6429:6;:10;;:24;;;;:::i;:::-;:28;;:46;;;;:::i;:::-;6407:68;;6485:22;6510:23;6521:11;6510:6;:10;;:23;;;;:::i;:::-;6485:48;;6570:7;:5;:7::i;:::-;6560:17;;:6;:17;;;;:71;;;;;6626:5;6593:38;;:15;:29;6609:12;:10;:12::i;:::-;6593:29;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;6560:71;:123;;;;;6678:5;6651:32;;:15;:23;6667:6;6651:23;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;6560:123;:180;;;;;6735:5;6703:37;;:17;:28;6721:9;6703:28;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;6560:180;6543:452;;;6765:44;6775:6;6783:9;6794:14;6765:9;:44::i;:::-;6840:1;6826:11;:15;6823:95;;;6861:42;6871:6;6879:10;;;;;;;;;;;6891:11;6861:9;:42::i;:::-;6823:95;6543:452;;;6948:36;6958:6;6966:9;6977:6;6948:9;:36::i;:::-;6543:452;7004:213;7026:6;7046:12;:10;:12::i;:::-;7072:135;7127:6;7072:135;;;;;;;;;;;;;;;;;:11;:19;7084:6;7072:19;;;;;;;;;;;;;;;:33;7092:12;:10;:12::i;:::-;7072:33;;;;;;;;;;;;;;;;:37;;:135;;;;;:::i;:::-;7004:8;:213::i;:::-;7234:4;7227:11;;;;6255:990;;;;;:::o;3632:89::-;3681:5;3705:9;;;;;;;;;;;3698:16;;3632:89;:::o;1970:33::-;;;;;;;;;;;;;:::o;17223:118::-;17289:4;17312:13;:22;17326:7;17312:22;;;;;;;;;;;;;;;;;;;;;;;;;17305:29;;17223:118;;;:::o;14483:428::-;1390:12:3;:10;:12::i;:::-;1380:22;;:6;;;;;;;;;;:22;;;1372:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14636:13:1::1;14631:128;14659:12;:19;14651:5;:27;14631:128;;;14744:4;14703:17;:38;14721:12;14734:5;14721:19;;;;;;;;;;;;;;14703:38;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;14680:7;;;;;;;14631:128;;;;14773:13;14768:137;14796:16;:23;14788:5;:31;14768:137;;;14889:5;14844:17;:42;14862:16;14879:5;14862:23;;;;;;;;;;;;;;14844:42;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;14821:7;;;;;;;14768:137;;;;14483:428:::0;;:::o;7640:289::-;7752:4;7772:129;7794:12;:10;:12::i;:::-;7820:7;7841:50;7880:10;7841:11;:25;7853:12;:10;:12::i;:::-;7841:25;;;;;;;;;;;;;;;:34;7867:7;7841:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;7772:8;:129::i;:::-;7918:4;7911:11;;7640:289;;;;:::o;16589:100::-;1390:12:3;:10;:12::i;:::-;1380:22;;:6;;;;;;;;;;:22;;;1372:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16673:9:1::1;16660:10;;:22;;;;;;;;;;;;;;;;;;16589:100:::0;:::o;281:81:5:-;328:27;334:12;:10;:12::i;:::-;348:6;328:5;:27::i;:::-;281:81;:::o;1781:41:1:-;;;;;;;;;;;;;;;;;;;;;;:::o;14358:119::-;14423:4;14446:15;:24;14462:7;14446:24;;;;;;;;;;;;;;;;;;;;;;;;;14439:31;;14358:119;;;:::o;1726:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;1828:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;1673:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;2101:25::-;;;;;;;;;;;;;:::o;16695:100::-;1390:12:3;:10;:12::i;:::-;1380:22;;:6;;;;;;;;;;:22;;;1372:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16777:11:1::1;16762:12;:26;;;;16695:100:::0;:::o;3945:169::-;4059:7;4089:9;:18;4099:7;4089:18;;;;;;;;;;;;;;;;4082:25;;3945:169;;;:::o;1800:145:3:-;1390:12;:10;:12::i;:::-;1380:22;;:6;;;;;;;;;;:22;;;1372:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:1:::1;1869:40;;1890:6;::::0;::::1;;;;;;;;1869:40;;;;;;;;;;;;1936:1;1919:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1800:145::o:0;16801:416:1:-;1390:12:3;:10;:12::i;:::-;1380:22;;:6;;;;;;;;;;:22;;;1372:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16950:13:1::1;16945:124;16973:12;:19;16965:5;:27;16945:124;;;17054:4;17017:13;:34;17031:12;17044:5;17031:19;;;;;;;;;;;;;;17017:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;16994:7;;;;;;;16945:124;;;;17083:13;17078:133;17106:16;:23;17098:5;:31;17078:133;;;17195:5;17154:13;:38;17168:16;17185:5;17168:23;;;;;;;;;;;;;;17154:38;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17131:7;;;;;;;17078:133;;;;16801:416:::0;;:::o;14917:119::-;14980:4;15003:17;:26;15021:7;15003:26;;;;;;;;;;;;;;;;;;;;;;;;;14996:33;;14917:119;;;:::o;1176:77:3:-;1214:7;1240:6;;;;;;;;;;;1233:13;;1176:77;:::o;2916:93:1:-;2963:13;2995:7;2988:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2916:93;:::o;13604:185::-;13660:4;1390:12:3;:10;:12::i;:::-;1380:22;;:6;;;;;;;;;;:22;;;1372:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13684:9:1::1;;;;;;;;;;;13676:48;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;13734:27;13740:12;:10;:12::i;:::-;13754:6;13734:5;:27::i;:::-;13778:4;13771:11;;13604:185:::0;;;:::o;8416:386::-;8533:4;8553:221;8575:12;:10;:12::i;:::-;8601:7;8622:142;8678:15;8622:142;;;;;;;;;;;;;;;;;:11;:25;8634:12;:10;:12::i;:::-;8622:25;;;;;;;;;;;;;;;:34;8648:7;8622:34;;;;;;;;;;;;;;;;:38;;:142;;;;;:::i;:::-;8553:8;:221::i;:::-;8791:4;8784:11;;8416:386;;;;:::o;4317:880::-;4435:4;4455:19;4477:46;2091:4;4477:24;4488:12;;4477:6;:10;;:24;;;;:::i;:::-;:28;;:46;;;;:::i;:::-;4455:68;;4533:22;4558:23;4569:11;4558:6;:10;;:23;;;;:::i;:::-;4533:48;;4624:7;:5;:7::i;:::-;4608:23;;:12;:10;:12::i;:::-;:23;;;;:77;;;;;4680:5;4647:38;;:15;:29;4663:12;:10;:12::i;:::-;4647:29;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;4608:77;:130;;;;;4733:5;4701:37;;:17;:28;4719:9;4701:28;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;4608:130;4591:347;;;4763:50;4773:12;:10;:12::i;:::-;4787:9;4798:14;4763:9;:50::i;:::-;4844:1;4830:11;:15;4827:101;;;4865:48;4875:12;:10;:12::i;:::-;4889:10;;;;;;;;;;;4901:11;4865:9;:48::i;:::-;4827:101;4591:347;4980:7;:5;:7::i;:::-;4964:23;;:12;:10;:12::i;:::-;:23;;;:76;;;;5036:4;5003:37;;:15;:29;5019:12;:10;:12::i;:::-;5003:29;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;4964:76;:128;;;;5088:4;5056:36;;:17;:28;5074:9;5056:28;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;4964:128;4947:223;;;5117:42;5127:12;:10;:12::i;:::-;5141:9;5152:6;5117:9;:42::i;:::-;4947:223;5186:4;5179:11;;;;4317:880;;;;:::o;15452:107::-;15511:4;15534:9;:18;15544:7;15534:18;;;;;;;;;;;;;;;;;;;;;;;;;15527:25;;15452:107;;;:::o;2340:87:3:-;2385:7;2411:9;;2404:16;;2340:87;:::o;13930:422:1:-;1390:12:3;:10;:12::i;:::-;1380:22;;:6;;;;;;;;;;:22;;;1372:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14081:13:1::1;14076:126;14104:12;:19;14096:5;:27;14076:126;;;14187:4;14148:15;:36;14164:12;14177:5;14164:19;;;;;;;;;;;;;;14148:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;14125:7;;;;;;;14076:126;;;;14216:13;14211:135;14239:16;:23;14231:5;:31;14211:135;;;14330:5;14287:15;:40;14303:16;14320:5;14303:23;;;;;;;;;;;;;;14287:40;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;14264:7;;;;;;;14211:135;;;;13930:422:::0;;:::o;15565:94::-;1390:12:3;:10;:12::i;:::-;1380:22;;:6;;;;;;;;;;:22;;;1372:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15645:7:1::1;15628:14;;:24;;;;;;;;;;;;;;;;;;15565:94:::0;:::o;13795:129::-;13858:4;1390:12:3;:10;:12::i;:::-;1380:22;;:6;;;;;;;;;;:22;;;1372:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13886:10:1::1;13874:9;;:22;;;;;;;;;;;;;;;;;;13913:4;13906:11;;13795:129:::0;;;:::o;16048:413::-;1390:12:3;:10;:12::i;:::-;1380:22;;:6;;;;;;;;;;:22;;;1372:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16196:13:1::1;16191:123;16219:12;:19;16211:5;:27;16191:123;;;16299:4;16263:12;:33;16276:12;16289:5;16276:19;;;;;;;;;;;;;;16263:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;16240:7;;;;;;;16191:123;;;;16328:13;16323:132;16351:16;:23;16343:5;:31;16323:132;;;16439:5;16399:12;:37;16412:16;16429:5;16412:23;;;;;;;;;;;;;;16399:37;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;16376:7;;;;;;;16323:132;;;;16048:413:::0;;:::o;142:48:5:-;;;;:::o;15042:404:1:-;1390:12:3;:10;:12::i;:::-;1380:22;;:6;;;;;;;;;;:22;;;1372:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15187:13:1::1;15182:120;15210:12;:19;15202:5;:27;15182:120;;;15287:4;15254:9;:30;15264:12;15277:5;15264:19;;;;;;;;;;;;;;15254:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15231:7;;;;;;;15182:120;;;;15316:13;15311:129;15339:16;:23;15331:5;:31;15311:129;;;15424:5;15387:9;:34;15397:16;15414:5;15397:23;;;;;;;;;;;;;;15387:34;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;15364:7;;;;;;;15311:129;;;;15042:404:::0;;:::o;1930:34::-;;;;;;;;;;;;;:::o;5255:193::-;5384:7;5414:11;:18;5426:5;5414:18;;;;;;;;;;;;;;;:27;5433:7;5414:27;;;;;;;;;;;;;;;;5407:34;;5255:193;;;;:::o;2094:240:3:-;1390:12;:10;:12::i;:::-;1380:22;;:6;;;;;;;;;;:22;;;1372:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2202:1:::1;2182:22;;:8;:22;;;;2174:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:8;2262:38;;2283:6;::::0;::::1;;;;;;;;2262:38;;;;;;;;;;;;2319:8;2310:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2094:240:::0;:::o;15770:272:1:-;1390:12:3;:10;:12::i;:::-;1380:22;;:6;;;;;;;;;;:22;;;1372:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15933:1:1::1;15910:25;;:11;:25;;;15906:81;;;15958:2;:11;;:18;15970:5;15958:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15951:25;;15906:81;16003:11;15996:28;;;16025:2;16029:5;15996:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;1449:1:3;15770:272:1::0;;;:::o;2681:175:4:-;2739:7;2758:9;2774:1;2770;:5;2758:17;;2798:1;2793;:6;;2785:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2848:1;2841:8;;;2681:175;;;;:::o;589:104:0:-;642:15;676:10;669:17;;589:104;:::o;11865:370:1:-;12013:1;11996:19;;:5;:19;;;;11988:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12093:1;12074:21;;:7;:21;;;;12066:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12175:6;12145:11;:18;12157:5;12145:18;;;;;;;;;;;;;;;:27;12164:7;12145:27;;;;;;;;;;;;;;;:36;;;;12212:7;12196:32;;12205:5;12196:32;;;12221:6;12196:32;;;;;;;;;;;;;;;;;;11865:370;;;:::o;3529:215:4:-;3587:7;3615:1;3610;:6;3606:20;;;3625:1;3618:8;;;;3606:20;3636:9;3652:1;3648;:5;3636:17;;3680:1;3675;3671;:5;;;;;;:10;3663:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3736:1;3729:8;;;3529:215;;;;;:::o;4208:150::-;4266:7;4297:1;4293;:5;4285:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4350:1;4346;:5;;;;;;4339:12;;4208:150;;;;:::o;3127:155::-;3185:7;3217:1;3212;:6;;3204:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3274:1;3270;:5;3263:12;;3127:155;;;;:::o;368:332:5:-;522:12;:20;535:6;522:20;;;;;;;;;;;;;;;;;;;;;;;;;521:21;:49;;;;;547:12;:23;560:9;547:23;;;;;;;;;;;;;;;;;;;;;;;;;546:24;521:49;:67;;;;;574:14;;;;;;;;;;;521:67;504:138;;;613:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;504:138;651:42;667:6;675:9;686:6;651:15;:42::i;:::-;368:332;;;:::o;5423:163:4:-;5509:7;5541:1;5536;:6;;5544:12;5528:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5578:1;5574;:5;5567:12;;5423:163;;;;;:::o;10998:444:1:-;11100:1;11081:21;;:7;:21;;;;11073:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11151:49;11172:7;11189:1;11193:6;11151:20;:49::i;:::-;11232:102;11268:6;11232:102;;;;;;;;;;;;;;;;;:9;:18;11242:7;11232:18;;;;;;;;;;;;;;;;:22;;:102;;;;;:::i;:::-;11211:9;:18;11221:7;11211:18;;;;;;;;;;;;;;;:123;;;;11359:24;11376:6;11359:12;;:16;;:24;;;;:::i;:::-;11344:12;:39;;;;11424:1;11398:37;;11407:7;11398:37;;;11428:6;11398:37;;;;;;;;;;;;;;;;;;10998:444;;:::o;10308:370::-;10410:1;10391:21;;:7;:21;;;;10383:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10459:49;10488:1;10492:7;10501:6;10459:20;:49::i;:::-;10534:24;10551:6;10534:12;;:16;;:24;;;;:::i;:::-;10519:12;:39;;;;10589:30;10612:6;10589:9;:18;10599:7;10589:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;10568:9;:18;10578:7;10568:18;;;;;;;;;;;;;;;:51;;;;10655:7;10634:37;;10651:1;10634:37;;;10664:6;10634:37;;;;;;;;;;;;;;;;;;10308:370;;:::o;9276:761::-;9429:1;9411:20;;:6;:20;;;;9403:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9512:1;9491:23;;:9;:23;;;;9483:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9573:9;:17;9583:6;9573:17;;;;;;;;;;;;;;;;;;;;;;;;;9572:18;9564:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9655:9;:20;9665:9;9655:20;;;;;;;;;;;;;;;;;;;;;;;;;9654:21;9646:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9732:47;9753:6;9761:9;9772:6;9732:20;:47::i;:::-;9810:105;9845:6;9810:105;;;;;;;;;;;;;;;;;:9;:17;9820:6;9810:17;;;;;;;;;;;;;;;;:21;;:105;;;;;:::i;:::-;9790:9;:17;9800:6;9790:17;;;;;;;;;;;;;;;:125;;;;9948:32;9973:6;9948:9;:20;9958:9;9948:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9925:9;:20;9935:9;9925:20;;;;;;;;;;;;;;;:55;;;;10012:9;9995:35;;10004:6;9995:35;;;10023:6;9995:35;;;;;;;;;;;;;;;;;;9276:761;;;:::o;13241:121::-;;;;:::o
Swarm Source
ipfs://500caf6b6262a4640fddd4804688936fc1733aca85be4413ef3e5cccb17170fa