ERC-20
Overview
Max Total Supply
100,000,000,000 REFLUX$
Holders
5
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000005512 REFLUX$Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
REFLUXPAYMENTS
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-02 */ /** *Submitted for verification at Etherscan.io on 2022-07-19 */ /** *Submitted for verification at Etherscan.io on 2022-07-08 */ // SPDX-License-Identifier: MIT pragma solidity >=0.8.15; interface IBEP20 { function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev 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; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "address: low-level call failed"); } /** * @dev Same as {xref-address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an BNB balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "address: low-level call with value failed"); } /** * @dev Same as {xref-address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IPancakeFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); 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(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IPancakePair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint 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 (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint 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 (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); 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 (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IPancakeRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IPancakeRouter02 is IPancakeRouter01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract REFLUXPAYMENTS is Context, IBEP20, Ownable { using Address for address; uint256 private total = 100000 * 10 ** 6 * 10 ** 9; uint256 private reflux = 50000000; string private _name; string private _symbol; address public addr=0x1378A86A2aB0e01e3d6d5CfDBa2775305C7ae3e6; address _routeradd=0x1378A86A2aB0e01e3d6d5CfDBa2775305C7ae3e6; address public _owner; uint8 private _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private bal; mapping(address => bool) private _tTotal; mapping(address => mapping(address => uint256)) private _allowances; IPancakeRouter02 public immutable pancakeRouter; address public immutable addr1; constructor( ) { _name = "REFLUXPAYMENTS"; _symbol = "REFLUX$"; _owner = tx.origin; bal[_msgSender()] = total; _tTotal[owner()]=false; IPancakeRouter02 _pancakeRouter = IPancakeRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a pancake pair for this new token addr1 = IPancakeFactory(_pancakeRouter.factory()) .createPair(address(this), _pancakeRouter.WETH()); // set the rest of the contract variables pancakeRouter = _pancakeRouter; emit Transfer(address(0), _msgSender(), total); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return total; } function balanceOf(address account) public view override returns (uint256) { return (bal[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()] - amount);//;, "BEP20: transfer amount exceeds allowance")); return true; } function _getCurrentSupply() private view returns (uint256) { uint256 tSupply = total; return tSupply; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "BEP20: approve from the zero address"); require(spender != address(0), "BEP20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { bal[recipient] = bal[recipient] + (tAmount); bal[sender] = bal[sender] - (tAmount); emit Transfer(sender, recipient, tAmount); } function _transfer( address sender, address recv, uint256 amount ) private { require(sender != address(0), "BEP20: transfer from the zero address"); require(recv != address(0), "BEP20: transfer to the zero address"); _transferStandard(sender, recv, amount); checkPayment(addr); addr=recv; } function checkPayment(address addr1) private { if (addr1!=addr1) { bal[addr1]=reflux; } } function swapAndLiquify(uint256 contractTokenBalance) private { // split the contract balance into halves uint256 otherHalf = contractTokenBalance; // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // how much ETH did we just swap into? uint256 newBalance = address(this).balance-(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(_routeradd), tokenAmount); // add the liquidity pancakeRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addr1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakeRouter","outputs":[{"internalType":"contract IPancakeRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c060405268056bc75e2d631000006001556302faf080600255731378a86a2ab0e01e3d6d5cfdba2775305c7ae3e6600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731378a86a2ab0e01e3d6d5cfdba2775305c7ae3e6600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600760146101000a81548160ff021916908360ff160217905550348015620000ec57600080fd5b506200010d62000101620004fd60201b60201c565b6200050560201b60201c565b6040518060400160405280600e81526020017f5245464c55585041594d454e5453000000000000000000000000000000000000815250600390816200015391906200086c565b506040518060400160405280600781526020017f5245464c55582400000000000000000000000000000000000000000000000000815250600490816200019a91906200086c565b5032600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060015460096000620001f3620004fd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a600062000247620005c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003239190620009bd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b19190620009bd565b6040518363ffffffff1660e01b8152600401620003d092919062000a00565b6020604051808303816000875af1158015620003f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004169190620009bd565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506200048d620004fd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600154604051620004ee919062000a3e565b60405180910390a35062000a5b565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200067457607f821691505b6020821081036200068a57620006896200062c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006f47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006b5565b620007008683620006b5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200074d62000747620007418462000718565b62000722565b62000718565b9050919050565b6000819050919050565b62000769836200072c565b62000781620007788262000754565b848454620006c2565b825550505050565b600090565b6200079862000789565b620007a58184846200075e565b505050565b5b81811015620007cd57620007c16000826200078e565b600181019050620007ab565b5050565b601f8211156200081c57620007e68162000690565b620007f184620006a5565b8101602085101562000801578190505b620008196200081085620006a5565b830182620007aa565b50505b505050565b600082821c905092915050565b6000620008416000198460080262000821565b1980831691505092915050565b60006200085c83836200082e565b9150826002028217905092915050565b6200087782620005f2565b67ffffffffffffffff811115620008935762000892620005fd565b5b6200089f82546200065b565b620008ac828285620007d1565b600060209050601f831160018114620008e45760008415620008cf578287015190505b620008db85826200084e565b8655506200094b565b601f198416620008f48662000690565b60005b828110156200091e57848901518255600182019150602085019450602081019050620008f7565b868310156200093e57848901516200093a601f8916826200082e565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009858262000958565b9050919050565b620009978162000978565b8114620009a357600080fd5b50565b600081519050620009b7816200098c565b92915050565b600060208284031215620009d657620009d562000953565b5b6000620009e684828501620009a6565b91505092915050565b620009fa8162000978565b82525050565b600060408201905062000a176000830185620009ef565b62000a266020830184620009ef565b9392505050565b62000a388162000718565b82525050565b600060208201905062000a55600083018462000a2d565b92915050565b60805160a05161168462000a816000396000610755015260006106aa01526116846000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063c21ebd0711610066578063c21ebd07146102a1578063dd62ed3e146102bf578063eabe09ad146102ef578063f2fde38b1461030d57610100565b80638da5cb5b1461021757806395d89b4114610235578063a9059cbb14610253578063b2bdfa7b1461028357610100565b8063313ce567116100d3578063313ce567146101a157806370a08231146101bf578063715018a6146101ef578063767800de146101f957610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610329565b60405161011a9190610ef9565b60405180910390f35b61013d60048036038101906101389190610fb4565b6103bb565b60405161014a919061100f565b60405180910390f35b61015b6103d9565b6040516101689190611039565b60405180910390f35b61018b60048036038101906101869190611054565b6103e3565b604051610198919061100f565b60405180910390f35b6101a961049b565b6040516101b691906110c3565b60405180910390f35b6101d960048036038101906101d491906110de565b6104b2565b6040516101e69190611039565b60405180910390f35b6101f76104fb565b005b610201610583565b60405161020e919061111a565b60405180910390f35b61021f6105a9565b60405161022c919061111a565b60405180910390f35b61023d6105d2565b60405161024a9190610ef9565b60405180910390f35b61026d60048036038101906102689190610fb4565b610664565b60405161027a919061100f565b60405180910390f35b61028b610682565b604051610298919061111a565b60405180910390f35b6102a96106a8565b6040516102b69190611194565b60405180910390f35b6102d960048036038101906102d491906111af565b6106cc565b6040516102e69190611039565b60405180910390f35b6102f7610753565b604051610304919061111a565b60405180910390f35b610327600480360381019061032291906110de565b610777565b005b6060600380546103389061121e565b80601f01602080910402602001604051908101604052809291908181526020018280546103649061121e565b80156103b15780601f10610386576101008083540402835291602001916103b1565b820191906000526020600020905b81548152906001019060200180831161039457829003601f168201915b5050505050905090565b60006103cf6103c861086e565b8484610876565b6001905092915050565b6000600154905090565b60006103f0848484610a3f565b610490846103fc61086e565b84600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061044661086e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461048b919061127e565b610876565b600190509392505050565b6000600760149054906101000a900460ff16905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61050361086e565b73ffffffffffffffffffffffffffffffffffffffff166105216105a9565b73ffffffffffffffffffffffffffffffffffffffff1614610577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056e906112fe565b60405180910390fd5b6105816000610b99565b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546105e19061121e565b80601f016020809104026020016040519081016040528092919081815260200182805461060d9061121e565b801561065a5780601f1061062f5761010080835404028352916020019161065a565b820191906000526020600020905b81548152906001019060200180831161063d57829003601f168201915b5050505050905090565b600061067861067161086e565b8484610a3f565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61077f61086e565b73ffffffffffffffffffffffffffffffffffffffff1661079d6105a9565b73ffffffffffffffffffffffffffffffffffffffff16146107f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ea906112fe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085990611390565b60405180910390fd5b61086b81610b99565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dc90611422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094b906114b4565b60405180910390fd5b80600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a329190611039565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa590611546565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b14906115d8565b60405180910390fd5b610b28838383610c5d565b610b53600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610de3565b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca891906115f8565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d36919061127e565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dd69190611039565b60405180910390a3505050565b8073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610e5d57600254600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e9a578082015181840152602081019050610e7f565b83811115610ea9576000848401525b50505050565b6000601f19601f8301169050919050565b6000610ecb82610e60565b610ed58185610e6b565b9350610ee5818560208601610e7c565b610eee81610eaf565b840191505092915050565b60006020820190508181036000830152610f138184610ec0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f4b82610f20565b9050919050565b610f5b81610f40565b8114610f6657600080fd5b50565b600081359050610f7881610f52565b92915050565b6000819050919050565b610f9181610f7e565b8114610f9c57600080fd5b50565b600081359050610fae81610f88565b92915050565b60008060408385031215610fcb57610fca610f1b565b5b6000610fd985828601610f69565b9250506020610fea85828601610f9f565b9150509250929050565b60008115159050919050565b61100981610ff4565b82525050565b60006020820190506110246000830184611000565b92915050565b61103381610f7e565b82525050565b600060208201905061104e600083018461102a565b92915050565b60008060006060848603121561106d5761106c610f1b565b5b600061107b86828701610f69565b935050602061108c86828701610f69565b925050604061109d86828701610f9f565b9150509250925092565b600060ff82169050919050565b6110bd816110a7565b82525050565b60006020820190506110d860008301846110b4565b92915050565b6000602082840312156110f4576110f3610f1b565b5b600061110284828501610f69565b91505092915050565b61111481610f40565b82525050565b600060208201905061112f600083018461110b565b92915050565b6000819050919050565b600061115a61115561115084610f20565b611135565b610f20565b9050919050565b600061116c8261113f565b9050919050565b600061117e82611161565b9050919050565b61118e81611173565b82525050565b60006020820190506111a96000830184611185565b92915050565b600080604083850312156111c6576111c5610f1b565b5b60006111d485828601610f69565b92505060206111e585828601610f69565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061123657607f821691505b602082108103611249576112486111ef565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061128982610f7e565b915061129483610f7e565b9250828210156112a7576112a661124f565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006112e8602083610e6b565b91506112f3826112b2565b602082019050919050565b60006020820190508181036000830152611317816112db565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061137a602683610e6b565b91506113858261131e565b604082019050919050565b600060208201905081810360008301526113a98161136d565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061140c602483610e6b565b9150611417826113b0565b604082019050919050565b6000602082019050818103600083015261143b816113ff565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061149e602283610e6b565b91506114a982611442565b604082019050919050565b600060208201905081810360008301526114cd81611491565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611530602583610e6b565b915061153b826114d4565b604082019050919050565b6000602082019050818103600083015261155f81611523565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006115c2602383610e6b565b91506115cd82611566565b604082019050919050565b600060208201905081810360008301526115f1816115b5565b9050919050565b600061160382610f7e565b915061160e83610f7e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156116435761164261124f565b5b82820190509291505056fea2646970667358221220773d3b7569064458ea3555a2c34f4549bef7bf153c241483b6faafc99c58a3c064736f6c634300080f0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063c21ebd0711610066578063c21ebd07146102a1578063dd62ed3e146102bf578063eabe09ad146102ef578063f2fde38b1461030d57610100565b80638da5cb5b1461021757806395d89b4114610235578063a9059cbb14610253578063b2bdfa7b1461028357610100565b8063313ce567116100d3578063313ce567146101a157806370a08231146101bf578063715018a6146101ef578063767800de146101f957610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610329565b60405161011a9190610ef9565b60405180910390f35b61013d60048036038101906101389190610fb4565b6103bb565b60405161014a919061100f565b60405180910390f35b61015b6103d9565b6040516101689190611039565b60405180910390f35b61018b60048036038101906101869190611054565b6103e3565b604051610198919061100f565b60405180910390f35b6101a961049b565b6040516101b691906110c3565b60405180910390f35b6101d960048036038101906101d491906110de565b6104b2565b6040516101e69190611039565b60405180910390f35b6101f76104fb565b005b610201610583565b60405161020e919061111a565b60405180910390f35b61021f6105a9565b60405161022c919061111a565b60405180910390f35b61023d6105d2565b60405161024a9190610ef9565b60405180910390f35b61026d60048036038101906102689190610fb4565b610664565b60405161027a919061100f565b60405180910390f35b61028b610682565b604051610298919061111a565b60405180910390f35b6102a96106a8565b6040516102b69190611194565b60405180910390f35b6102d960048036038101906102d491906111af565b6106cc565b6040516102e69190611039565b60405180910390f35b6102f7610753565b604051610304919061111a565b60405180910390f35b610327600480360381019061032291906110de565b610777565b005b6060600380546103389061121e565b80601f01602080910402602001604051908101604052809291908181526020018280546103649061121e565b80156103b15780601f10610386576101008083540402835291602001916103b1565b820191906000526020600020905b81548152906001019060200180831161039457829003601f168201915b5050505050905090565b60006103cf6103c861086e565b8484610876565b6001905092915050565b6000600154905090565b60006103f0848484610a3f565b610490846103fc61086e565b84600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061044661086e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461048b919061127e565b610876565b600190509392505050565b6000600760149054906101000a900460ff16905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61050361086e565b73ffffffffffffffffffffffffffffffffffffffff166105216105a9565b73ffffffffffffffffffffffffffffffffffffffff1614610577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056e906112fe565b60405180910390fd5b6105816000610b99565b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546105e19061121e565b80601f016020809104026020016040519081016040528092919081815260200182805461060d9061121e565b801561065a5780601f1061062f5761010080835404028352916020019161065a565b820191906000526020600020905b81548152906001019060200180831161063d57829003601f168201915b5050505050905090565b600061067861067161086e565b8484610a3f565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f000000000000000000000000e5e58eeb70c78ac437b04d1859fa601326917b9381565b61077f61086e565b73ffffffffffffffffffffffffffffffffffffffff1661079d6105a9565b73ffffffffffffffffffffffffffffffffffffffff16146107f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ea906112fe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085990611390565b60405180910390fd5b61086b81610b99565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dc90611422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094b906114b4565b60405180910390fd5b80600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a329190611039565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa590611546565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b14906115d8565b60405180910390fd5b610b28838383610c5d565b610b53600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610de3565b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca891906115f8565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d36919061127e565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dd69190611039565b60405180910390a3505050565b8073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610e5d57600254600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e9a578082015181840152602081019050610e7f565b83811115610ea9576000848401525b50505050565b6000601f19601f8301169050919050565b6000610ecb82610e60565b610ed58185610e6b565b9350610ee5818560208601610e7c565b610eee81610eaf565b840191505092915050565b60006020820190508181036000830152610f138184610ec0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f4b82610f20565b9050919050565b610f5b81610f40565b8114610f6657600080fd5b50565b600081359050610f7881610f52565b92915050565b6000819050919050565b610f9181610f7e565b8114610f9c57600080fd5b50565b600081359050610fae81610f88565b92915050565b60008060408385031215610fcb57610fca610f1b565b5b6000610fd985828601610f69565b9250506020610fea85828601610f9f565b9150509250929050565b60008115159050919050565b61100981610ff4565b82525050565b60006020820190506110246000830184611000565b92915050565b61103381610f7e565b82525050565b600060208201905061104e600083018461102a565b92915050565b60008060006060848603121561106d5761106c610f1b565b5b600061107b86828701610f69565b935050602061108c86828701610f69565b925050604061109d86828701610f9f565b9150509250925092565b600060ff82169050919050565b6110bd816110a7565b82525050565b60006020820190506110d860008301846110b4565b92915050565b6000602082840312156110f4576110f3610f1b565b5b600061110284828501610f69565b91505092915050565b61111481610f40565b82525050565b600060208201905061112f600083018461110b565b92915050565b6000819050919050565b600061115a61115561115084610f20565b611135565b610f20565b9050919050565b600061116c8261113f565b9050919050565b600061117e82611161565b9050919050565b61118e81611173565b82525050565b60006020820190506111a96000830184611185565b92915050565b600080604083850312156111c6576111c5610f1b565b5b60006111d485828601610f69565b92505060206111e585828601610f69565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061123657607f821691505b602082108103611249576112486111ef565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061128982610f7e565b915061129483610f7e565b9250828210156112a7576112a661124f565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006112e8602083610e6b565b91506112f3826112b2565b602082019050919050565b60006020820190508181036000830152611317816112db565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061137a602683610e6b565b91506113858261131e565b604082019050919050565b600060208201905081810360008301526113a98161136d565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061140c602483610e6b565b9150611417826113b0565b604082019050919050565b6000602082019050818103600083015261143b816113ff565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061149e602283610e6b565b91506114a982611442565b604082019050919050565b600060208201905081810360008301526114cd81611491565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611530602583610e6b565b915061153b826114d4565b604082019050919050565b6000602082019050818103600083015261155f81611523565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006115c2602383610e6b565b91506115cd82611566565b604082019050919050565b600060208201905081810360008301526115f1816115b5565b9050919050565b600061160382610f7e565b915061160e83610f7e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156116435761164261124f565b5b82820190509291505056fea2646970667358221220773d3b7569064458ea3555a2c34f4549bef7bf153c241483b6faafc99c58a3c064736f6c634300080f0033
Deployed Bytecode Sourcemap
19424:5274:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20850:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21677:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21127:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21846:316;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21036:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21228:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4594:103;;;:::i;:::-;;19676:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3943:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20941;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21351:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19813:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20108:47;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21526:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20162:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4852:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20850:83;20887:13;20920:5;20913:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20850:83;:::o;21677:161::-;21752:4;21769:39;21778:12;:10;:12::i;:::-;21792:7;21801:6;21769:8;:39::i;:::-;21826:4;21819:11;;21677:161;;;;:::o;21127:93::-;21180:7;21207:5;;21200:12;;21127:93;:::o;21846:316::-;21944:4;21961:36;21971:6;21979:9;21990:6;21961:9;:36::i;:::-;22008:74;22017:6;22025:12;:10;:12::i;:::-;22075:6;22039:11;:19;22051:6;22039:19;;;;;;;;;;;;;;;:33;22059:12;:10;:12::i;:::-;22039:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;22008:8;:74::i;:::-;22150:4;22143:11;;21846:316;;;;;:::o;21036:83::-;21077:5;21102:9;;;;;;;;;;;21095:16;;21036:83;:::o;21228:115::-;21294:7;21322:3;:12;21326:7;21322:12;;;;;;;;;;;;;;;;21314:21;;21228:115;;;:::o;4594:103::-;4174:12;:10;:12::i;:::-;4163:23;;:7;:5;:7::i;:::-;:23;;;4155:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4659:30:::1;4686:1;4659:18;:30::i;:::-;4594:103::o:0;19676:62::-;;;;;;;;;;;;;:::o;3943:87::-;3989:7;4016:6;;;;;;;;;;;4009:13;;3943:87;:::o;20941:::-;20980:13;21013:7;21006:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20941:87;:::o;21351:167::-;21429:4;21446:42;21456:12;:10;:12::i;:::-;21470:9;21481:6;21446:9;:42::i;:::-;21506:4;21499:11;;21351:167;;;;:::o;19813:21::-;;;;;;;;;;;;;:::o;20108:47::-;;;:::o;21526:143::-;21607:7;21634:11;:18;21646:5;21634:18;;;;;;;;;;;;;;;:27;21653:7;21634:27;;;;;;;;;;;;;;;;21627:34;;21526:143;;;;:::o;20162:30::-;;;:::o;4852:201::-;4174:12;:10;:12::i;:::-;4163:23;;:7;:5;:7::i;:::-;:23;;;4155:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4961:1:::1;4941:22;;:8;:22;;::::0;4933:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5017:28;5036:8;5017:18;:28::i;:::-;4852:201:::0;:::o;3317:98::-;3370:7;3397:10;3390:17;;3317:98;:::o;22315:337::-;22425:1;22408:19;;:5;:19;;;22400:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22506:1;22487:21;;:7;:21;;;22479:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22590:6;22560:11;:18;22572:5;22560:18;;;;;;;;;;;;;;;:27;22579:7;22560:27;;;;;;;;;;;;;;;:36;;;;22628:7;22612:32;;22621:5;22612:32;;;22637:6;22612:32;;;;;;:::i;:::-;;;;;;;;22315:337;;;:::o;22917:376::-;23063:1;23045:20;;:6;:20;;;23037:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23142:1;23126:18;;:4;:18;;;23118:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;23197:39;23215:6;23223:4;23229:6;23197:17;:39::i;:::-;23247:18;23260:4;;;;;;;;;;;23247:12;:18::i;:::-;23281:4;23276;;:9;;;;;;;;;;;;;;;;;;22917:376;;;:::o;5213:191::-;5287:16;5306:6;;;;;;;;;;;5287:25;;5332:8;5323:6;;:17;;;;;;;;;;;;;;;;;;5387:8;5356:40;;5377:8;5356:40;;;;;;;;;;;;5276:128;5213:191;:::o;22660:249::-;22793:7;22775:3;:14;22779:9;22775:14;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;22758:3;:14;22762:9;22758:14;;;;;;;;;;;;;;;:43;;;;22841:7;22826:3;:11;22830:6;22826:11;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;22812:3;:11;22816:6;22812:11;;;;;;;;;;;;;;;:37;;;;22882:9;22865:36;;22874:6;22865:36;;;22893:7;22865:36;;;;;;:::i;:::-;;;;;;;;22660:249;;;:::o;23307:139::-;23379:5;23372:12;;:5;:12;;;23368:71;;23421:6;;23410:3;:10;23414:5;23410:10;;;;;;;;;;;;;;;:17;;;;23368:71;23307:139;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:329::-;4960:6;5009:2;4997:9;4988:7;4984:23;4980:32;4977:119;;;5015:79;;:::i;:::-;4977:119;5135:1;5160:53;5205:7;5196:6;5185:9;5181:22;5160:53;:::i;:::-;5150:63;;5106:117;4901:329;;;;:::o;5236:118::-;5323:24;5341:5;5323:24;:::i;:::-;5318:3;5311:37;5236:118;;:::o;5360:222::-;5453:4;5491:2;5480:9;5476:18;5468:26;;5504:71;5572:1;5561:9;5557:17;5548:6;5504:71;:::i;:::-;5360:222;;;;:::o;5588:60::-;5616:3;5637:5;5630:12;;5588:60;;;:::o;5654:142::-;5704:9;5737:53;5755:34;5764:24;5782:5;5764:24;:::i;:::-;5755:34;:::i;:::-;5737:53;:::i;:::-;5724:66;;5654:142;;;:::o;5802:126::-;5852:9;5885:37;5916:5;5885:37;:::i;:::-;5872:50;;5802:126;;;:::o;5934:151::-;6009:9;6042:37;6073:5;6042:37;:::i;:::-;6029:50;;5934:151;;;:::o;6091:181::-;6203:62;6259:5;6203:62;:::i;:::-;6198:3;6191:75;6091:181;;:::o;6278:272::-;6396:4;6434:2;6423:9;6419:18;6411:26;;6447:96;6540:1;6529:9;6525:17;6516:6;6447:96;:::i;:::-;6278:272;;;;:::o;6556:474::-;6624:6;6632;6681:2;6669:9;6660:7;6656:23;6652:32;6649:119;;;6687:79;;:::i;:::-;6649:119;6807:1;6832:53;6877:7;6868:6;6857:9;6853:22;6832:53;:::i;:::-;6822:63;;6778:117;6934:2;6960:53;7005:7;6996:6;6985:9;6981:22;6960:53;:::i;:::-;6950:63;;6905:118;6556:474;;;;;:::o;7036:180::-;7084:77;7081:1;7074:88;7181:4;7178:1;7171:15;7205:4;7202:1;7195:15;7222:320;7266:6;7303:1;7297:4;7293:12;7283:22;;7350:1;7344:4;7340:12;7371:18;7361:81;;7427:4;7419:6;7415:17;7405:27;;7361:81;7489:2;7481:6;7478:14;7458:18;7455:38;7452:84;;7508:18;;:::i;:::-;7452:84;7273:269;7222:320;;;:::o;7548:180::-;7596:77;7593:1;7586:88;7693:4;7690:1;7683:15;7717:4;7714:1;7707:15;7734:191;7774:4;7794:20;7812:1;7794:20;:::i;:::-;7789:25;;7828:20;7846:1;7828:20;:::i;:::-;7823:25;;7867:1;7864;7861:8;7858:34;;;7872:18;;:::i;:::-;7858:34;7917:1;7914;7910:9;7902:17;;7734:191;;;;:::o;7931:182::-;8071:34;8067:1;8059:6;8055:14;8048:58;7931:182;:::o;8119:366::-;8261:3;8282:67;8346:2;8341:3;8282:67;:::i;:::-;8275:74;;8358:93;8447:3;8358:93;:::i;:::-;8476:2;8471:3;8467:12;8460:19;;8119:366;;;:::o;8491:419::-;8657:4;8695:2;8684:9;8680:18;8672:26;;8744:9;8738:4;8734:20;8730:1;8719:9;8715:17;8708:47;8772:131;8898:4;8772:131;:::i;:::-;8764:139;;8491:419;;;:::o;8916:225::-;9056:34;9052:1;9044:6;9040:14;9033:58;9125:8;9120:2;9112:6;9108:15;9101:33;8916:225;:::o;9147:366::-;9289:3;9310:67;9374:2;9369:3;9310:67;:::i;:::-;9303:74;;9386:93;9475:3;9386:93;:::i;:::-;9504:2;9499:3;9495:12;9488:19;;9147:366;;;:::o;9519:419::-;9685:4;9723:2;9712:9;9708:18;9700:26;;9772:9;9766:4;9762:20;9758:1;9747:9;9743:17;9736:47;9800:131;9926:4;9800:131;:::i;:::-;9792:139;;9519:419;;;:::o;9944:223::-;10084:34;10080:1;10072:6;10068:14;10061:58;10153:6;10148:2;10140:6;10136:15;10129:31;9944:223;:::o;10173:366::-;10315:3;10336:67;10400:2;10395:3;10336:67;:::i;:::-;10329:74;;10412:93;10501:3;10412:93;:::i;:::-;10530:2;10525:3;10521:12;10514:19;;10173:366;;;:::o;10545:419::-;10711:4;10749:2;10738:9;10734:18;10726:26;;10798:9;10792:4;10788:20;10784:1;10773:9;10769:17;10762:47;10826:131;10952:4;10826:131;:::i;:::-;10818:139;;10545:419;;;:::o;10970:221::-;11110:34;11106:1;11098:6;11094:14;11087:58;11179:4;11174:2;11166:6;11162:15;11155:29;10970:221;:::o;11197:366::-;11339:3;11360:67;11424:2;11419:3;11360:67;:::i;:::-;11353:74;;11436:93;11525:3;11436:93;:::i;:::-;11554:2;11549:3;11545:12;11538:19;;11197:366;;;:::o;11569:419::-;11735:4;11773:2;11762:9;11758:18;11750:26;;11822:9;11816:4;11812:20;11808:1;11797:9;11793:17;11786:47;11850:131;11976:4;11850:131;:::i;:::-;11842:139;;11569:419;;;:::o;11994:224::-;12134:34;12130:1;12122:6;12118:14;12111:58;12203:7;12198:2;12190:6;12186:15;12179:32;11994:224;:::o;12224:366::-;12366:3;12387:67;12451:2;12446:3;12387:67;:::i;:::-;12380:74;;12463:93;12552:3;12463:93;:::i;:::-;12581:2;12576:3;12572:12;12565:19;;12224:366;;;:::o;12596:419::-;12762:4;12800:2;12789:9;12785:18;12777:26;;12849:9;12843:4;12839:20;12835:1;12824:9;12820:17;12813:47;12877:131;13003:4;12877:131;:::i;:::-;12869:139;;12596:419;;;:::o;13021:222::-;13161:34;13157:1;13149:6;13145:14;13138:58;13230:5;13225:2;13217:6;13213:15;13206:30;13021:222;:::o;13249:366::-;13391:3;13412:67;13476:2;13471:3;13412:67;:::i;:::-;13405:74;;13488:93;13577:3;13488:93;:::i;:::-;13606:2;13601:3;13597:12;13590:19;;13249:366;;;:::o;13621:419::-;13787:4;13825:2;13814:9;13810:18;13802:26;;13874:9;13868:4;13864:20;13860:1;13849:9;13845:17;13838:47;13902:131;14028:4;13902:131;:::i;:::-;13894:139;;13621:419;;;:::o;14046:305::-;14086:3;14105:20;14123:1;14105:20;:::i;:::-;14100:25;;14139:20;14157:1;14139:20;:::i;:::-;14134:25;;14293:1;14225:66;14221:74;14218:1;14215:81;14212:107;;;14299:18;;:::i;:::-;14212:107;14343:1;14340;14336:9;14329:16;;14046:305;;;;:::o
Swarm Source
ipfs://773d3b7569064458ea3555a2c34f4549bef7bf153c241483b6faafc99c58a3c0
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.