ERC-20
Overview
Max Total Supply
10,000,000 FAI
Holders
51
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
44,770.00982613169062854 FAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FAI
Compiler Version
v0.8.22+commit.4fc1097e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-03-12 */ // SPDX-License-Identifier: MIT /* Website: http://flashai.pro/ Telegram: https://t.me/FlashAIpro */ pragma solidity ^0.8.22; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address from, address to, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, _allowances[owner][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = _allowances[owner][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract FAI is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 private constant _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address public uniV2PairAddress; address public immutable feeRecipientAddress; uint256 public maxWalletSize; uint256 public feeThreshold; uint256 public swapFee; uint256 public swapBackFee; bool private _inSwap; mapping (address => bool) private _excludedLimits; constructor() ERC20("FlashAI", "FAI") payable { uint256 totalSupply = 10000000 * 1e18; maxWalletSize = totalSupply.mul(2).div(100); feeThreshold = totalSupply.mul(5).div(1000); feeRecipientAddress = 0xE66159742d53C7463BEFB4A58ccF2F939c390f55; swapFee = 25; swapBackFee = 45; _excludedLimits[feeRecipientAddress] = true; _excludedLimits[msg.sender] = true; _excludedLimits[tx.origin] = true; _excludedLimits[address(this)] = true; _excludedLimits[address(0xdead)] = true; _mint(tx.origin, totalSupply); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "Transfer from the zero address not allowed."); require(to != address(0), "Transfer to the zero address not allowed."); require(amount > 0, 'Transfer amount must be greater than zero.'); bool excluded = _excludedLimits[from] || _excludedLimits[to]; require(uniV2PairAddress != address(0) || excluded, "Liquidity pair not yet created."); bool isSell = to == uniV2PairAddress; bool isBuy = from == uniV2PairAddress; if (!isSell && maxWalletSize > 0 && !excluded) require(balanceOf(to) + amount <= maxWalletSize, "Balance exceeds max holdings amount, consider using a second wallet."); if ( balanceOf(address(this)) >= feeThreshold && !_inSwap && isSell && !excluded ) { _inSwap = true; swapBackTokenFee(); _inSwap = false; } uint256 fee = isBuy ? swapFee : swapBackFee; if (fee > 0) { if (!excluded && !_inSwap && (isBuy || isSell)) { uint256 fees = amount.mul(fee).div(100); if (fees > 0) super._transfer(from, address(this), fees); amount = amount.sub(fees); } } super._transfer(from, to, amount); } function swapBackTokenFee() public { uint256 contractBalance = balanceOf(address(this)); if (contractBalance == 0) return; if (contractBalance > feeThreshold) contractBalance = feeThreshold; address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); _approve(address(this), address(_router), contractBalance); _router.swapExactTokensForETHSupportingFeeOnTransferTokens( contractBalance, 0, path, feeRecipientAddress, block.timestamp ); } function enableTrading() external onlyOwner { uniV2PairAddress = IUniswapV2Factory(_router.factory()).getPair(address(this), _router.WETH()); } function updateFeeTokenThreshold(uint256 newThreshold) external onlyOwner { require(newThreshold >= totalSupply().mul(1).div(100000), "Swap threshold cannot be lower than 0.001% total supply."); require(newThreshold <= totalSupply().mul(2).div(100), "Swap threshold cannot be higher than 2% total supply."); feeThreshold = newThreshold; } function setFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner { require(newBuyFee <= 25 && newSellFee <= 45, 'Attempting to set fee higher than initial fee.'); // smaller than or equal to initial fee swapFee = newBuyFee; swapBackFee = newSellFee; } function removeHoldingLimit() external onlyOwner { maxWalletSize = 0; } function removeStuckETH() external onlyOwner { payable(feeRecipientAddress).transfer(address(this).balance); } function removeStuckERC20(IERC20 token) external onlyOwner { token.transfer(feeRecipientAddress, token.balanceOf(address(this))); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRecipientAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeHoldingLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"removeStuckERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapBackTokenFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"uniV2PairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateFeeTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526040518060400160405280600781526020017f466c6173684149000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f464149000000000000000000000000000000000000000000000000000000000081525081600390816200008191906200081c565b5080600490816200009391906200081c565b505050620000b6620000aa6200034660201b60201c565b6200034d60201b60201c565b5f6a084595161401484a0000009050620000f06064620000e16002846200041060201b90919060201c565b6200042760201b90919060201c565b600781905550620001226103e8620001136005846200041060201b90919060201c565b6200042760201b90919060201c565b60088190555073e66159742d53c7463befb4a58ccf2f939c390f5573ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506019600981905550602d600a819055506001600c5f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200033f32826200043e60201b60201c565b5062000abf565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81836200041f91906200092d565b905092915050565b5f8183620004369190620009a4565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004a69062000a39565b60405180910390fd5b620004c25f8383620005ae60201b60201c565b8060025f828254620004d5919062000a59565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000529919062000a59565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200058f919062000aa4565b60405180910390a3620005aa5f8383620005b360201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200063457607f821691505b6020821081036200064a5762000649620005ef565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006ae7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000671565b620006ba868362000671565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000704620006fe620006f884620006d2565b620006db565b620006d2565b9050919050565b5f819050919050565b6200071f83620006e4565b620007376200072e826200070b565b8484546200067d565b825550505050565b5f90565b6200074d6200073f565b6200075a81848462000714565b505050565b5b818110156200078157620007755f8262000743565b60018101905062000760565b5050565b601f821115620007d0576200079a8162000650565b620007a58462000662565b81016020851015620007b5578190505b620007cd620007c48562000662565b8301826200075f565b50505b505050565b5f82821c905092915050565b5f620007f25f1984600802620007d5565b1980831691505092915050565b5f6200080c8383620007e1565b9150826002028217905092915050565b6200082782620005b8565b67ffffffffffffffff811115620008435762000842620005c2565b5b6200084f82546200061c565b6200085c82828562000785565b5f60209050601f83116001811462000892575f84156200087d578287015190505b620008898582620007ff565b865550620008f8565b601f198416620008a28662000650565b5f5b82811015620008cb57848901518255600182019150602085019450602081019050620008a4565b86831015620008eb5784890151620008e7601f891682620007e1565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200093982620006d2565b91506200094683620006d2565b92508282026200095681620006d2565b9150828204841483151762000970576200096f62000900565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620009b082620006d2565b9150620009bd83620006d2565b925082620009d057620009cf62000977565b5b828204905092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000a21601f83620009db565b915062000a2e82620009eb565b602082019050919050565b5f6020820190508181035f83015262000a528162000a13565b9050919050565b5f62000a6582620006d2565b915062000a7283620006d2565b925082820190508082111562000a8d5762000a8c62000900565b5b92915050565b62000a9e81620006d2565b82525050565b5f60208201905062000ab95f83018462000a93565b92915050565b6080516131d362000aed5f395f818161083901528181610b68015281816111f1015261137301526131d35ff3fe60806040526004361061019f575f3560e01c8063715018a6116100eb578063a9059cbb11610089578063dd62ed3e11610063578063dd62ed3e14610574578063f1bab2ec146105b0578063f2fde38b146105da578063f442d3fb14610602576101a6565b8063a9059cbb146104e6578063c83c383714610522578063cb4e162b1461054a576101a6565b80638f3fa860116100c55780638f3fa860146104405780639049a3ce1461046a57806395d89b4114610480578063a457c2d7146104aa576101a6565b8063715018a6146103ea5780638a8c523c146104005780638da5cb5b14610416576101a6565b8063313ce5671161015857806353945d7b1161013257806353945d7b1461033057806354c35c281461035a57806354cf2aeb1461038457806370a08231146103ae576101a6565b8063313ce567146102b457806339509351146102de5780634599471d1461031a576101a6565b806306fdde03146101aa578063095ea7b3146101d45780630b78f9c0146102105780630f299cf11461023857806318160ddd1461024e57806323b872dd14610278576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be61062a565b6040516101cb91906120f3565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f591906121a4565b6106ba565b60405161020791906121fc565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612215565b6106dc565b005b348015610243575f80fd5b5061024c6107bb565b005b348015610259575f80fd5b5061026261089d565b60405161026f9190612262565b60405180910390f35b348015610283575f80fd5b5061029e6004803603810190610299919061227b565b6108a6565b6040516102ab91906121fc565b60405180910390f35b3480156102bf575f80fd5b506102c86108d4565b6040516102d591906122e6565b60405180910390f35b3480156102e9575f80fd5b5061030460048036038101906102ff91906121a4565b6108dc565b60405161031191906121fc565b60405180910390f35b348015610325575f80fd5b5061032e610981565b005b34801561033b575f80fd5b50610344610bda565b604051610351919061230e565b60405180910390f35b348015610365575f80fd5b5061036e610bff565b60405161037b9190612262565b60405180910390f35b34801561038f575f80fd5b50610398610c05565b6040516103a59190612262565b60405180910390f35b3480156103b9575f80fd5b506103d460048036038101906103cf9190612327565b610c0b565b6040516103e19190612262565b60405180910390f35b3480156103f5575f80fd5b506103fe610c50565b005b34801561040b575f80fd5b50610414610cd7565b005b348015610421575f80fd5b5061042a610f0e565b604051610437919061230e565b60405180910390f35b34801561044b575f80fd5b50610454610f36565b6040516104619190612262565b60405180910390f35b348015610475575f80fd5b5061047e610f3c565b005b34801561048b575f80fd5b50610494610fc1565b6040516104a191906120f3565b60405180910390f35b3480156104b5575f80fd5b506104d060048036038101906104cb91906121a4565b611051565b6040516104dd91906121fc565b60405180910390f35b3480156104f1575f80fd5b5061050c600480360381019061050791906121a4565b611135565b60405161051991906121fc565b60405180910390f35b34801561052d575f80fd5b506105486004803603810190610543919061238d565b611157565b005b348015610555575f80fd5b5061055e6112e9565b60405161056b9190612262565b60405180910390f35b34801561057f575f80fd5b5061059a600480360381019061059591906123b8565b6112ef565b6040516105a79190612262565b60405180910390f35b3480156105bb575f80fd5b506105c4611371565b6040516105d1919061230e565b60405180910390f35b3480156105e5575f80fd5b5061060060048036038101906105fb9190612327565b611395565b005b34801561060d575f80fd5b50610628600480360381019061062391906123f6565b61148b565b005b6060600380546106399061244e565b80601f01602080910402602001604051908101604052809291908181526020018280546106659061244e565b80156106b05780601f10610687576101008083540402835291602001916106b0565b820191905f5260205f20905b81548152906001019060200180831161069357829003601f168201915b5050505050905090565b5f806106c46115f3565b90506106d18185856115fa565b600191505092915050565b6106e46115f3565b73ffffffffffffffffffffffffffffffffffffffff16610702610f0e565b73ffffffffffffffffffffffffffffffffffffffff1614610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074f906124c8565b60405180910390fd5b6019821115801561076a5750602d8111155b6107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090612556565b60405180910390fd5b8160098190555080600a819055505050565b6107c36115f3565b73ffffffffffffffffffffffffffffffffffffffff166107e1610f0e565b73ffffffffffffffffffffffffffffffffffffffff1614610837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082e906124c8565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561089a573d5f803e3d5ffd5b50565b5f600254905090565b5f806108b06115f3565b90506108bd8582856117bd565b6108c8858585611848565b60019150509392505050565b5f6012905090565b5f806108e66115f3565b905061097681858560015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461097191906125a1565b6115fa565b600191505092915050565b5f61098b30610c0b565b90505f810361099a5750610bd8565b6008548111156109aa5760085490505b5f600267ffffffffffffffff8111156109c6576109c56125d4565b5b6040519080825280602002602001820160405280156109f45781602001602082028036833780820191505090505b50905030815f81518110610a0b57610a0a612601565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aa2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac69190612642565b81600181518110610ada57610ad9612601565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610b3330737a250d5630b4cf539739df2c5dacb4c659f2488d846115fa565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f847f0000000000000000000000000000000000000000000000000000000000000000426040518663ffffffff1660e01b8152600401610ba8959493929190612766565b5f604051808303815f87803b158015610bbf575f80fd5b505af1158015610bd1573d5f803e3d5ffd5b5050505050505b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60095481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c586115f3565b73ffffffffffffffffffffffffffffffffffffffff16610c76610f0e565b73ffffffffffffffffffffffffffffffffffffffff1614610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc3906124c8565b60405180910390fd5b610cd55f611ce8565b565b610cdf6115f3565b73ffffffffffffffffffffffffffffffffffffffff16610cfd610f0e565b73ffffffffffffffffffffffffffffffffffffffff1614610d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4a906124c8565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610db0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd49190612642565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e719190612642565b6040518363ffffffff1660e01b8152600401610e8e9291906127be565b602060405180830381865afa158015610ea9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ecd9190612642565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b610f446115f3565b73ffffffffffffffffffffffffffffffffffffffff16610f62610f0e565b73ffffffffffffffffffffffffffffffffffffffff1614610fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faf906124c8565b60405180910390fd5b5f600781905550565b606060048054610fd09061244e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffc9061244e565b80156110475780601f1061101e57610100808354040283529160200191611047565b820191905f5260205f20905b81548152906001019060200180831161102a57829003601f168201915b5050505050905090565b5f8061105b6115f3565b90505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508381101561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390612855565b60405180910390fd5b61112982868684036115fa565b60019250505092915050565b5f8061113f6115f3565b905061114c818585611848565b600191505092915050565b61115f6115f3565b73ffffffffffffffffffffffffffffffffffffffff1661117d610f0e565b73ffffffffffffffffffffffffffffffffffffffff16146111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca906124c8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f00000000000000000000000000000000000000000000000000000000000000008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611249919061230e565b602060405180830381865afa158015611264573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112889190612887565b6040518363ffffffff1660e01b81526004016112a59291906128b2565b6020604051808303815f875af11580156112c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e59190612903565b5050565b60085481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61139d6115f3565b73ffffffffffffffffffffffffffffffffffffffff166113bb610f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611411576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611408906124c8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361147f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114769061299e565b60405180910390fd5b61148881611ce8565b50565b6114936115f3565b73ffffffffffffffffffffffffffffffffffffffff166114b1610f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe906124c8565b60405180910390fd5b611537620186a0611529600161151b61089d565b611dab90919063ffffffff16565b611dc090919063ffffffff16565b811015611579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157090612a2c565b60405180910390fd5b6115a76064611599600261158b61089d565b611dab90919063ffffffff16565b611dc090919063ffffffff16565b8111156115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e090612aba565b60405180910390fd5b8060088190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f90612b48565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd90612bd6565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117b09190612262565b60405180910390a3505050565b5f6117c884846112ef565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118425781811015611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b90612c3e565b60405180910390fd5b61184184848484036115fa565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad90612ccc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191b90612d5a565b60405180910390fd5b5f8111611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d90612de8565b60405180910390fd5b5f600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611a025750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580611a5d5750805b611a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9390612e50565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614905081158015611b5157505f600754115b8015611b5b575082155b15611bb95760075484611b6d87610c0b565b611b7791906125a1565b1115611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90612f04565b60405180910390fd5b5b600854611bc530610c0b565b10158015611bdf5750600b5f9054906101000a900460ff16155b8015611be85750815b8015611bf2575082155b15611c33576001600b5f6101000a81548160ff021916908315150217905550611c19610981565b5f600b5f6101000a81548160ff0219169083151502179055505b5f81611c4157600a54611c45565b6009545b90505f811115611cd45783158015611c695750600b5f9054906101000a900460ff16155b8015611c7a57508180611c795750825b5b15611cd3575f611ca66064611c988489611dab90919063ffffffff16565b611dc090919063ffffffff16565b90505f811115611cbc57611cbb883083611dd5565b5b611ccf818761204a90919063ffffffff16565b9550505b5b611cdf878787611dd5565b50505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8183611db89190612f22565b905092915050565b5f8183611dcd9190612f90565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3a90613030565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea8906130be565b60405180910390fd5b611ebc83838361205f565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f369061314c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611fcd91906125a1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120319190612262565b60405180910390a3612044848484612064565b50505050565b5f8183612057919061316a565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156120a0578082015181840152602081019050612085565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6120c582612069565b6120cf8185612073565b93506120df818560208601612083565b6120e8816120ab565b840191505092915050565b5f6020820190508181035f83015261210b81846120bb565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61214082612117565b9050919050565b61215081612136565b811461215a575f80fd5b50565b5f8135905061216b81612147565b92915050565b5f819050919050565b61218381612171565b811461218d575f80fd5b50565b5f8135905061219e8161217a565b92915050565b5f80604083850312156121ba576121b9612113565b5b5f6121c78582860161215d565b92505060206121d885828601612190565b9150509250929050565b5f8115159050919050565b6121f6816121e2565b82525050565b5f60208201905061220f5f8301846121ed565b92915050565b5f806040838503121561222b5761222a612113565b5b5f61223885828601612190565b925050602061224985828601612190565b9150509250929050565b61225c81612171565b82525050565b5f6020820190506122755f830184612253565b92915050565b5f805f6060848603121561229257612291612113565b5b5f61229f8682870161215d565b93505060206122b08682870161215d565b92505060406122c186828701612190565b9150509250925092565b5f60ff82169050919050565b6122e0816122cb565b82525050565b5f6020820190506122f95f8301846122d7565b92915050565b61230881612136565b82525050565b5f6020820190506123215f8301846122ff565b92915050565b5f6020828403121561233c5761233b612113565b5b5f6123498482850161215d565b91505092915050565b5f61235c82612136565b9050919050565b61236c81612352565b8114612376575f80fd5b50565b5f8135905061238781612363565b92915050565b5f602082840312156123a2576123a1612113565b5b5f6123af84828501612379565b91505092915050565b5f80604083850312156123ce576123cd612113565b5b5f6123db8582860161215d565b92505060206123ec8582860161215d565b9150509250929050565b5f6020828403121561240b5761240a612113565b5b5f61241884828501612190565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061246557607f821691505b60208210810361247857612477612421565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6124b2602083612073565b91506124bd8261247e565b602082019050919050565b5f6020820190508181035f8301526124df816124a6565b9050919050565b7f417474656d7074696e6720746f207365742066656520686967686572207468615f8201527f6e20696e697469616c206665652e000000000000000000000000000000000000602082015250565b5f612540602e83612073565b915061254b826124e6565b604082019050919050565b5f6020820190508181035f83015261256d81612534565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6125ab82612171565b91506125b683612171565b92508282019050808211156125ce576125cd612574565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061263c81612147565b92915050565b5f6020828403121561265757612656612113565b5b5f6126648482850161262e565b91505092915050565b5f819050919050565b5f819050919050565b5f61269961269461268f8461266d565b612676565b612171565b9050919050565b6126a98161267f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6126e181612136565b82525050565b5f6126f283836126d8565b60208301905092915050565b5f602082019050919050565b5f612714826126af565b61271e81856126b9565b9350612729836126c9565b805f5b8381101561275957815161274088826126e7565b975061274b836126fe565b92505060018101905061272c565b5085935050505092915050565b5f60a0820190506127795f830188612253565b61278660208301876126a0565b8181036040830152612798818661270a565b90506127a760608301856122ff565b6127b46080830184612253565b9695505050505050565b5f6040820190506127d15f8301856122ff565b6127de60208301846122ff565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61283f602583612073565b915061284a826127e5565b604082019050919050565b5f6020820190508181035f83015261286c81612833565b9050919050565b5f815190506128818161217a565b92915050565b5f6020828403121561289c5761289b612113565b5b5f6128a984828501612873565b91505092915050565b5f6040820190506128c55f8301856122ff565b6128d26020830184612253565b9392505050565b6128e2816121e2565b81146128ec575f80fd5b50565b5f815190506128fd816128d9565b92915050565b5f6020828403121561291857612917612113565b5b5f612925848285016128ef565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612988602683612073565b91506129938261292e565b604082019050919050565b5f6020820190508181035f8301526129b58161297c565b9050919050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f77657220745f8201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b5f612a16603883612073565b9150612a21826129bc565b604082019050919050565b5f6020820190508181035f830152612a4381612a0a565b9050919050565b7f53776170207468726573686f6c642063616e6e6f7420626520686967686572205f8201527f7468616e20322520746f74616c20737570706c792e0000000000000000000000602082015250565b5f612aa4603583612073565b9150612aaf82612a4a565b604082019050919050565b5f6020820190508181035f830152612ad181612a98565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612b32602483612073565b9150612b3d82612ad8565b604082019050919050565b5f6020820190508181035f830152612b5f81612b26565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612bc0602283612073565b9150612bcb82612b66565b604082019050919050565b5f6020820190508181035f830152612bed81612bb4565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612c28601d83612073565b9150612c3382612bf4565b602082019050919050565b5f6020820190508181035f830152612c5581612c1c565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f612cb6602b83612073565b9150612cc182612c5c565b604082019050919050565b5f6020820190508181035f830152612ce381612caa565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f612d44602983612073565b9150612d4f82612cea565b604082019050919050565b5f6020820190508181035f830152612d7181612d38565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f612dd2602a83612073565b9150612ddd82612d78565b604082019050919050565b5f6020820190508181035f830152612dff81612dc6565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f612e3a601f83612073565b9150612e4582612e06565b602082019050919050565b5f6020820190508181035f830152612e6781612e2e565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f5f8201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b5f612eee604483612073565b9150612ef982612e6e565b606082019050919050565b5f6020820190508181035f830152612f1b81612ee2565b9050919050565b5f612f2c82612171565b9150612f3783612171565b9250828202612f4581612171565b91508282048414831517612f5c57612f5b612574565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f9a82612171565b9150612fa583612171565b925082612fb557612fb4612f63565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61301a602583612073565b915061302582612fc0565b604082019050919050565b5f6020820190508181035f8301526130478161300e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6130a8602383612073565b91506130b38261304e565b604082019050919050565b5f6020820190508181035f8301526130d58161309c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613136602683612073565b9150613141826130dc565b604082019050919050565b5f6020820190508181035f8301526131638161312a565b9050919050565b5f61317482612171565b915061317f83612171565b925082820390508181111561319757613196612574565b5b9291505056fea26469706673582212203967f63fa9652086e5410f241c613477cc98a6fc95fa9af59698d415c810e20e64736f6c63430008160033
Deployed Bytecode
0x60806040526004361061019f575f3560e01c8063715018a6116100eb578063a9059cbb11610089578063dd62ed3e11610063578063dd62ed3e14610574578063f1bab2ec146105b0578063f2fde38b146105da578063f442d3fb14610602576101a6565b8063a9059cbb146104e6578063c83c383714610522578063cb4e162b1461054a576101a6565b80638f3fa860116100c55780638f3fa860146104405780639049a3ce1461046a57806395d89b4114610480578063a457c2d7146104aa576101a6565b8063715018a6146103ea5780638a8c523c146104005780638da5cb5b14610416576101a6565b8063313ce5671161015857806353945d7b1161013257806353945d7b1461033057806354c35c281461035a57806354cf2aeb1461038457806370a08231146103ae576101a6565b8063313ce567146102b457806339509351146102de5780634599471d1461031a576101a6565b806306fdde03146101aa578063095ea7b3146101d45780630b78f9c0146102105780630f299cf11461023857806318160ddd1461024e57806323b872dd14610278576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be61062a565b6040516101cb91906120f3565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f591906121a4565b6106ba565b60405161020791906121fc565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612215565b6106dc565b005b348015610243575f80fd5b5061024c6107bb565b005b348015610259575f80fd5b5061026261089d565b60405161026f9190612262565b60405180910390f35b348015610283575f80fd5b5061029e6004803603810190610299919061227b565b6108a6565b6040516102ab91906121fc565b60405180910390f35b3480156102bf575f80fd5b506102c86108d4565b6040516102d591906122e6565b60405180910390f35b3480156102e9575f80fd5b5061030460048036038101906102ff91906121a4565b6108dc565b60405161031191906121fc565b60405180910390f35b348015610325575f80fd5b5061032e610981565b005b34801561033b575f80fd5b50610344610bda565b604051610351919061230e565b60405180910390f35b348015610365575f80fd5b5061036e610bff565b60405161037b9190612262565b60405180910390f35b34801561038f575f80fd5b50610398610c05565b6040516103a59190612262565b60405180910390f35b3480156103b9575f80fd5b506103d460048036038101906103cf9190612327565b610c0b565b6040516103e19190612262565b60405180910390f35b3480156103f5575f80fd5b506103fe610c50565b005b34801561040b575f80fd5b50610414610cd7565b005b348015610421575f80fd5b5061042a610f0e565b604051610437919061230e565b60405180910390f35b34801561044b575f80fd5b50610454610f36565b6040516104619190612262565b60405180910390f35b348015610475575f80fd5b5061047e610f3c565b005b34801561048b575f80fd5b50610494610fc1565b6040516104a191906120f3565b60405180910390f35b3480156104b5575f80fd5b506104d060048036038101906104cb91906121a4565b611051565b6040516104dd91906121fc565b60405180910390f35b3480156104f1575f80fd5b5061050c600480360381019061050791906121a4565b611135565b60405161051991906121fc565b60405180910390f35b34801561052d575f80fd5b506105486004803603810190610543919061238d565b611157565b005b348015610555575f80fd5b5061055e6112e9565b60405161056b9190612262565b60405180910390f35b34801561057f575f80fd5b5061059a600480360381019061059591906123b8565b6112ef565b6040516105a79190612262565b60405180910390f35b3480156105bb575f80fd5b506105c4611371565b6040516105d1919061230e565b60405180910390f35b3480156105e5575f80fd5b5061060060048036038101906105fb9190612327565b611395565b005b34801561060d575f80fd5b50610628600480360381019061062391906123f6565b61148b565b005b6060600380546106399061244e565b80601f01602080910402602001604051908101604052809291908181526020018280546106659061244e565b80156106b05780601f10610687576101008083540402835291602001916106b0565b820191905f5260205f20905b81548152906001019060200180831161069357829003601f168201915b5050505050905090565b5f806106c46115f3565b90506106d18185856115fa565b600191505092915050565b6106e46115f3565b73ffffffffffffffffffffffffffffffffffffffff16610702610f0e565b73ffffffffffffffffffffffffffffffffffffffff1614610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074f906124c8565b60405180910390fd5b6019821115801561076a5750602d8111155b6107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090612556565b60405180910390fd5b8160098190555080600a819055505050565b6107c36115f3565b73ffffffffffffffffffffffffffffffffffffffff166107e1610f0e565b73ffffffffffffffffffffffffffffffffffffffff1614610837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082e906124c8565b60405180910390fd5b7f000000000000000000000000e66159742d53c7463befb4a58ccf2f939c390f5573ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561089a573d5f803e3d5ffd5b50565b5f600254905090565b5f806108b06115f3565b90506108bd8582856117bd565b6108c8858585611848565b60019150509392505050565b5f6012905090565b5f806108e66115f3565b905061097681858560015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461097191906125a1565b6115fa565b600191505092915050565b5f61098b30610c0b565b90505f810361099a5750610bd8565b6008548111156109aa5760085490505b5f600267ffffffffffffffff8111156109c6576109c56125d4565b5b6040519080825280602002602001820160405280156109f45781602001602082028036833780820191505090505b50905030815f81518110610a0b57610a0a612601565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aa2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac69190612642565b81600181518110610ada57610ad9612601565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610b3330737a250d5630b4cf539739df2c5dacb4c659f2488d846115fa565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f847f000000000000000000000000e66159742d53c7463befb4a58ccf2f939c390f55426040518663ffffffff1660e01b8152600401610ba8959493929190612766565b5f604051808303815f87803b158015610bbf575f80fd5b505af1158015610bd1573d5f803e3d5ffd5b5050505050505b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60095481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c586115f3565b73ffffffffffffffffffffffffffffffffffffffff16610c76610f0e565b73ffffffffffffffffffffffffffffffffffffffff1614610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc3906124c8565b60405180910390fd5b610cd55f611ce8565b565b610cdf6115f3565b73ffffffffffffffffffffffffffffffffffffffff16610cfd610f0e565b73ffffffffffffffffffffffffffffffffffffffff1614610d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4a906124c8565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610db0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd49190612642565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e719190612642565b6040518363ffffffff1660e01b8152600401610e8e9291906127be565b602060405180830381865afa158015610ea9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ecd9190612642565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b610f446115f3565b73ffffffffffffffffffffffffffffffffffffffff16610f62610f0e565b73ffffffffffffffffffffffffffffffffffffffff1614610fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faf906124c8565b60405180910390fd5b5f600781905550565b606060048054610fd09061244e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffc9061244e565b80156110475780601f1061101e57610100808354040283529160200191611047565b820191905f5260205f20905b81548152906001019060200180831161102a57829003601f168201915b5050505050905090565b5f8061105b6115f3565b90505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508381101561111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390612855565b60405180910390fd5b61112982868684036115fa565b60019250505092915050565b5f8061113f6115f3565b905061114c818585611848565b600191505092915050565b61115f6115f3565b73ffffffffffffffffffffffffffffffffffffffff1661117d610f0e565b73ffffffffffffffffffffffffffffffffffffffff16146111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca906124c8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f000000000000000000000000e66159742d53c7463befb4a58ccf2f939c390f558373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611249919061230e565b602060405180830381865afa158015611264573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112889190612887565b6040518363ffffffff1660e01b81526004016112a59291906128b2565b6020604051808303815f875af11580156112c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e59190612903565b5050565b60085481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7f000000000000000000000000e66159742d53c7463befb4a58ccf2f939c390f5581565b61139d6115f3565b73ffffffffffffffffffffffffffffffffffffffff166113bb610f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611411576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611408906124c8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361147f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114769061299e565b60405180910390fd5b61148881611ce8565b50565b6114936115f3565b73ffffffffffffffffffffffffffffffffffffffff166114b1610f0e565b73ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe906124c8565b60405180910390fd5b611537620186a0611529600161151b61089d565b611dab90919063ffffffff16565b611dc090919063ffffffff16565b811015611579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157090612a2c565b60405180910390fd5b6115a76064611599600261158b61089d565b611dab90919063ffffffff16565b611dc090919063ffffffff16565b8111156115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e090612aba565b60405180910390fd5b8060088190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f90612b48565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd90612bd6565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117b09190612262565b60405180910390a3505050565b5f6117c884846112ef565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118425781811015611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b90612c3e565b60405180910390fd5b61184184848484036115fa565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad90612ccc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191b90612d5a565b60405180910390fd5b5f8111611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d90612de8565b60405180910390fd5b5f600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611a025750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580611a5d5750805b611a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9390612e50565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614905081158015611b5157505f600754115b8015611b5b575082155b15611bb95760075484611b6d87610c0b565b611b7791906125a1565b1115611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90612f04565b60405180910390fd5b5b600854611bc530610c0b565b10158015611bdf5750600b5f9054906101000a900460ff16155b8015611be85750815b8015611bf2575082155b15611c33576001600b5f6101000a81548160ff021916908315150217905550611c19610981565b5f600b5f6101000a81548160ff0219169083151502179055505b5f81611c4157600a54611c45565b6009545b90505f811115611cd45783158015611c695750600b5f9054906101000a900460ff16155b8015611c7a57508180611c795750825b5b15611cd3575f611ca66064611c988489611dab90919063ffffffff16565b611dc090919063ffffffff16565b90505f811115611cbc57611cbb883083611dd5565b5b611ccf818761204a90919063ffffffff16565b9550505b5b611cdf878787611dd5565b50505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8183611db89190612f22565b905092915050565b5f8183611dcd9190612f90565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3a90613030565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea8906130be565b60405180910390fd5b611ebc83838361205f565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f369061314c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611fcd91906125a1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120319190612262565b60405180910390a3612044848484612064565b50505050565b5f8183612057919061316a565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156120a0578082015181840152602081019050612085565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6120c582612069565b6120cf8185612073565b93506120df818560208601612083565b6120e8816120ab565b840191505092915050565b5f6020820190508181035f83015261210b81846120bb565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61214082612117565b9050919050565b61215081612136565b811461215a575f80fd5b50565b5f8135905061216b81612147565b92915050565b5f819050919050565b61218381612171565b811461218d575f80fd5b50565b5f8135905061219e8161217a565b92915050565b5f80604083850312156121ba576121b9612113565b5b5f6121c78582860161215d565b92505060206121d885828601612190565b9150509250929050565b5f8115159050919050565b6121f6816121e2565b82525050565b5f60208201905061220f5f8301846121ed565b92915050565b5f806040838503121561222b5761222a612113565b5b5f61223885828601612190565b925050602061224985828601612190565b9150509250929050565b61225c81612171565b82525050565b5f6020820190506122755f830184612253565b92915050565b5f805f6060848603121561229257612291612113565b5b5f61229f8682870161215d565b93505060206122b08682870161215d565b92505060406122c186828701612190565b9150509250925092565b5f60ff82169050919050565b6122e0816122cb565b82525050565b5f6020820190506122f95f8301846122d7565b92915050565b61230881612136565b82525050565b5f6020820190506123215f8301846122ff565b92915050565b5f6020828403121561233c5761233b612113565b5b5f6123498482850161215d565b91505092915050565b5f61235c82612136565b9050919050565b61236c81612352565b8114612376575f80fd5b50565b5f8135905061238781612363565b92915050565b5f602082840312156123a2576123a1612113565b5b5f6123af84828501612379565b91505092915050565b5f80604083850312156123ce576123cd612113565b5b5f6123db8582860161215d565b92505060206123ec8582860161215d565b9150509250929050565b5f6020828403121561240b5761240a612113565b5b5f61241884828501612190565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061246557607f821691505b60208210810361247857612477612421565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6124b2602083612073565b91506124bd8261247e565b602082019050919050565b5f6020820190508181035f8301526124df816124a6565b9050919050565b7f417474656d7074696e6720746f207365742066656520686967686572207468615f8201527f6e20696e697469616c206665652e000000000000000000000000000000000000602082015250565b5f612540602e83612073565b915061254b826124e6565b604082019050919050565b5f6020820190508181035f83015261256d81612534565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6125ab82612171565b91506125b683612171565b92508282019050808211156125ce576125cd612574565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061263c81612147565b92915050565b5f6020828403121561265757612656612113565b5b5f6126648482850161262e565b91505092915050565b5f819050919050565b5f819050919050565b5f61269961269461268f8461266d565b612676565b612171565b9050919050565b6126a98161267f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6126e181612136565b82525050565b5f6126f283836126d8565b60208301905092915050565b5f602082019050919050565b5f612714826126af565b61271e81856126b9565b9350612729836126c9565b805f5b8381101561275957815161274088826126e7565b975061274b836126fe565b92505060018101905061272c565b5085935050505092915050565b5f60a0820190506127795f830188612253565b61278660208301876126a0565b8181036040830152612798818661270a565b90506127a760608301856122ff565b6127b46080830184612253565b9695505050505050565b5f6040820190506127d15f8301856122ff565b6127de60208301846122ff565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61283f602583612073565b915061284a826127e5565b604082019050919050565b5f6020820190508181035f83015261286c81612833565b9050919050565b5f815190506128818161217a565b92915050565b5f6020828403121561289c5761289b612113565b5b5f6128a984828501612873565b91505092915050565b5f6040820190506128c55f8301856122ff565b6128d26020830184612253565b9392505050565b6128e2816121e2565b81146128ec575f80fd5b50565b5f815190506128fd816128d9565b92915050565b5f6020828403121561291857612917612113565b5b5f612925848285016128ef565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612988602683612073565b91506129938261292e565b604082019050919050565b5f6020820190508181035f8301526129b58161297c565b9050919050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f77657220745f8201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b5f612a16603883612073565b9150612a21826129bc565b604082019050919050565b5f6020820190508181035f830152612a4381612a0a565b9050919050565b7f53776170207468726573686f6c642063616e6e6f7420626520686967686572205f8201527f7468616e20322520746f74616c20737570706c792e0000000000000000000000602082015250565b5f612aa4603583612073565b9150612aaf82612a4a565b604082019050919050565b5f6020820190508181035f830152612ad181612a98565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612b32602483612073565b9150612b3d82612ad8565b604082019050919050565b5f6020820190508181035f830152612b5f81612b26565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612bc0602283612073565b9150612bcb82612b66565b604082019050919050565b5f6020820190508181035f830152612bed81612bb4565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612c28601d83612073565b9150612c3382612bf4565b602082019050919050565b5f6020820190508181035f830152612c5581612c1c565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f612cb6602b83612073565b9150612cc182612c5c565b604082019050919050565b5f6020820190508181035f830152612ce381612caa565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f612d44602983612073565b9150612d4f82612cea565b604082019050919050565b5f6020820190508181035f830152612d7181612d38565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f612dd2602a83612073565b9150612ddd82612d78565b604082019050919050565b5f6020820190508181035f830152612dff81612dc6565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f612e3a601f83612073565b9150612e4582612e06565b602082019050919050565b5f6020820190508181035f830152612e6781612e2e565b9050919050565b7f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f5f8201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c60208201527f6c65742e00000000000000000000000000000000000000000000000000000000604082015250565b5f612eee604483612073565b9150612ef982612e6e565b606082019050919050565b5f6020820190508181035f830152612f1b81612ee2565b9050919050565b5f612f2c82612171565b9150612f3783612171565b9250828202612f4581612171565b91508282048414831517612f5c57612f5b612574565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f9a82612171565b9150612fa583612171565b925082612fb557612fb4612f63565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61301a602583612073565b915061302582612fc0565b604082019050919050565b5f6020820190508181035f8301526130478161300e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6130a8602383612073565b91506130b38261304e565b604082019050919050565b5f6020820190508181035f8301526130d58161309c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613136602683612073565b9150613141826130dc565b604082019050919050565b5f6020820190508181035f8301526131638161312a565b9050919050565b5f61317482612171565b915061317f83612171565b925082820390508181111561319757613196612574565b5b9291505056fea26469706673582212203967f63fa9652086e5410f241c613477cc98a6fc95fa9af59698d415c810e20e64736f6c63430008160033
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.