ERC-20
Overview
Max Total Supply
100,000,000,000 WAKEUP
Holders
67
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Balance
334,636,351.9918045 WAKEUPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
WakeUp
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-29 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; // OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol) // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ 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) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { 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) { unchecked { // 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) { unchecked { 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) { unchecked { 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) { return a + b; } /** * @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) { 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) { return a * b; } /** * @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. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { 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) { 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) { unchecked { 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. * * 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) { unchecked { 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) { unchecked { require(b > 0, errorMessage); return a % b; } } } // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint256); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens(uint256 amountOut, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts); function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external pure returns (uint256 amountB); function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountOut); function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract WakeUp is IERC20, Ownable { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _technicalAccounts; mapping(address => bool) private bots; mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; address payable private _taxWallet; uint256 private _preventSwapBefore = 80; uint256 private _buyCount = 0; uint8 private constant _decimals = 8; uint256 private constant _tTotal = 100_000_000_000 * 10 ** _decimals; string private constant _name = unicode"WAKE UP"; string private constant _symbol = unicode"WAKEUP"; uint256 public _maxTxAmount = _tTotal / 100; // 1% uint256 public _maxWalletSize = _tTotal / 100; // 1% uint256 public _taxSwapThreshold = _tTotal / 200; uint256 public _maxTaxSwap = _tTotal / 200; mapping(address => bool) private _whitelist; uint8 public _stage = 1; IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address public uniswapV2Pair; bool private inSwap = false; bool private swapEnabled = true; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor() { _taxWallet = payable(_msgSender()); _balances[_msgSender()] = _tTotal; _technicalAccounts[owner()] = true; _technicalAccounts[address(this)] = true; _technicalAccounts[_taxWallet] = true; // UNCX Network Liquidity Lock Contract _technicalAccounts[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // UNCX Network Token Lock Contract _technicalAccounts[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // PinkSale Token Lock Contract _technicalAccounts[0x71B5759d73262FBb223956913ecF4ecC51057641] = true; emit Transfer(address(0), _msgSender(), _tTotal); // Known MEV bots bots[0x6b75d8AF000000e20B7a7DDf000Ba900b4009A80] = true; bots[0xae2Fc483527B8EF99EB5D9B44875F005ba1FaE13] = true; // Uniswap Setup uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); _allowances[msg.sender][address(uniswapV2Router)] = type(uint256).max; _allowances[address(this)][address(uniswapV2Router)] = type(uint256).max; _allowances[msg.sender][address(this)] = type(uint256).max; } function openTrading() public payable onlyOwner { uniswapV2Router.addLiquidityETH{value: msg.value}( address(this), balanceOf(address(this)), 0, 0, _taxWallet, block.timestamp ); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance") ); return true; } function _approve(address owner, address spender, uint256 amount) private { 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); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 taxAmount = 0; require(!bots[from] && !bots[to] && !bots[tx.origin], "bot blocked"); if (!isTechnicalAccount(from) && !isTechnicalAccount(to)) { if (isWhitelistActive()) { require( isWhitelisted(from) || isWhitelisted(to), "Only whitelisted addresses can transfer during whitelist phase" ); } taxAmount = calculateTax(amount, getBuyTax()); if (transferDelayEnabled) { if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } if (from == uniswapV2Pair && to != address(uniswapV2Router)) { require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize."); _buyCount++; } if (to == uniswapV2Pair && from != address(this)) { taxAmount = calculateTax(amount, getSaleTax()); } uint256 contractTokenBalance = balanceOf(address(this)); if ( !inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore ) { swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap))); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } _balances[from] = _balances[from].sub(amount); _balances[to] = _balances[to].add(amount.sub(taxAmount)); emit Transfer(from, to, amount.sub(taxAmount)); if (taxAmount > 0) { _balances[address(this)] = _balances[address(this)].add(taxAmount); emit Transfer(from, address(this), taxAmount); } } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function removeLimits() external onlyOwner { _maxTxAmount = _tTotal; _maxWalletSize = _tTotal; transferDelayEnabled = false; emit MaxTxAmountUpdated(_tTotal); } function sendETHToFee(uint256 amount) private { _taxWallet.transfer(amount); } function addBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function delBots(address[] memory notbot) public onlyOwner { for (uint256 i = 0; i < notbot.length; i++) { bots[notbot[i]] = false; } } function isBot(address a) public view returns (bool) { return bots[a]; } receive() external payable {} function manualSwap() external { require(_msgSender() == _taxWallet); uint256 tokenBalance = balanceOf(address(this)); if (tokenBalance > 0) { swapTokensForEth(tokenBalance); } uint256 ethBalance = address(this).balance; if (ethBalance > 0) { sendETHToFee(ethBalance); } } function addToWhitelist(address[] calldata addresses) public onlyOwner { for (uint256 i = 0; i < addresses.length; i++) { _whitelist[addresses[i]] = true; } } function removeFromWhitelist(address[] calldata addresses) public onlyOwner { for (uint256 i = 0; i < addresses.length; i++) { _whitelist[addresses[i]] = false; } } function getBuyTax() internal view returns (uint256) { // whitelist stage if (_stage == 1) { return 0; } // public stages if (_stage == 2) { return 7; } if (_stage == 3) { return 3; } return 0; } function getSaleTax() internal view returns (uint256) { // whitelist stage if (_stage == 1) { return 27; } // public stages if (_stage == 2) { return 14; } if (_stage == 3) { return 7; } if (_stage == 4) { return 3; } return 0; } function calculateTax(uint256 amount, uint256 tax) internal pure returns (uint256) { return amount.mul(tax).div(100); } // Checks if given address is whitelisted function isWhitelisted(address who) internal view returns (bool) { return _whitelist[who]; } // If only whitelisted addresses can trade or is it open to the public function isWhitelistActive() internal view returns (bool) { return _stage == 1; } function advanceStage() public onlyOwner { _stage += 1; require(_stage <= 5, "No more stages"); } function isTechnicalAccount(address who) internal view returns (bool) { return _technicalAccounts[who] || who == owner(); } }
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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"advanceStage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600160065f6101000a81548160ff02191690831515021790555060506007555f60085560646008600a62000039919062000cde565b64174876e8006200004b919062000d2e565b62000057919062000da5565b60095560646008600a6200006c919062000cde565b64174876e8006200007e919062000d2e565b6200008a919062000da5565b600a5560c86008600a6200009f919062000cde565b64174876e800620000b1919062000d2e565b620000bd919062000da5565b600b5560c86008600a620000d2919062000cde565b64174876e800620000e4919062000d2e565b620000f0919062000da5565b600c556001600e5f6101000a81548160ff021916908360ff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600e60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600f60146101000a81548160ff0219169083151502179055506001600f60156101000a81548160ff021916908315150217905550348015620001a4575f80fd5b50620001c5620001b962000a5d60201b60201c565b62000a6460201b60201c565b620001d562000a5d60201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a62000225919062000cde565b64174876e80062000237919062000d2e565b60015f6200024a62000a5d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6200029c62000b2560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f73663a5c229c09b049e36dcc11a9b0d4a8eb9db21473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f73dba68f07d1b7ca219f78ae8582c213d975c25caf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f7371b5759d73262fbb223956913ecf4ecc5105764173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200050262000a5d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a62000560919062000cde565b64174876e80062000572919062000d2e565b60405162000581919062000ded565b60405180910390a3600160045f736b75d8af000000e20b7a7ddf000ba900b4009a8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73ae2fc483527b8ef99eb5d9b44875f005ba1fae1373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006c7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620006ed919062000e6d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000775573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200079b919062000e6d565b6040518363ffffffff1660e01b8152600401620007ba92919062000eae565b6020604051808303815f875af1158015620007d7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620007fd919062000e6d565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555062000ed9565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000bd65780860481111562000bae5762000bad62000b4c565b5b600185161562000bbe5780820291505b808102905062000bce8562000b79565b945062000b8e565b94509492505050565b5f8262000bf0576001905062000cc2565b8162000bff575f905062000cc2565b816001811462000c18576002811462000c235762000c59565b600191505062000cc2565b60ff84111562000c385762000c3762000b4c565b5b8360020a91508482111562000c525762000c5162000b4c565b5b5062000cc2565b5060208310610133831016604e8410600b841016171562000c935782820a90508381111562000c8d5762000c8c62000b4c565b5b62000cc2565b62000ca2848484600162000b85565b9250905081840481111562000cbc5762000cbb62000b4c565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000cea8262000cc9565b915062000cf78362000cd2565b925062000d267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bdf565b905092915050565b5f62000d3a8262000cc9565b915062000d478362000cc9565b925082820262000d578162000cc9565b9150828204841483151762000d715762000d7062000b4c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000db18262000cc9565b915062000dbe8362000cc9565b92508262000dd15762000dd062000d78565b5b828204905092915050565b62000de78162000cc9565b82525050565b5f60208201905062000e025f83018462000ddc565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e378262000e0c565b9050919050565b62000e498162000e2b565b811462000e54575f80fd5b50565b5f8151905062000e678162000e3e565b92915050565b5f6020828403121562000e855762000e8462000e08565b5b5f62000e948482850162000e57565b91505092915050565b62000ea88162000e2b565b82525050565b5f60408201905062000ec35f83018562000e9d565b62000ed2602083018462000e9d565b9392505050565b6135008062000ee75f395ff3fe6080604052600436106101c5575f3560e01c8063715018a6116100f6578063a9059cbb11610094578063c9567bf911610063578063c9567bf9146105ee578063d34628cc146105f8578063dd62ed3e14610620578063f2fde38b1461065c576101cc565b8063a9059cbb14610548578063bf474bed14610584578063c33f48fd146105ae578063c876d0b9146105c4576101cc565b80637f649783116100d05780637f649783146104a25780638da5cb5b146104ca5780638f9a55c0146104f457806395d89b411461051e576101cc565b8063715018a61461044c578063751039fc146104625780637d1db4a514610478576101cc565b8063313ce5671161016357806349bd5a5e1161013d57806349bd5a5e146103a857806351bc3c85146103d2578063548db174146103e857806370a0823114610410576101cc565b8063313ce5671461031a57806331c2d847146103445780633bbac5791461036c576101cc565b806316396b631161019f57806316396b63146102605780631694505e1461028a57806318160ddd146102b457806323b872dd146102de576101cc565b806306fdde03146101d0578063095ea7b3146101fa5780630faee56f14610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e4610684565b6040516101f1919061233d565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b91906123fb565b6106c1565b60405161022d9190612453565b60405180910390f35b348015610241575f80fd5b5061024a6106de565b604051610257919061247b565b60405180910390f35b34801561026b575f80fd5b506102746106e4565b60405161028191906124af565b60405180910390f35b348015610295575f80fd5b5061029e6106f6565b6040516102ab9190612523565b60405180910390f35b3480156102bf575f80fd5b506102c861071c565b6040516102d5919061247b565b60405180910390f35b3480156102e9575f80fd5b5061030460048036038101906102ff919061253c565b610740565b6040516103119190612453565b60405180910390f35b348015610325575f80fd5b5061032e610814565b60405161033b91906124af565b60405180910390f35b34801561034f575f80fd5b5061036a600480360381019061036591906126cc565b61081c565b005b348015610377575f80fd5b50610392600480360381019061038d9190612713565b6108b4565b60405161039f9190612453565b60405180910390f35b3480156103b3575f80fd5b506103bc610906565b6040516103c9919061274d565b60405180910390f35b3480156103dd575f80fd5b506103e661092b565b005b3480156103f3575f80fd5b5061040e600480360381019061040991906127bf565b6109c3565b005b34801561041b575f80fd5b5061043660048036038101906104319190612713565b610a6b565b604051610443919061247b565b60405180910390f35b348015610457575f80fd5b50610460610ab1565b005b34801561046d575f80fd5b50610476610ac4565b005b348015610483575f80fd5b5061048c610b83565b604051610499919061247b565b60405180910390f35b3480156104ad575f80fd5b506104c860048036038101906104c391906127bf565b610b89565b005b3480156104d5575f80fd5b506104de610c32565b6040516104eb919061274d565b60405180910390f35b3480156104ff575f80fd5b50610508610c59565b604051610515919061247b565b60405180910390f35b348015610529575f80fd5b50610532610c5f565b60405161053f919061233d565b60405180910390f35b348015610553575f80fd5b5061056e600480360381019061056991906123fb565b610c9c565b60405161057b9190612453565b60405180910390f35b34801561058f575f80fd5b50610598610cb9565b6040516105a5919061247b565b60405180910390f35b3480156105b9575f80fd5b506105c2610cbf565b005b3480156105cf575f80fd5b506105d8610d54565b6040516105e59190612453565b60405180910390f35b6105f6610d66565b005b348015610603575f80fd5b5061061e600480360381019061061991906126cc565b610e44565b005b34801561062b575f80fd5b506106466004803603810190610641919061280a565b610edd565b604051610653919061247b565b60405180910390f35b348015610667575f80fd5b50610682600480360381019061067d9190612713565b610f5f565b005b60606040518060400160405280600781526020017f57414b4520555000000000000000000000000000000000000000000000000000815250905090565b5f6106d46106cd610fe1565b8484610fe8565b6001905092915050565b600c5481565b600e5f9054906101000a900460ff1681565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6008600a61072b91906129a4565b64174876e80061073b91906129ee565b905090565b5f61074c8484846111ab565b61080984610758610fe1565b610804856040518060600160405280602881526020016134a36028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107bb610fe1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bb59092919063ffffffff16565b610fe8565b600190509392505050565b5f6008905090565b610824611c09565b5f5b81518110156108b0575f60045f84848151811061084657610845612a2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806108a890612a5c565b915050610826565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661096c610fe1565b73ffffffffffffffffffffffffffffffffffffffff161461098b575f80fd5b5f61099530610a6b565b90505f8111156109a9576109a881611c87565b5b5f4790505f8111156109bf576109be81611ef5565b5b5050565b6109cb611c09565b5f5b82829050811015610a66575f600d5f8585858181106109ef576109ee612a2f565b5b9050602002016020810190610a049190612713565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610a5e90612a5c565b9150506109cd565b505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ab9611c09565b610ac25f611f5e565b565b610acc611c09565b6008600a610ada91906129a4565b64174876e800610aea91906129ee565b6009819055506008600a610afe91906129a4565b64174876e800610b0e91906129ee565b600a819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610b5c91906129a4565b64174876e800610b6c91906129ee565b604051610b79919061247b565b60405180910390a1565b60095481565b610b91611c09565b5f5b82829050811015610c2d576001600d5f858585818110610bb657610bb5612a2f565b5b9050602002016020810190610bcb9190612713565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610c2590612a5c565b915050610b93565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5481565b60606040518060400160405280600681526020017f57414b4555500000000000000000000000000000000000000000000000000000815250905090565b5f610caf610ca8610fe1565b84846111ab565b6001905092915050565b600b5481565b610cc7611c09565b6001600e5f8282829054906101000a900460ff16610ce59190612aa3565b92506101000a81548160ff021916908360ff1602179055506005600e5f9054906101000a900460ff1660ff161115610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990612b21565b60405180910390fd5b565b60065f9054906101000a900460ff1681565b610d6e611c09565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610db730610a6b565b5f80600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401610dfe96959493929190612b98565b60606040518083038185885af1158015610e1a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e3f9190612c0b565b505050565b610e4c611c09565b5f5b8151811015610ed957600160045f848481518110610e6f57610e6e612a2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610ed190612a5c565b915050610e4e565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610f67611c09565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc90612ccb565b60405180910390fd5b610fde81611f5e565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d90612d59565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb90612de7565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161119e919061247b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121090612e75565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e90612f03565b60405180910390fd5b5f81116112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c090612f91565b60405180910390fd5b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611368575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156113bb575060045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190612ff9565b60405180910390fd5b6114038461201f565b15801561141657506114148361201f565b155b15611905576114236120ae565b1561148157611431846120c9565b806114415750611440836120c9565b5b611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147790613087565b60405180910390fd5b5b6114928261148d61211b565b612188565b905060065f9054906101000a900460ff161561161b57600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115535750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561161a574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce9061313b565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116c55750600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561177f5760095482111561170f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611706906131a3565b60405180910390fd5b600a548261171c85610a6b565b61172691906131c1565b1115611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e9061323e565b60405180910390fd5b60085f81548092919061177990612a5c565b91905055505b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561180757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118205761181d826118186121b7565b612188565b90505b5f61182a30610a6b565b9050600f60149054906101000a900460ff161580156118955750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156118ad5750600f60159054906101000a900460ff165b80156118ba5750600b5481115b80156118c95750600754600854115b15611903576118eb6118e6846118e184600c54612247565b612247565b611c87565b5f4790505f8111156119015761190047611ef5565b5b505b505b6119558260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461225f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506119f86119ac828461225f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611a9b848661225f90919063ffffffff16565b604051611aa8919061247b565b60405180910390a35f811115611baf57611b088160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ba6919061247b565b60405180910390a35b50505050565b5f838311158290611bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf3919061233d565b60405180910390fd5b5082840390509392505050565b611c11610fe1565b73ffffffffffffffffffffffffffffffffffffffff16611c2f610c32565b73ffffffffffffffffffffffffffffffffffffffff1614611c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7c906132a6565b60405180910390fd5b565b6001600f60146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611cbe57611cbd612590565b5b604051908082528060200260200182016040528015611cec5781602001602082028036833780820191505090505b50905030815f81518110611d0357611d02612a2f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dcc91906132d8565b81600181518110611de057611ddf612a2f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e4730600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fe8565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611eaa9594939291906133ba565b5f604051808303815f87803b158015611ec1575f80fd5b505af1158015611ed3573d5f803e3d5ffd5b50505050505f600f60146101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f5a573d5f803e3d5ffd5b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806120a75750612078610c32565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b5f6001600e5f9054906101000a900460ff1660ff1614905090565b5f600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f6001600e5f9054906101000a900460ff1660ff160361213d575f9050612185565b6002600e5f9054906101000a900460ff1660ff160361215f5760079050612185565b6003600e5f9054906101000a900460ff1660ff16036121815760039050612185565b5f90505b90565b5f6121af60646121a1848661228990919063ffffffff16565b61229e90919063ffffffff16565b905092915050565b5f6001600e5f9054906101000a900460ff1660ff16036121da57601b9050612244565b6002600e5f9054906101000a900460ff1660ff16036121fc57600e9050612244565b6003600e5f9054906101000a900460ff1660ff160361221e5760079050612244565b6004600e5f9054906101000a900460ff1660ff16036122405760039050612244565b5f90505b90565b5f8183116122555782612257565b815b905092915050565b5f818361226c9190613412565b905092915050565b5f818361228191906131c1565b905092915050565b5f818361229691906129ee565b905092915050565b5f81836122ab9190613472565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156122ea5780820151818401526020810190506122cf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61230f826122b3565b61231981856122bd565b93506123298185602086016122cd565b612332816122f5565b840191505092915050565b5f6020820190508181035f8301526123558184612305565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123978261236e565b9050919050565b6123a78161238d565b81146123b1575f80fd5b50565b5f813590506123c28161239e565b92915050565b5f819050919050565b6123da816123c8565b81146123e4575f80fd5b50565b5f813590506123f5816123d1565b92915050565b5f806040838503121561241157612410612366565b5b5f61241e858286016123b4565b925050602061242f858286016123e7565b9150509250929050565b5f8115159050919050565b61244d81612439565b82525050565b5f6020820190506124665f830184612444565b92915050565b612475816123c8565b82525050565b5f60208201905061248e5f83018461246c565b92915050565b5f60ff82169050919050565b6124a981612494565b82525050565b5f6020820190506124c25f8301846124a0565b92915050565b5f819050919050565b5f6124eb6124e66124e18461236e565b6124c8565b61236e565b9050919050565b5f6124fc826124d1565b9050919050565b5f61250d826124f2565b9050919050565b61251d81612503565b82525050565b5f6020820190506125365f830184612514565b92915050565b5f805f6060848603121561255357612552612366565b5b5f612560868287016123b4565b9350506020612571868287016123b4565b9250506040612582868287016123e7565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125c6826122f5565b810181811067ffffffffffffffff821117156125e5576125e4612590565b5b80604052505050565b5f6125f761235d565b905061260382826125bd565b919050565b5f67ffffffffffffffff82111561262257612621612590565b5b602082029050602081019050919050565b5f80fd5b5f61264961264484612608565b6125ee565b9050808382526020820190506020840283018581111561266c5761266b612633565b5b835b81811015612695578061268188826123b4565b84526020840193505060208101905061266e565b5050509392505050565b5f82601f8301126126b3576126b261258c565b5b81356126c3848260208601612637565b91505092915050565b5f602082840312156126e1576126e0612366565b5b5f82013567ffffffffffffffff8111156126fe576126fd61236a565b5b61270a8482850161269f565b91505092915050565b5f6020828403121561272857612727612366565b5b5f612735848285016123b4565b91505092915050565b6127478161238d565b82525050565b5f6020820190506127605f83018461273e565b92915050565b5f80fd5b5f8083601f84011261277f5761277e61258c565b5b8235905067ffffffffffffffff81111561279c5761279b612766565b5b6020830191508360208202830111156127b8576127b7612633565b5b9250929050565b5f80602083850312156127d5576127d4612366565b5b5f83013567ffffffffffffffff8111156127f2576127f161236a565b5b6127fe8582860161276a565b92509250509250929050565b5f80604083850312156128205761281f612366565b5b5f61282d858286016123b4565b925050602061283e858286016123b4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156128ca578086048111156128a6576128a5612848565b5b60018516156128b55780820291505b80810290506128c385612875565b945061288a565b94509492505050565b5f826128e2576001905061299d565b816128ef575f905061299d565b8160018114612905576002811461290f5761293e565b600191505061299d565b60ff84111561292157612920612848565b5b8360020a91508482111561293857612937612848565b5b5061299d565b5060208310610133831016604e8410600b84101617156129735782820a90508381111561296e5761296d612848565b5b61299d565b6129808484846001612881565b9250905081840481111561299757612996612848565b5b81810290505b9392505050565b5f6129ae826123c8565b91506129b983612494565b92506129e67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846128d3565b905092915050565b5f6129f8826123c8565b9150612a03836123c8565b9250828202612a11816123c8565b91508282048414831517612a2857612a27612848565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612a66826123c8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a9857612a97612848565b5b600182019050919050565b5f612aad82612494565b9150612ab883612494565b9250828201905060ff811115612ad157612ad0612848565b5b92915050565b7f4e6f206d6f7265207374616765730000000000000000000000000000000000005f82015250565b5f612b0b600e836122bd565b9150612b1682612ad7565b602082019050919050565b5f6020820190508181035f830152612b3881612aff565b9050919050565b5f819050919050565b5f612b62612b5d612b5884612b3f565b6124c8565b6123c8565b9050919050565b612b7281612b48565b82525050565b5f612b82826124f2565b9050919050565b612b9281612b78565b82525050565b5f60c082019050612bab5f83018961273e565b612bb8602083018861246c565b612bc56040830187612b69565b612bd26060830186612b69565b612bdf6080830185612b89565b612bec60a083018461246c565b979650505050505050565b5f81519050612c05816123d1565b92915050565b5f805f60608486031215612c2257612c21612366565b5b5f612c2f86828701612bf7565b9350506020612c4086828701612bf7565b9250506040612c5186828701612bf7565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612cb56026836122bd565b9150612cc082612c5b565b604082019050919050565b5f6020820190508181035f830152612ce281612ca9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612d436024836122bd565b9150612d4e82612ce9565b604082019050919050565b5f6020820190508181035f830152612d7081612d37565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612dd16022836122bd565b9150612ddc82612d77565b604082019050919050565b5f6020820190508181035f830152612dfe81612dc5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612e5f6025836122bd565b9150612e6a82612e05565b604082019050919050565b5f6020820190508181035f830152612e8c81612e53565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612eed6023836122bd565b9150612ef882612e93565b604082019050919050565b5f6020820190508181035f830152612f1a81612ee1565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612f7b6029836122bd565b9150612f8682612f21565b604082019050919050565b5f6020820190508181035f830152612fa881612f6f565b9050919050565b7f626f7420626c6f636b65640000000000000000000000000000000000000000005f82015250565b5f612fe3600b836122bd565b9150612fee82612faf565b602082019050919050565b5f6020820190508181035f83015261301081612fd7565b9050919050565b7f4f6e6c792077686974656c6973746564206164647265737365732063616e20745f8201527f72616e7366657220647572696e672077686974656c6973742070686173650000602082015250565b5f613071603e836122bd565b915061307c82613017565b604082019050919050565b5f6020820190508181035f83015261309e81613065565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6131256049836122bd565b9150613130826130a5565b606082019050919050565b5f6020820190508181035f83015261315281613119565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61318d6019836122bd565b915061319882613159565b602082019050919050565b5f6020820190508181035f8301526131ba81613181565b9050919050565b5f6131cb826123c8565b91506131d6836123c8565b92508282019050808211156131ee576131ed612848565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613228601a836122bd565b9150613233826131f4565b602082019050919050565b5f6020820190508181035f8301526132558161321c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132906020836122bd565b915061329b8261325c565b602082019050919050565b5f6020820190508181035f8301526132bd81613284565b9050919050565b5f815190506132d28161239e565b92915050565b5f602082840312156132ed576132ec612366565b5b5f6132fa848285016132c4565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6133358161238d565b82525050565b5f613346838361332c565b60208301905092915050565b5f602082019050919050565b5f61336882613303565b613372818561330d565b935061337d8361331d565b805f5b838110156133ad578151613394888261333b565b975061339f83613352565b925050600181019050613380565b5085935050505092915050565b5f60a0820190506133cd5f83018861246c565b6133da6020830187612b69565b81810360408301526133ec818661335e565b90506133fb606083018561273e565b613408608083018461246c565b9695505050505050565b5f61341c826123c8565b9150613427836123c8565b925082820390508181111561343f5761343e612848565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61347c826123c8565b9150613487836123c8565b92508261349757613496613445565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220398877621974bcae97a8dcee3a6565993fcd60cb94c0eed2021c9d93a59a991b64736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101c5575f3560e01c8063715018a6116100f6578063a9059cbb11610094578063c9567bf911610063578063c9567bf9146105ee578063d34628cc146105f8578063dd62ed3e14610620578063f2fde38b1461065c576101cc565b8063a9059cbb14610548578063bf474bed14610584578063c33f48fd146105ae578063c876d0b9146105c4576101cc565b80637f649783116100d05780637f649783146104a25780638da5cb5b146104ca5780638f9a55c0146104f457806395d89b411461051e576101cc565b8063715018a61461044c578063751039fc146104625780637d1db4a514610478576101cc565b8063313ce5671161016357806349bd5a5e1161013d57806349bd5a5e146103a857806351bc3c85146103d2578063548db174146103e857806370a0823114610410576101cc565b8063313ce5671461031a57806331c2d847146103445780633bbac5791461036c576101cc565b806316396b631161019f57806316396b63146102605780631694505e1461028a57806318160ddd146102b457806323b872dd146102de576101cc565b806306fdde03146101d0578063095ea7b3146101fa5780630faee56f14610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e4610684565b6040516101f1919061233d565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b91906123fb565b6106c1565b60405161022d9190612453565b60405180910390f35b348015610241575f80fd5b5061024a6106de565b604051610257919061247b565b60405180910390f35b34801561026b575f80fd5b506102746106e4565b60405161028191906124af565b60405180910390f35b348015610295575f80fd5b5061029e6106f6565b6040516102ab9190612523565b60405180910390f35b3480156102bf575f80fd5b506102c861071c565b6040516102d5919061247b565b60405180910390f35b3480156102e9575f80fd5b5061030460048036038101906102ff919061253c565b610740565b6040516103119190612453565b60405180910390f35b348015610325575f80fd5b5061032e610814565b60405161033b91906124af565b60405180910390f35b34801561034f575f80fd5b5061036a600480360381019061036591906126cc565b61081c565b005b348015610377575f80fd5b50610392600480360381019061038d9190612713565b6108b4565b60405161039f9190612453565b60405180910390f35b3480156103b3575f80fd5b506103bc610906565b6040516103c9919061274d565b60405180910390f35b3480156103dd575f80fd5b506103e661092b565b005b3480156103f3575f80fd5b5061040e600480360381019061040991906127bf565b6109c3565b005b34801561041b575f80fd5b5061043660048036038101906104319190612713565b610a6b565b604051610443919061247b565b60405180910390f35b348015610457575f80fd5b50610460610ab1565b005b34801561046d575f80fd5b50610476610ac4565b005b348015610483575f80fd5b5061048c610b83565b604051610499919061247b565b60405180910390f35b3480156104ad575f80fd5b506104c860048036038101906104c391906127bf565b610b89565b005b3480156104d5575f80fd5b506104de610c32565b6040516104eb919061274d565b60405180910390f35b3480156104ff575f80fd5b50610508610c59565b604051610515919061247b565b60405180910390f35b348015610529575f80fd5b50610532610c5f565b60405161053f919061233d565b60405180910390f35b348015610553575f80fd5b5061056e600480360381019061056991906123fb565b610c9c565b60405161057b9190612453565b60405180910390f35b34801561058f575f80fd5b50610598610cb9565b6040516105a5919061247b565b60405180910390f35b3480156105b9575f80fd5b506105c2610cbf565b005b3480156105cf575f80fd5b506105d8610d54565b6040516105e59190612453565b60405180910390f35b6105f6610d66565b005b348015610603575f80fd5b5061061e600480360381019061061991906126cc565b610e44565b005b34801561062b575f80fd5b506106466004803603810190610641919061280a565b610edd565b604051610653919061247b565b60405180910390f35b348015610667575f80fd5b50610682600480360381019061067d9190612713565b610f5f565b005b60606040518060400160405280600781526020017f57414b4520555000000000000000000000000000000000000000000000000000815250905090565b5f6106d46106cd610fe1565b8484610fe8565b6001905092915050565b600c5481565b600e5f9054906101000a900460ff1681565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6008600a61072b91906129a4565b64174876e80061073b91906129ee565b905090565b5f61074c8484846111ab565b61080984610758610fe1565b610804856040518060600160405280602881526020016134a36028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107bb610fe1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bb59092919063ffffffff16565b610fe8565b600190509392505050565b5f6008905090565b610824611c09565b5f5b81518110156108b0575f60045f84848151811061084657610845612a2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806108a890612a5c565b915050610826565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661096c610fe1565b73ffffffffffffffffffffffffffffffffffffffff161461098b575f80fd5b5f61099530610a6b565b90505f8111156109a9576109a881611c87565b5b5f4790505f8111156109bf576109be81611ef5565b5b5050565b6109cb611c09565b5f5b82829050811015610a66575f600d5f8585858181106109ef576109ee612a2f565b5b9050602002016020810190610a049190612713565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610a5e90612a5c565b9150506109cd565b505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ab9611c09565b610ac25f611f5e565b565b610acc611c09565b6008600a610ada91906129a4565b64174876e800610aea91906129ee565b6009819055506008600a610afe91906129a4565b64174876e800610b0e91906129ee565b600a819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610b5c91906129a4565b64174876e800610b6c91906129ee565b604051610b79919061247b565b60405180910390a1565b60095481565b610b91611c09565b5f5b82829050811015610c2d576001600d5f858585818110610bb657610bb5612a2f565b5b9050602002016020810190610bcb9190612713565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610c2590612a5c565b915050610b93565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5481565b60606040518060400160405280600681526020017f57414b4555500000000000000000000000000000000000000000000000000000815250905090565b5f610caf610ca8610fe1565b84846111ab565b6001905092915050565b600b5481565b610cc7611c09565b6001600e5f8282829054906101000a900460ff16610ce59190612aa3565b92506101000a81548160ff021916908360ff1602179055506005600e5f9054906101000a900460ff1660ff161115610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990612b21565b60405180910390fd5b565b60065f9054906101000a900460ff1681565b610d6e611c09565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610db730610a6b565b5f80600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401610dfe96959493929190612b98565b60606040518083038185885af1158015610e1a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e3f9190612c0b565b505050565b610e4c611c09565b5f5b8151811015610ed957600160045f848481518110610e6f57610e6e612a2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610ed190612a5c565b915050610e4e565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610f67611c09565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc90612ccb565b60405180910390fd5b610fde81611f5e565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d90612d59565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb90612de7565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161119e919061247b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121090612e75565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e90612f03565b60405180910390fd5b5f81116112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c090612f91565b60405180910390fd5b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611368575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156113bb575060045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190612ff9565b60405180910390fd5b6114038461201f565b15801561141657506114148361201f565b155b15611905576114236120ae565b1561148157611431846120c9565b806114415750611440836120c9565b5b611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147790613087565b60405180910390fd5b5b6114928261148d61211b565b612188565b905060065f9054906101000a900460ff161561161b57600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115535750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561161a574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce9061313b565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116c55750600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561177f5760095482111561170f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611706906131a3565b60405180910390fd5b600a548261171c85610a6b565b61172691906131c1565b1115611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e9061323e565b60405180910390fd5b60085f81548092919061177990612a5c565b91905055505b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561180757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118205761181d826118186121b7565b612188565b90505b5f61182a30610a6b565b9050600f60149054906101000a900460ff161580156118955750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156118ad5750600f60159054906101000a900460ff165b80156118ba5750600b5481115b80156118c95750600754600854115b15611903576118eb6118e6846118e184600c54612247565b612247565b611c87565b5f4790505f8111156119015761190047611ef5565b5b505b505b6119558260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461225f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506119f86119ac828461225f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611a9b848661225f90919063ffffffff16565b604051611aa8919061247b565b60405180910390a35f811115611baf57611b088160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ba6919061247b565b60405180910390a35b50505050565b5f838311158290611bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf3919061233d565b60405180910390fd5b5082840390509392505050565b611c11610fe1565b73ffffffffffffffffffffffffffffffffffffffff16611c2f610c32565b73ffffffffffffffffffffffffffffffffffffffff1614611c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7c906132a6565b60405180910390fd5b565b6001600f60146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611cbe57611cbd612590565b5b604051908082528060200260200182016040528015611cec5781602001602082028036833780820191505090505b50905030815f81518110611d0357611d02612a2f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dcc91906132d8565b81600181518110611de057611ddf612a2f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e4730600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fe8565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611eaa9594939291906133ba565b5f604051808303815f87803b158015611ec1575f80fd5b505af1158015611ed3573d5f803e3d5ffd5b50505050505f600f60146101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f5a573d5f803e3d5ffd5b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806120a75750612078610c32565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b5f6001600e5f9054906101000a900460ff1660ff1614905090565b5f600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f6001600e5f9054906101000a900460ff1660ff160361213d575f9050612185565b6002600e5f9054906101000a900460ff1660ff160361215f5760079050612185565b6003600e5f9054906101000a900460ff1660ff16036121815760039050612185565b5f90505b90565b5f6121af60646121a1848661228990919063ffffffff16565b61229e90919063ffffffff16565b905092915050565b5f6001600e5f9054906101000a900460ff1660ff16036121da57601b9050612244565b6002600e5f9054906101000a900460ff1660ff16036121fc57600e9050612244565b6003600e5f9054906101000a900460ff1660ff160361221e5760079050612244565b6004600e5f9054906101000a900460ff1660ff16036122405760039050612244565b5f90505b90565b5f8183116122555782612257565b815b905092915050565b5f818361226c9190613412565b905092915050565b5f818361228191906131c1565b905092915050565b5f818361229691906129ee565b905092915050565b5f81836122ab9190613472565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156122ea5780820151818401526020810190506122cf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61230f826122b3565b61231981856122bd565b93506123298185602086016122cd565b612332816122f5565b840191505092915050565b5f6020820190508181035f8301526123558184612305565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123978261236e565b9050919050565b6123a78161238d565b81146123b1575f80fd5b50565b5f813590506123c28161239e565b92915050565b5f819050919050565b6123da816123c8565b81146123e4575f80fd5b50565b5f813590506123f5816123d1565b92915050565b5f806040838503121561241157612410612366565b5b5f61241e858286016123b4565b925050602061242f858286016123e7565b9150509250929050565b5f8115159050919050565b61244d81612439565b82525050565b5f6020820190506124665f830184612444565b92915050565b612475816123c8565b82525050565b5f60208201905061248e5f83018461246c565b92915050565b5f60ff82169050919050565b6124a981612494565b82525050565b5f6020820190506124c25f8301846124a0565b92915050565b5f819050919050565b5f6124eb6124e66124e18461236e565b6124c8565b61236e565b9050919050565b5f6124fc826124d1565b9050919050565b5f61250d826124f2565b9050919050565b61251d81612503565b82525050565b5f6020820190506125365f830184612514565b92915050565b5f805f6060848603121561255357612552612366565b5b5f612560868287016123b4565b9350506020612571868287016123b4565b9250506040612582868287016123e7565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125c6826122f5565b810181811067ffffffffffffffff821117156125e5576125e4612590565b5b80604052505050565b5f6125f761235d565b905061260382826125bd565b919050565b5f67ffffffffffffffff82111561262257612621612590565b5b602082029050602081019050919050565b5f80fd5b5f61264961264484612608565b6125ee565b9050808382526020820190506020840283018581111561266c5761266b612633565b5b835b81811015612695578061268188826123b4565b84526020840193505060208101905061266e565b5050509392505050565b5f82601f8301126126b3576126b261258c565b5b81356126c3848260208601612637565b91505092915050565b5f602082840312156126e1576126e0612366565b5b5f82013567ffffffffffffffff8111156126fe576126fd61236a565b5b61270a8482850161269f565b91505092915050565b5f6020828403121561272857612727612366565b5b5f612735848285016123b4565b91505092915050565b6127478161238d565b82525050565b5f6020820190506127605f83018461273e565b92915050565b5f80fd5b5f8083601f84011261277f5761277e61258c565b5b8235905067ffffffffffffffff81111561279c5761279b612766565b5b6020830191508360208202830111156127b8576127b7612633565b5b9250929050565b5f80602083850312156127d5576127d4612366565b5b5f83013567ffffffffffffffff8111156127f2576127f161236a565b5b6127fe8582860161276a565b92509250509250929050565b5f80604083850312156128205761281f612366565b5b5f61282d858286016123b4565b925050602061283e858286016123b4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156128ca578086048111156128a6576128a5612848565b5b60018516156128b55780820291505b80810290506128c385612875565b945061288a565b94509492505050565b5f826128e2576001905061299d565b816128ef575f905061299d565b8160018114612905576002811461290f5761293e565b600191505061299d565b60ff84111561292157612920612848565b5b8360020a91508482111561293857612937612848565b5b5061299d565b5060208310610133831016604e8410600b84101617156129735782820a90508381111561296e5761296d612848565b5b61299d565b6129808484846001612881565b9250905081840481111561299757612996612848565b5b81810290505b9392505050565b5f6129ae826123c8565b91506129b983612494565b92506129e67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846128d3565b905092915050565b5f6129f8826123c8565b9150612a03836123c8565b9250828202612a11816123c8565b91508282048414831517612a2857612a27612848565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612a66826123c8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a9857612a97612848565b5b600182019050919050565b5f612aad82612494565b9150612ab883612494565b9250828201905060ff811115612ad157612ad0612848565b5b92915050565b7f4e6f206d6f7265207374616765730000000000000000000000000000000000005f82015250565b5f612b0b600e836122bd565b9150612b1682612ad7565b602082019050919050565b5f6020820190508181035f830152612b3881612aff565b9050919050565b5f819050919050565b5f612b62612b5d612b5884612b3f565b6124c8565b6123c8565b9050919050565b612b7281612b48565b82525050565b5f612b82826124f2565b9050919050565b612b9281612b78565b82525050565b5f60c082019050612bab5f83018961273e565b612bb8602083018861246c565b612bc56040830187612b69565b612bd26060830186612b69565b612bdf6080830185612b89565b612bec60a083018461246c565b979650505050505050565b5f81519050612c05816123d1565b92915050565b5f805f60608486031215612c2257612c21612366565b5b5f612c2f86828701612bf7565b9350506020612c4086828701612bf7565b9250506040612c5186828701612bf7565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612cb56026836122bd565b9150612cc082612c5b565b604082019050919050565b5f6020820190508181035f830152612ce281612ca9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612d436024836122bd565b9150612d4e82612ce9565b604082019050919050565b5f6020820190508181035f830152612d7081612d37565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612dd16022836122bd565b9150612ddc82612d77565b604082019050919050565b5f6020820190508181035f830152612dfe81612dc5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612e5f6025836122bd565b9150612e6a82612e05565b604082019050919050565b5f6020820190508181035f830152612e8c81612e53565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612eed6023836122bd565b9150612ef882612e93565b604082019050919050565b5f6020820190508181035f830152612f1a81612ee1565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612f7b6029836122bd565b9150612f8682612f21565b604082019050919050565b5f6020820190508181035f830152612fa881612f6f565b9050919050565b7f626f7420626c6f636b65640000000000000000000000000000000000000000005f82015250565b5f612fe3600b836122bd565b9150612fee82612faf565b602082019050919050565b5f6020820190508181035f83015261301081612fd7565b9050919050565b7f4f6e6c792077686974656c6973746564206164647265737365732063616e20745f8201527f72616e7366657220647572696e672077686974656c6973742070686173650000602082015250565b5f613071603e836122bd565b915061307c82613017565b604082019050919050565b5f6020820190508181035f83015261309e81613065565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6131256049836122bd565b9150613130826130a5565b606082019050919050565b5f6020820190508181035f83015261315281613119565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61318d6019836122bd565b915061319882613159565b602082019050919050565b5f6020820190508181035f8301526131ba81613181565b9050919050565b5f6131cb826123c8565b91506131d6836123c8565b92508282019050808211156131ee576131ed612848565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613228601a836122bd565b9150613233826131f4565b602082019050919050565b5f6020820190508181035f8301526132558161321c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132906020836122bd565b915061329b8261325c565b602082019050919050565b5f6020820190508181035f8301526132bd81613284565b9050919050565b5f815190506132d28161239e565b92915050565b5f602082840312156132ed576132ec612366565b5b5f6132fa848285016132c4565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6133358161238d565b82525050565b5f613346838361332c565b60208301905092915050565b5f602082019050919050565b5f61336882613303565b613372818561330d565b935061337d8361331d565b805f5b838110156133ad578151613394888261333b565b975061339f83613352565b925050600181019050613380565b5085935050505092915050565b5f60a0820190506133cd5f83018861246c565b6133da6020830187612b69565b81810360408301526133ec818661335e565b90506133fb606083018561273e565b613408608083018461246c565b9695505050505050565b5f61341c826123c8565b9150613427836123c8565b925082820390508181111561343f5761343e612848565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61347c826123c8565b9150613487836123c8565b92508261349757613496613445565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220398877621974bcae97a8dcee3a6565993fcd60cb94c0eed2021c9d93a59a991b64736f6c63430008140033
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.