ERC-20
Overview
Max Total Supply
10,000 UB
Holders
206
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.064909147 UBValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
UnitBias
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-12 */ /** Unit Bias: $UB - Reflections Token with low unit count and decentralized auto-buy of $MCC via SmartContract. Tokenomics: 5% of each buy/sell goes to existing holders. 5% of each buy/sell goes into auto-buy backs of $MCC for #MultiNodes via this contract: https://etherscan.io/address/0x8dfcbdc42f54cb9da5baae20b7ed2256f84322eb#internaltx */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.4; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } // Contract implementation contract UnitBias is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 10000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = 'UnitBias'; string private _symbol = 'UB'; uint8 private _decimals = 9; uint256 private _taxFee = 5; uint256 private _teamFee = 5; uint256 private _previousTaxFee = _taxFee; uint256 private _previousTeamFee = _teamFee; address payable public _MCCWalletAddress; address payable public _marketingWalletAddress; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; mapping(address => bool) private _isUniswapPair; bool inSwap = false; bool public swapEnabled = true; uint8 _sellTaxMultiplier = 1; uint256 private _maxTxAmount = 300000000000000e9; // We will set a minimum amount of tokens to be swaped => 5M uint256 private _numOfTokensToExchangeForTeam = 1 * 10**9; struct AirdropReceiver { address addy; uint256 amount; } event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapEnabledUpdated(bool enabled); modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor( address payable MCCWalletAddress, address payable marketingWalletAddress ) { _MCCWalletAddress = MCCWalletAddress; _marketingWalletAddress = marketingWalletAddress; _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); // Univ2 for ETH network // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair( address(this), _uniswapV2Router.WETH() ); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; // Exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, 'ERC20: transfer amount exceeds allowance' ) ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, 'ERC20: decreased allowance below zero' ) ); return true; } function isExcluded(address account) public view returns (bool) { return _isExcluded[account]; } function setExcludeFromFee(address account, bool excluded) external onlyOwner { _isExcludedFromFee[account] = excluded; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require( !_isExcluded[sender], 'Excluded addresses cannot call this function' ); (uint256 rAmount, , , , , ) = _getValues(tAmount, false); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, 'Amount must be less than supply'); if (!deductTransferFee) { (uint256 rAmount, , , , , ) = _getValues(tAmount, false); return rAmount; } else { (, uint256 rTransferAmount, , , , ) = _getValues(tAmount, false); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require(rAmount <= _rTotal, 'Amount must be less than total reflections'); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeAccount(address account) external onlyOwner { require( account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.' ); require(!_isExcluded[account], 'Account is already excluded'); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeAccount(address account) external onlyOwner { require(_isExcluded[account], 'Account is already excluded'); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function removeAllFee() private { if (_taxFee == 0 && _teamFee == 0) return; _previousTaxFee = _taxFee; _previousTeamFee = _teamFee; _taxFee = 0; _teamFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _teamFee = _previousTeamFee; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), 'ERC20: approve from the zero address'); require(spender != address(0), 'ERC20: approve to the zero address'); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address sender, address recipient, uint256 amount ) private { require(sender != address(0), 'ERC20: transfer from the zero address'); require(recipient != address(0), 'ERC20: transfer to the zero address'); require(amount > 0, 'Transfer amount must be greater than zero'); if (sender != owner() && recipient != owner()) require( amount <= _maxTxAmount, 'Transfer amount exceeds the maxTxAmount.' ); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap? // also, don't get caught in a circular team event. // also, don't swap if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam; if ( !inSwap && swapEnabled && overMinTokenBalance && (recipient == uniswapV2Pair || _isUniswapPair[recipient]) ) { // We need to swap the current tokens to ETH and send to the team wallet swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToTeam(address(this).balance); } } // indicates if fee should be deducted from transfer bool takeFee = false; // take fee only on swaps if ( (sender == uniswapV2Pair || recipient == uniswapV2Pair || _isUniswapPair[recipient] || _isUniswapPair[sender]) && !(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) ) { takeFee = true; } //transfer amount, it will take tax and team fee _tokenTransfer(sender, recipient, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function sendETHToTeam(uint256 amount) private { _MCCWalletAddress.call{ value: amount.div(2) }(''); _marketingWalletAddress.call{ value: amount.div(2) }(''); } // We are exposing these functions to be able to manual swap and send // in case the token is highly valued and 5M becomes too much function manualSwap() external onlyOwner { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualSend() external onlyOwner { uint256 contractETHBalance = address(this).balance; sendETHToTeam(contractETHBalance); } function setSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount, _isSelling(recipient)); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount, _isSelling(recipient)); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount, _isSelling(recipient)); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount, _isSelling(recipient)); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _getValues(uint256 tAmount, bool isSelling) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues( tAmount, _taxFee, _teamFee, isSelling ); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, tTeam, currentRate ); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 taxFee, uint256 teamFee, bool isSelling ) private view returns ( uint256, uint256, uint256 ) { uint256 finalTax = isSelling ? taxFee.mul(_sellTaxMultiplier) : taxFee; uint256 finalTeam = isSelling ? teamFee.mul(_sellTaxMultiplier) : teamFee; uint256 tFee = tAmount.mul(finalTax).div(100); uint256 tTeam = tAmount.mul(finalTeam).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _getTaxFee() private view returns (uint256) { return _taxFee; } function _getMaxTxAmount() private view returns (uint256) { return _maxTxAmount; } function _isSelling(address recipient) private view returns (bool) { return recipient == uniswapV2Pair || _isUniswapPair[recipient]; } function _getETHBalance() public view returns (uint256 balance) { return address(this).balance; } function _setTaxFee(uint256 taxFee) external onlyOwner { require(taxFee <= 5, 'taxFee should be in 0 - 5'); _taxFee = taxFee; } function _setTeamFee(uint256 teamFee) external onlyOwner { require(teamFee <= 5, 'teamFee should be in 0 - 5'); _teamFee = teamFee; } function _setSellTaxMultiplier(uint8 mult) external onlyOwner { require(mult >= 1 && mult <= 3, 'multiplier should be in 1 - 3'); _sellTaxMultiplier = mult; } function _setMCCWallet(address payable MCCWalletAddress) external onlyOwner { _MCCWalletAddress = MCCWalletAddress; } function _setMarketingWallet(address payable marketingWalletAddress) external onlyOwner { _marketingWalletAddress = marketingWalletAddress; } function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner { require( maxTxAmount >= 100000000000000e9, 'maxTxAmount should be greater than 100000000000000e9' ); _maxTxAmount = maxTxAmount; } function isUniswapPair(address _pair) external view returns (bool) { if (_pair == uniswapV2Pair) return true; return _isUniswapPair[_pair]; } function addUniswapPair(address _pair) external onlyOwner { _isUniswapPair[_pair] = true; } function removeUniswapPair(address _pair) external onlyOwner { _isUniswapPair[_pair] = false; } function Airdrop(AirdropReceiver[] memory recipients) external onlyOwner { for (uint256 _i = 0; _i < recipients.length; _i++) { AirdropReceiver memory _user = recipients[_i]; transferFrom(msg.sender, _user.addy, _user.amount); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"MCCWalletAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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":[{"components":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct UnitBias.AirdropReceiver[]","name":"recipients","type":"tuple[]"}],"name":"Airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_MCCWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"MCCWalletAddress","type":"address"}],"name":"_setMCCWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"name":"_setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"mult","type":"uint8"}],"name":"_setSellTaxMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"addUniswapPair","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"isUniswapPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"removeUniswapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526509184e72a00060078190556200001e906000196200059c565b6200002c906000196200053b565b60089081556040805180820190915281815267556e69744269617360c01b60209091019081526200006191600a919062000431565b50604080518082019091526002808252612aa160f11b60209092019182526200008d91600b9162000431565b50600c805460ff191660091790556005600d819055600e819055600f819055601055601480546201010062ffffff19909116179055693f870857a3e0e3800000601555633b9aca00601655348015620000e557600080fd5b5060405162003207380380620032078339810160408190526200010891620004fd565b6200011333620003e1565b601180546001600160a01b038085166001600160a01b031992831617909255601280549284169290911691909117905560085460016000620001523390565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001c957600080fd5b505afa158015620001de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002049190620004d7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024d57600080fd5b505afa15801562000262573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002889190620004d7565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002d157600080fd5b505af1158015620002e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030c9190620004d7565b6001600160601b0319606091821b811660a0529082901b16608052600160046000620003406000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526004909252902080549091166001179055620003883390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620003d091815260200190565b60405180910390a3505050620005d6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200043f906200055f565b90600052602060002090601f016020900481019282620004635760008555620004ae565b82601f106200047e57805160ff1916838001178555620004ae565b82800160010185558215620004ae579182015b82811115620004ae57825182559160200191906001019062000491565b50620004bc929150620004c0565b5090565b5b80821115620004bc5760008155600101620004c1565b600060208284031215620004e9578081fd5b8151620004f681620005bd565b9392505050565b6000806040838503121562000510578081fd5b82516200051d81620005bd565b60208401519092506200053081620005bd565b809150509250929050565b6000828210156200055a57634e487b7160e01b81526011600452602481fd5b500390565b600181811c908216806200057457607f821691505b602082108114156200059657634e487b7160e01b600052602260045260246000fd5b50919050565b600082620005b857634e487b7160e01b81526012600452602481fd5b500690565b6001600160a01b0381168114620005d357600080fd5b50565b60805160601c60a05160601c612bcd6200063a600039600081816104d201528181610f3701528181611963015281816119dd01528181611a1801526125820152600081816102ed01528181611c3b01528181611d110152611d4d0152612bcd6000f3fe6080604052600436106102555760003560e01c8063653b9b8a11610139578063a9059cbb116100b6578063e01af92c1161007a578063e01af92c14610768578063f2cc0c1814610788578063f2fde38b146107a8578063f4293890146107c8578063f815a842146107dd578063f84354f1146107f057600080fd5b8063a9059cbb14610689578063af9549e0146106a9578063bee22593146106c9578063cba0e996146106e9578063dd62ed3e1461072257600080fd5b806395d89b41116100fd57806395d89b41146105f45780639cece12e14610609578063a457c2d714610629578063a6931ed714610649578063a7f404e21461066957600080fd5b8063653b9b8a146105625780636ddd17131461058257806370a08231146105a1578063715018a6146105c15780638da5cb5b146105d657600080fd5b8063303adcd8116101d25780634144d9e4116101965780634144d9e4146104805780634549b039146104a057806349bd5a5e146104c057806351bc3c85146104f45780635342acb4146105095780635880b8731461054257600080fd5b8063303adcd8146103de578063313ce567146103fe57806332f7000b1461042057806339509351146104405780633bd5d1731461046057600080fd5b80631bbae6e0116102195780631bbae6e01461033c5780631ff53b601461035e57806323b872dd1461037e578063286671621461039e5780632d838119146103be57600080fd5b806306fdde0314610261578063095ea7b31461028c57806313114a9d146102bc5780631694505e146102db57806318160ddd1461032757600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610810565b60405161028391906128f3565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004612780565b6108a2565b6040519015158152602001610283565b3480156102c857600080fd5b506009545b604051908152602001610283565b3480156102e757600080fd5b5061030f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610283565b34801561033357600080fd5b506007546102cd565b34801561034857600080fd5b5061035c610357366004612898565b6108b9565b005b34801561036a57600080fd5b5061035c61037936600461269c565b610968565b34801561038a57600080fd5b506102ac61039936600461270c565b6109b4565b3480156103aa57600080fd5b5061035c6103b9366004612898565b610a1d565b3480156103ca57600080fd5b506102cd6103d9366004612898565b610a9d565b3480156103ea57600080fd5b5061035c6103f93660046128d2565b610b21565b34801561040a57600080fd5b50600c5460405160ff9091168152602001610283565b34801561042c57600080fd5b5061035c61043b36600461269c565b610bcd565b34801561044c57600080fd5b506102ac61045b366004612780565b610c19565b34801561046c57600080fd5b5061035c61047b366004612898565b610c4f565b34801561048c57600080fd5b5060125461030f906001600160a01b031681565b3480156104ac57600080fd5b506102cd6104bb3660046128b0565b610d3b565b3480156104cc57600080fd5b5061030f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561050057600080fd5b5061035c610dcc565b34801561051557600080fd5b506102ac61052436600461269c565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561054e57600080fd5b5061035c61055d366004612898565b610e0f565b34801561056e57600080fd5b5060115461030f906001600160a01b031681565b34801561058e57600080fd5b506014546102ac90610100900460ff1681565b3480156105ad57600080fd5b506102cd6105bc36600461269c565b610e8f565b3480156105cd57600080fd5b5061035c610eee565b3480156105e257600080fd5b506000546001600160a01b031661030f565b34801561060057600080fd5b50610276610f24565b34801561061557600080fd5b506102ac61062436600461269c565b610f33565b34801561063557600080fd5b506102ac610644366004612780565b610f96565b34801561065557600080fd5b5061035c61066436600461269c565b610fe5565b34801561067557600080fd5b5061035c61068436600461269c565b611030565b34801561069557600080fd5b506102ac6106a4366004612780565b61107e565b3480156106b557600080fd5b5061035c6106c436600461274c565b61108b565b3480156106d557600080fd5b5061035c6106e43660046127ab565b6110e0565b3480156106f557600080fd5b506102ac61070436600461269c565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561072e57600080fd5b506102cd61073d3660046126d4565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561077457600080fd5b5061035c61078336600461287e565b61116e565b34801561079457600080fd5b5061035c6107a336600461269c565b6111b2565b3480156107b457600080fd5b5061035c6107c336600461269c565b61137d565b3480156107d457600080fd5b5061035c611415565b3480156107e957600080fd5b50476102cd565b3480156107fc57600080fd5b5061035c61080b36600461269c565b611449565b6060600a805461081f90612ab3565b80601f016020809104026020016040519081016040528092919081815260200182805461084b90612ab3565b80156108985780601f1061086d57610100808354040283529160200191610898565b820191906000526020600020905b81548152906001019060200180831161087b57829003601f168201915b5050505050905090565b60006108af338484611634565b5060015b92915050565b6000546001600160a01b031633146108ec5760405162461bcd60e51b81526004016108e390612946565b60405180910390fd5b69152d02c7e14af68000008110156109635760405162461bcd60e51b815260206004820152603460248201527f6d61785478416d6f756e742073686f756c642062652067726561746572207468604482015273616e20313030303030303030303030303030653960601b60648201526084016108e3565b601555565b6000546001600160a01b031633146109925760405162461bcd60e51b81526004016108e390612946565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c1848484611758565b610a138433610a0e85604051806060016040528060288152602001612b4b602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611af7565b611634565b5060019392505050565b6000546001600160a01b03163314610a475760405162461bcd60e51b81526004016108e390612946565b6005811115610a985760405162461bcd60e51b815260206004820152601a60248201527f7465616d4665652073686f756c6420626520696e2030202d203500000000000060448201526064016108e3565b600e55565b6000600854821115610b045760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108e3565b6000610b0e611b23565b9050610b1a8382611b46565b9392505050565b6000546001600160a01b03163314610b4b5760405162461bcd60e51b81526004016108e390612946565b60018160ff1610158015610b63575060038160ff1611155b610baf5760405162461bcd60e51b815260206004820152601d60248201527f6d756c7469706c6965722073686f756c6420626520696e2031202d203300000060448201526064016108e3565b6014805460ff909216620100000262ff000019909216919091179055565b6000546001600160a01b03163314610bf75760405162461bcd60e51b81526004016108e390612946565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916108af918590610a0e9086611b52565b3360008181526005602052604090205460ff1615610cc45760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016108e3565b6000610cd1836000611b5e565b505050506001600160a01b038416600090815260016020526040902054919250610cfd91905082611bbd565b6001600160a01b038316600090815260016020526040902055600854610d239082611bbd565b600855600954610d339084611b52565b600955505050565b6000600754831115610d8f5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108e3565b81610db0576000610da1846000611b5e565b509395506108b3945050505050565b6000610dbd846000611b5e565b509295506108b3945050505050565b6000546001600160a01b03163314610df65760405162461bcd60e51b81526004016108e390612946565b6000610e0130610e8f565b9050610e0c81611bc9565b50565b6000546001600160a01b03163314610e395760405162461bcd60e51b81526004016108e390612946565b6005811115610e8a5760405162461bcd60e51b815260206004820152601960248201527f7461784665652073686f756c6420626520696e2030202d20350000000000000060448201526064016108e3565b600d55565b6001600160a01b03811660009081526005602052604081205460ff1615610ecc57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546108b390610a9d565b6000546001600160a01b03163314610f185760405162461bcd60e51b81526004016108e390612946565b610f226000611dcb565b565b6060600b805461081f90612ab3565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415610f7757506001919050565b506001600160a01b031660009081526013602052604090205460ff1690565b60006108af3384610a0e85604051806060016040528060258152602001612b73602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611af7565b6000546001600160a01b0316331461100f5760405162461bcd60e51b81526004016108e390612946565b6001600160a01b03166000908152601360205260409020805460ff19169055565b6000546001600160a01b0316331461105a5760405162461bcd60e51b81526004016108e390612946565b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b60006108af338484611758565b6000546001600160a01b031633146110b55760405162461bcd60e51b81526004016108e390612946565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461110a5760405162461bcd60e51b81526004016108e390612946565b60005b815181101561116a57600082828151811061113857634e487b7160e01b600052603260045260246000fd5b6020026020010151905061115533826000015183602001516109b4565b5050808061116290612aee565b91505061110d565b5050565b6000546001600160a01b031633146111985760405162461bcd60e51b81526004016108e390612946565b601480549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146111dc5760405162461bcd60e51b81526004016108e390612946565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156112545760405162461bcd60e51b815260206004820152602260248201527f57652063616e206e6f74206578636c75646520556e697377617020726f757465604482015261391760f11b60648201526084016108e3565b6001600160a01b03811660009081526005602052604090205460ff16156112bd5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108e3565b6001600160a01b03811660009081526001602052604090205415611317576001600160a01b0381166000908152600160205260409020546112fd90610a9d565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b031633146113a75760405162461bcd60e51b81526004016108e390612946565b6001600160a01b03811661140c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e3565b610e0c81611dcb565b6000546001600160a01b0316331461143f5760405162461bcd60e51b81526004016108e390612946565b47610e0c81611e1b565b6000546001600160a01b031633146114735760405162461bcd60e51b81526004016108e390612946565b6001600160a01b03811660009081526005602052604090205460ff166114db5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108e3565b60005b60065481101561116a57816001600160a01b03166006828154811061151357634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415611622576006805461153e90600190612a9c565b8154811061155c57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b03909216918390811061159657634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff1916905560068054806115fc57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061162c81612aee565b9150506114de565b6001600160a01b0383166116965760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108e3565b6001600160a01b0382166116f75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108e3565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108e3565b6001600160a01b03821661181e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108e3565b600081116118805760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108e3565b6000546001600160a01b038481169116148015906118ac57506000546001600160a01b03838116911614155b15611914576015548111156119145760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016108e3565b600061191f30610e8f565b9050601554811061192f57506015545b601654601454908210159060ff161580156119515750601454610100900460ff165b801561195a5750805b80156119b957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614806119b957506001600160a01b03841660009081526013602052604090205460ff165b156119d9576119c782611bc9565b4780156119d7576119d747611e1b565b505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161480611a4c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b80611a6f57506001600160a01b03851660009081526013602052604090205460ff165b80611a9257506001600160a01b03861660009081526013602052604090205460ff165b8015611ada57506001600160a01b03861660009081526004602052604090205460ff1680611ad857506001600160a01b03851660009081526004602052604090205460ff165b155b15611ae3575060015b611aef86868684611ed5565b505050505050565b60008184841115611b1b5760405162461bcd60e51b81526004016108e391906128f3565b505050900390565b6000806000611b30611ffa565b9092509050611b3f8282611b46565b9250505090565b6000610b1a8284612a5d565b6000610b1a8284612a45565b6000806000806000806000806000611b7c8b600d54600e548d6121b4565b9250925092506000611b8c611b23565b90506000806000611b9f8f878787612259565b919e509c509a50959850939650919450505050509295509295509295565b6000610b1a8284612a9c565b6014805460ff191660011790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611c1957634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c9257600080fd5b505afa158015611ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cca91906126b8565b81600181518110611ceb57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050611d36307f000000000000000000000000000000000000000000000000000000000000000084611634565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611d8b90859060009086903090429060040161297b565b600060405180830381600087803b158015611da557600080fd5b505af1158015611db9573d6000803e3d6000fd5b50506014805460ff1916905550505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6011546001600160a01b0316611e32826002611b46565b604051600081818185875af1925050503d8060008114611e6e576040519150601f19603f3d011682016040523d82523d6000602084013e611e73565b606091505b50506012546001600160a01b03169050611e8e826002611b46565b604051600081818185875af1925050503d8060008114611eca576040519150601f19603f3d011682016040523d82523d6000602084013e611ecf565b606091505b50505050565b80611ee257611ee26122a9565b6001600160a01b03841660009081526005602052604090205460ff168015611f2357506001600160a01b03831660009081526005602052604090205460ff16155b15611f3857611f338484846122d7565b611fe4565b6001600160a01b03841660009081526005602052604090205460ff16158015611f7957506001600160a01b03831660009081526005602052604090205460ff165b15611f8957611f33848484612406565b6001600160a01b03841660009081526005602052604090205460ff168015611fc957506001600160a01b03831660009081526005602052604090205460ff165b15611fd957611f338484846124b3565b611fe484848461252a565b80611ecf57611ecf600f54600d55601054600e55565b6008546007546000918291825b6006548110156121845782600160006006848154811061203757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806120b0575081600260006006848154811061208957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156120c657600854600754945094505050509091565b61211a60016000600684815481106120ee57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611bbd565b9250612170600260006006848154811061214457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611bbd565b91508061217c81612aee565b915050612007565b5060075460085461219491611b46565b8210156121ab576008546007549350935050509091565b90939092509050565b600080600080846121c557866121dc565b6014546121dc90889062010000900460ff16612572565b90506000856121eb5786612202565b60145461220290889062010000900460ff16612572565b9050600061221b60646122158c86612572565b90611b46565b9050600061222e60646122158d86612572565b90506000612246826122408e86611bbd565b90611bbd565b9c929b5090995090975050505050505050565b60008080806122688886612572565b905060006122768887612572565b905060006122848888612572565b90506000612296826122408686611bbd565b939b939a50919850919650505050505050565b600d541580156122b95750600e54155b156122c057565b600d8054600f55600e805460105560009182905555565b6000806000806000806122f2876122ed8a61257e565b611b5e565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506123249088611bbd565b6001600160a01b038a166000908152600260209081526040808320939093556001905220546123539087611bbd565b6001600160a01b03808b1660009081526001602052604080822093909355908a16815220546123829086611b52565b6001600160a01b0389166000908152600160205260409020556123a4816125da565b6123ae8483612663565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123f391815260200190565b60405180910390a3505050505050505050565b60008060008060008061241c876122ed8a61257e565b6001600160a01b038f16600090815260016020526040902054959b5093995091975095509350915061244e9087611bbd565b6001600160a01b03808b16600090815260016020908152604080832094909455918b168152600290915220546124849084611b52565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546123829086611b52565b6000806000806000806124c9876122ed8a61257e565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506124fb9088611bbd565b6001600160a01b038a1660009081526002602090815260408083209390935560019052205461244e9087611bbd565b600080600080600080612540876122ed8a61257e565b6001600160a01b038f16600090815260016020526040902054959b509399509197509550935091506123539087611bbd565b6000610b1a8284612a7d565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806108b35750506001600160a01b031660009081526013602052604090205460ff1690565b60006125e4611b23565b905060006125f28383612572565b3060009081526001602052604090205490915061260f9082611b52565b3060009081526001602090815260408083209390935560059052205460ff161561265e573060009081526002602052604090205461264d9084611b52565b306000908152600260205260409020555b505050565b6008546126709083611bbd565b6008556009546126809082611b52565b6009555050565b8035801515811461269757600080fd5b919050565b6000602082840312156126ad578081fd5b8135610b1a81612b35565b6000602082840312156126c9578081fd5b8151610b1a81612b35565b600080604083850312156126e6578081fd5b82356126f181612b35565b9150602083013561270181612b35565b809150509250929050565b600080600060608486031215612720578081fd5b833561272b81612b35565b9250602084013561273b81612b35565b929592945050506040919091013590565b6000806040838503121561275e578182fd5b823561276981612b35565b915061277760208401612687565b90509250929050565b60008060408385031215612792578182fd5b823561279d81612b35565b946020939093013593505050565b600060208083850312156127bd578182fd5b823567ffffffffffffffff808211156127d4578384fd5b818501915085601f8301126127e7578384fd5b8135818111156127f9576127f9612b1f565b612807848260051b01612a14565b8181528481019250838501600683901b85018601891015612826578687fd5b8694505b8285101561287257604080828b031215612842578788fd5b61284a6129eb565b823561285581612b35565b81528288013588820152855260019590950194938601930161282a565b50979650505050505050565b60006020828403121561288f578081fd5b610b1a82612687565b6000602082840312156128a9578081fd5b5035919050565b600080604083850312156128c2578182fd5b8235915061277760208401612687565b6000602082840312156128e3578081fd5b813560ff81168114610b1a578182fd5b6000602080835283518082850152825b8181101561291f57858101830151858201604001528201612903565b818111156129305783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156129ca5784516001600160a01b0316835293830193918301916001016129a5565b50506001600160a01b03969096166060850152505050608001529392505050565b6040805190810167ffffffffffffffff81118282101715612a0e57612a0e612b1f565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612a3d57612a3d612b1f565b604052919050565b60008219821115612a5857612a58612b09565b500190565b600082612a7857634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612a9757612a97612b09565b500290565b600082821015612aae57612aae612b09565b500390565b600181811c90821680612ac757607f821691505b60208210811415612ae857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612b0257612b02612b09565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610e0c57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207ddc236d00abedcdc7f8696e6ac3462fbc7264e37019a3defd31e5d299e740d564736f6c634300080400330000000000000000000000008dfcbdc42f54cb9da5baae20b7ed2256f84322eb000000000000000000000000ed528fc31f2575312ec3336e0f6ec9812b534937
Deployed Bytecode
0x6080604052600436106102555760003560e01c8063653b9b8a11610139578063a9059cbb116100b6578063e01af92c1161007a578063e01af92c14610768578063f2cc0c1814610788578063f2fde38b146107a8578063f4293890146107c8578063f815a842146107dd578063f84354f1146107f057600080fd5b8063a9059cbb14610689578063af9549e0146106a9578063bee22593146106c9578063cba0e996146106e9578063dd62ed3e1461072257600080fd5b806395d89b41116100fd57806395d89b41146105f45780639cece12e14610609578063a457c2d714610629578063a6931ed714610649578063a7f404e21461066957600080fd5b8063653b9b8a146105625780636ddd17131461058257806370a08231146105a1578063715018a6146105c15780638da5cb5b146105d657600080fd5b8063303adcd8116101d25780634144d9e4116101965780634144d9e4146104805780634549b039146104a057806349bd5a5e146104c057806351bc3c85146104f45780635342acb4146105095780635880b8731461054257600080fd5b8063303adcd8146103de578063313ce567146103fe57806332f7000b1461042057806339509351146104405780633bd5d1731461046057600080fd5b80631bbae6e0116102195780631bbae6e01461033c5780631ff53b601461035e57806323b872dd1461037e578063286671621461039e5780632d838119146103be57600080fd5b806306fdde0314610261578063095ea7b31461028c57806313114a9d146102bc5780631694505e146102db57806318160ddd1461032757600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610810565b60405161028391906128f3565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004612780565b6108a2565b6040519015158152602001610283565b3480156102c857600080fd5b506009545b604051908152602001610283565b3480156102e757600080fd5b5061030f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610283565b34801561033357600080fd5b506007546102cd565b34801561034857600080fd5b5061035c610357366004612898565b6108b9565b005b34801561036a57600080fd5b5061035c61037936600461269c565b610968565b34801561038a57600080fd5b506102ac61039936600461270c565b6109b4565b3480156103aa57600080fd5b5061035c6103b9366004612898565b610a1d565b3480156103ca57600080fd5b506102cd6103d9366004612898565b610a9d565b3480156103ea57600080fd5b5061035c6103f93660046128d2565b610b21565b34801561040a57600080fd5b50600c5460405160ff9091168152602001610283565b34801561042c57600080fd5b5061035c61043b36600461269c565b610bcd565b34801561044c57600080fd5b506102ac61045b366004612780565b610c19565b34801561046c57600080fd5b5061035c61047b366004612898565b610c4f565b34801561048c57600080fd5b5060125461030f906001600160a01b031681565b3480156104ac57600080fd5b506102cd6104bb3660046128b0565b610d3b565b3480156104cc57600080fd5b5061030f7f000000000000000000000000439ae0bfdbbbe235c986994c8784c5e71624949d81565b34801561050057600080fd5b5061035c610dcc565b34801561051557600080fd5b506102ac61052436600461269c565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561054e57600080fd5b5061035c61055d366004612898565b610e0f565b34801561056e57600080fd5b5060115461030f906001600160a01b031681565b34801561058e57600080fd5b506014546102ac90610100900460ff1681565b3480156105ad57600080fd5b506102cd6105bc36600461269c565b610e8f565b3480156105cd57600080fd5b5061035c610eee565b3480156105e257600080fd5b506000546001600160a01b031661030f565b34801561060057600080fd5b50610276610f24565b34801561061557600080fd5b506102ac61062436600461269c565b610f33565b34801561063557600080fd5b506102ac610644366004612780565b610f96565b34801561065557600080fd5b5061035c61066436600461269c565b610fe5565b34801561067557600080fd5b5061035c61068436600461269c565b611030565b34801561069557600080fd5b506102ac6106a4366004612780565b61107e565b3480156106b557600080fd5b5061035c6106c436600461274c565b61108b565b3480156106d557600080fd5b5061035c6106e43660046127ab565b6110e0565b3480156106f557600080fd5b506102ac61070436600461269c565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561072e57600080fd5b506102cd61073d3660046126d4565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561077457600080fd5b5061035c61078336600461287e565b61116e565b34801561079457600080fd5b5061035c6107a336600461269c565b6111b2565b3480156107b457600080fd5b5061035c6107c336600461269c565b61137d565b3480156107d457600080fd5b5061035c611415565b3480156107e957600080fd5b50476102cd565b3480156107fc57600080fd5b5061035c61080b36600461269c565b611449565b6060600a805461081f90612ab3565b80601f016020809104026020016040519081016040528092919081815260200182805461084b90612ab3565b80156108985780601f1061086d57610100808354040283529160200191610898565b820191906000526020600020905b81548152906001019060200180831161087b57829003601f168201915b5050505050905090565b60006108af338484611634565b5060015b92915050565b6000546001600160a01b031633146108ec5760405162461bcd60e51b81526004016108e390612946565b60405180910390fd5b69152d02c7e14af68000008110156109635760405162461bcd60e51b815260206004820152603460248201527f6d61785478416d6f756e742073686f756c642062652067726561746572207468604482015273616e20313030303030303030303030303030653960601b60648201526084016108e3565b601555565b6000546001600160a01b031633146109925760405162461bcd60e51b81526004016108e390612946565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c1848484611758565b610a138433610a0e85604051806060016040528060288152602001612b4b602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611af7565b611634565b5060019392505050565b6000546001600160a01b03163314610a475760405162461bcd60e51b81526004016108e390612946565b6005811115610a985760405162461bcd60e51b815260206004820152601a60248201527f7465616d4665652073686f756c6420626520696e2030202d203500000000000060448201526064016108e3565b600e55565b6000600854821115610b045760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108e3565b6000610b0e611b23565b9050610b1a8382611b46565b9392505050565b6000546001600160a01b03163314610b4b5760405162461bcd60e51b81526004016108e390612946565b60018160ff1610158015610b63575060038160ff1611155b610baf5760405162461bcd60e51b815260206004820152601d60248201527f6d756c7469706c6965722073686f756c6420626520696e2031202d203300000060448201526064016108e3565b6014805460ff909216620100000262ff000019909216919091179055565b6000546001600160a01b03163314610bf75760405162461bcd60e51b81526004016108e390612946565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916108af918590610a0e9086611b52565b3360008181526005602052604090205460ff1615610cc45760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016108e3565b6000610cd1836000611b5e565b505050506001600160a01b038416600090815260016020526040902054919250610cfd91905082611bbd565b6001600160a01b038316600090815260016020526040902055600854610d239082611bbd565b600855600954610d339084611b52565b600955505050565b6000600754831115610d8f5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108e3565b81610db0576000610da1846000611b5e565b509395506108b3945050505050565b6000610dbd846000611b5e565b509295506108b3945050505050565b6000546001600160a01b03163314610df65760405162461bcd60e51b81526004016108e390612946565b6000610e0130610e8f565b9050610e0c81611bc9565b50565b6000546001600160a01b03163314610e395760405162461bcd60e51b81526004016108e390612946565b6005811115610e8a5760405162461bcd60e51b815260206004820152601960248201527f7461784665652073686f756c6420626520696e2030202d20350000000000000060448201526064016108e3565b600d55565b6001600160a01b03811660009081526005602052604081205460ff1615610ecc57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546108b390610a9d565b6000546001600160a01b03163314610f185760405162461bcd60e51b81526004016108e390612946565b610f226000611dcb565b565b6060600b805461081f90612ab3565b60007f000000000000000000000000439ae0bfdbbbe235c986994c8784c5e71624949d6001600160a01b0316826001600160a01b03161415610f7757506001919050565b506001600160a01b031660009081526013602052604090205460ff1690565b60006108af3384610a0e85604051806060016040528060258152602001612b73602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611af7565b6000546001600160a01b0316331461100f5760405162461bcd60e51b81526004016108e390612946565b6001600160a01b03166000908152601360205260409020805460ff19169055565b6000546001600160a01b0316331461105a5760405162461bcd60e51b81526004016108e390612946565b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b60006108af338484611758565b6000546001600160a01b031633146110b55760405162461bcd60e51b81526004016108e390612946565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461110a5760405162461bcd60e51b81526004016108e390612946565b60005b815181101561116a57600082828151811061113857634e487b7160e01b600052603260045260246000fd5b6020026020010151905061115533826000015183602001516109b4565b5050808061116290612aee565b91505061110d565b5050565b6000546001600160a01b031633146111985760405162461bcd60e51b81526004016108e390612946565b601480549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146111dc5760405162461bcd60e51b81526004016108e390612946565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156112545760405162461bcd60e51b815260206004820152602260248201527f57652063616e206e6f74206578636c75646520556e697377617020726f757465604482015261391760f11b60648201526084016108e3565b6001600160a01b03811660009081526005602052604090205460ff16156112bd5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108e3565b6001600160a01b03811660009081526001602052604090205415611317576001600160a01b0381166000908152600160205260409020546112fd90610a9d565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b031633146113a75760405162461bcd60e51b81526004016108e390612946565b6001600160a01b03811661140c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e3565b610e0c81611dcb565b6000546001600160a01b0316331461143f5760405162461bcd60e51b81526004016108e390612946565b47610e0c81611e1b565b6000546001600160a01b031633146114735760405162461bcd60e51b81526004016108e390612946565b6001600160a01b03811660009081526005602052604090205460ff166114db5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108e3565b60005b60065481101561116a57816001600160a01b03166006828154811061151357634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415611622576006805461153e90600190612a9c565b8154811061155c57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b03909216918390811061159657634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff1916905560068054806115fc57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061162c81612aee565b9150506114de565b6001600160a01b0383166116965760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108e3565b6001600160a01b0382166116f75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108e3565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108e3565b6001600160a01b03821661181e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108e3565b600081116118805760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108e3565b6000546001600160a01b038481169116148015906118ac57506000546001600160a01b03838116911614155b15611914576015548111156119145760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016108e3565b600061191f30610e8f565b9050601554811061192f57506015545b601654601454908210159060ff161580156119515750601454610100900460ff165b801561195a5750805b80156119b957507f000000000000000000000000439ae0bfdbbbe235c986994c8784c5e71624949d6001600160a01b0316846001600160a01b031614806119b957506001600160a01b03841660009081526013602052604090205460ff165b156119d9576119c782611bc9565b4780156119d7576119d747611e1b565b505b60007f000000000000000000000000439ae0bfdbbbe235c986994c8784c5e71624949d6001600160a01b0316866001600160a01b03161480611a4c57507f000000000000000000000000439ae0bfdbbbe235c986994c8784c5e71624949d6001600160a01b0316856001600160a01b0316145b80611a6f57506001600160a01b03851660009081526013602052604090205460ff165b80611a9257506001600160a01b03861660009081526013602052604090205460ff165b8015611ada57506001600160a01b03861660009081526004602052604090205460ff1680611ad857506001600160a01b03851660009081526004602052604090205460ff165b155b15611ae3575060015b611aef86868684611ed5565b505050505050565b60008184841115611b1b5760405162461bcd60e51b81526004016108e391906128f3565b505050900390565b6000806000611b30611ffa565b9092509050611b3f8282611b46565b9250505090565b6000610b1a8284612a5d565b6000610b1a8284612a45565b6000806000806000806000806000611b7c8b600d54600e548d6121b4565b9250925092506000611b8c611b23565b90506000806000611b9f8f878787612259565b919e509c509a50959850939650919450505050509295509295509295565b6000610b1a8284612a9c565b6014805460ff191660011790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611c1957634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c9257600080fd5b505afa158015611ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cca91906126b8565b81600181518110611ceb57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050611d36307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611634565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611d8b90859060009086903090429060040161297b565b600060405180830381600087803b158015611da557600080fd5b505af1158015611db9573d6000803e3d6000fd5b50506014805460ff1916905550505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6011546001600160a01b0316611e32826002611b46565b604051600081818185875af1925050503d8060008114611e6e576040519150601f19603f3d011682016040523d82523d6000602084013e611e73565b606091505b50506012546001600160a01b03169050611e8e826002611b46565b604051600081818185875af1925050503d8060008114611eca576040519150601f19603f3d011682016040523d82523d6000602084013e611ecf565b606091505b50505050565b80611ee257611ee26122a9565b6001600160a01b03841660009081526005602052604090205460ff168015611f2357506001600160a01b03831660009081526005602052604090205460ff16155b15611f3857611f338484846122d7565b611fe4565b6001600160a01b03841660009081526005602052604090205460ff16158015611f7957506001600160a01b03831660009081526005602052604090205460ff165b15611f8957611f33848484612406565b6001600160a01b03841660009081526005602052604090205460ff168015611fc957506001600160a01b03831660009081526005602052604090205460ff165b15611fd957611f338484846124b3565b611fe484848461252a565b80611ecf57611ecf600f54600d55601054600e55565b6008546007546000918291825b6006548110156121845782600160006006848154811061203757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806120b0575081600260006006848154811061208957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156120c657600854600754945094505050509091565b61211a60016000600684815481106120ee57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611bbd565b9250612170600260006006848154811061214457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611bbd565b91508061217c81612aee565b915050612007565b5060075460085461219491611b46565b8210156121ab576008546007549350935050509091565b90939092509050565b600080600080846121c557866121dc565b6014546121dc90889062010000900460ff16612572565b90506000856121eb5786612202565b60145461220290889062010000900460ff16612572565b9050600061221b60646122158c86612572565b90611b46565b9050600061222e60646122158d86612572565b90506000612246826122408e86611bbd565b90611bbd565b9c929b5090995090975050505050505050565b60008080806122688886612572565b905060006122768887612572565b905060006122848888612572565b90506000612296826122408686611bbd565b939b939a50919850919650505050505050565b600d541580156122b95750600e54155b156122c057565b600d8054600f55600e805460105560009182905555565b6000806000806000806122f2876122ed8a61257e565b611b5e565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506123249088611bbd565b6001600160a01b038a166000908152600260209081526040808320939093556001905220546123539087611bbd565b6001600160a01b03808b1660009081526001602052604080822093909355908a16815220546123829086611b52565b6001600160a01b0389166000908152600160205260409020556123a4816125da565b6123ae8483612663565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123f391815260200190565b60405180910390a3505050505050505050565b60008060008060008061241c876122ed8a61257e565b6001600160a01b038f16600090815260016020526040902054959b5093995091975095509350915061244e9087611bbd565b6001600160a01b03808b16600090815260016020908152604080832094909455918b168152600290915220546124849084611b52565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546123829086611b52565b6000806000806000806124c9876122ed8a61257e565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506124fb9088611bbd565b6001600160a01b038a1660009081526002602090815260408083209390935560019052205461244e9087611bbd565b600080600080600080612540876122ed8a61257e565b6001600160a01b038f16600090815260016020526040902054959b509399509197509550935091506123539087611bbd565b6000610b1a8284612a7d565b60007f000000000000000000000000439ae0bfdbbbe235c986994c8784c5e71624949d6001600160a01b0316826001600160a01b031614806108b35750506001600160a01b031660009081526013602052604090205460ff1690565b60006125e4611b23565b905060006125f28383612572565b3060009081526001602052604090205490915061260f9082611b52565b3060009081526001602090815260408083209390935560059052205460ff161561265e573060009081526002602052604090205461264d9084611b52565b306000908152600260205260409020555b505050565b6008546126709083611bbd565b6008556009546126809082611b52565b6009555050565b8035801515811461269757600080fd5b919050565b6000602082840312156126ad578081fd5b8135610b1a81612b35565b6000602082840312156126c9578081fd5b8151610b1a81612b35565b600080604083850312156126e6578081fd5b82356126f181612b35565b9150602083013561270181612b35565b809150509250929050565b600080600060608486031215612720578081fd5b833561272b81612b35565b9250602084013561273b81612b35565b929592945050506040919091013590565b6000806040838503121561275e578182fd5b823561276981612b35565b915061277760208401612687565b90509250929050565b60008060408385031215612792578182fd5b823561279d81612b35565b946020939093013593505050565b600060208083850312156127bd578182fd5b823567ffffffffffffffff808211156127d4578384fd5b818501915085601f8301126127e7578384fd5b8135818111156127f9576127f9612b1f565b612807848260051b01612a14565b8181528481019250838501600683901b85018601891015612826578687fd5b8694505b8285101561287257604080828b031215612842578788fd5b61284a6129eb565b823561285581612b35565b81528288013588820152855260019590950194938601930161282a565b50979650505050505050565b60006020828403121561288f578081fd5b610b1a82612687565b6000602082840312156128a9578081fd5b5035919050565b600080604083850312156128c2578182fd5b8235915061277760208401612687565b6000602082840312156128e3578081fd5b813560ff81168114610b1a578182fd5b6000602080835283518082850152825b8181101561291f57858101830151858201604001528201612903565b818111156129305783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156129ca5784516001600160a01b0316835293830193918301916001016129a5565b50506001600160a01b03969096166060850152505050608001529392505050565b6040805190810167ffffffffffffffff81118282101715612a0e57612a0e612b1f565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612a3d57612a3d612b1f565b604052919050565b60008219821115612a5857612a58612b09565b500190565b600082612a7857634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612a9757612a97612b09565b500290565b600082821015612aae57612aae612b09565b500390565b600181811c90821680612ac757607f821691505b60208210811415612ae857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612b0257612b02612b09565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610e0c57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207ddc236d00abedcdc7f8696e6ac3462fbc7264e37019a3defd31e5d299e740d564736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008dfcbdc42f54cb9da5baae20b7ed2256f84322eb000000000000000000000000ed528fc31f2575312ec3336e0f6ec9812b534937
-----Decoded View---------------
Arg [0] : MCCWalletAddress (address): 0x8dFcBdc42F54cb9DA5BAae20B7ED2256F84322EB
Arg [1] : marketingWalletAddress (address): 0xed528FC31f2575312Ec3336E0F6ec9812B534937
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000008dfcbdc42f54cb9da5baae20b7ed2256f84322eb
Arg [1] : 000000000000000000000000ed528fc31f2575312ec3336e0f6ec9812b534937
Deployed Bytecode Sourcemap
28908:18943:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31448:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32337:169;;;;;;;;;;-1:-1:-1;32337:169:0;;;;;:::i;:::-;;:::i;:::-;;;5613:14:1;;5606:22;5588:41;;5576:2;5561:18;32337:169:0;5543:92:1;33748:81:0;;;;;;;;;;-1:-1:-1;33813:10:0;;33748:81;;;13265:25:1;;;13253:2;13238:18;33748:81:0;13220:76:1;29876:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5180:32:1;;;5162:51;;5150:2;5135:18;29876:51:0;5117:102:1;31701:89:0;;;;;;;;;;-1:-1:-1;31777:7:0;;31701:89;;46982:229;;;;;;;;;;-1:-1:-1;46982:229:0;;;;;:::i;:::-;;:::i;:::-;;46814:162;;;;;;;;;;-1:-1:-1;46814:162:0;;;;;:::i;:::-;;:::i;32512:374::-;;;;;;;;;;-1:-1:-1;32512:374:0;;;;;:::i;:::-;;:::i;46354:146::-;;;;;;;;;;-1:-1:-1;46354:146:0;;;;;:::i;:::-;;:::i;34668:239::-;;;;;;;;;;-1:-1:-1;34668:239:0;;;;;:::i;:::-;;:::i;46506:171::-;;;;;;;;;;-1:-1:-1;46506:171:0;;;;;:::i;:::-;;:::i;31618:77::-;;;;;;;;;;-1:-1:-1;31680:9:0;;31618:77;;31680:9;;;;14431:36:1;;14419:2;14404:18;31618:77:0;14386:87:1;46683:125:0;;;;;;;;;;-1:-1:-1;46683:125:0;;;;;:::i;:::-;;:::i;32892:254::-;;;;;;;;;;-1:-1:-1;32892:254:0;;;;;:::i;:::-;;:::i;33835:384::-;;;;;;;;;;-1:-1:-1;33835:384:0;;;;;:::i;:::-;;:::i;29823:46::-;;;;;;;;;;-1:-1:-1;29823:46:0;;;;-1:-1:-1;;;;;29823:46:0;;;34225:437;;;;;;;;;;-1:-1:-1;34225:437:0;;;;;:::i;:::-;;:::i;29932:38::-;;;;;;;;;;;;;;;39344:144;;;;;;;;;;;;;:::i;36076:118::-;;;;;;;;;;-1:-1:-1;36076:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;36161:27:0;36141:4;36161:27;;;:18;:27;;;;;;;;;36076:118;46208:140;;;;;;;;;;-1:-1:-1;46208:140:0;;;;;:::i;:::-;;:::i;29778:40::-;;;;;;;;;;-1:-1:-1;29778:40:0;;;;-1:-1:-1;;;;;29778:40:0;;;30053:30;;;;;;;;;;-1:-1:-1;30053:30:0;;;;;;;;;;;31796:188;;;;;;;;;;-1:-1:-1;31796:188:0;;;;;:::i;:::-;;:::i;12380:94::-;;;;;;;;;;;;;:::i;11729:87::-;;;;;;;;;;-1:-1:-1;11775:7:0;11802:6;-1:-1:-1;;;;;11802:6:0;11729:87;;31531:81;;;;;;;;;;;;;:::i;47217:154::-;;;;;;;;;;-1:-1:-1;47217:154:0;;;;;:::i;:::-;;:::i;33152:332::-;;;;;;;;;;-1:-1:-1;33152:332:0;;;;;:::i;:::-;;:::i;47482:103::-;;;;;;;;;;-1:-1:-1;47482:103:0;;;;;:::i;:::-;;:::i;47377:99::-;;;;;;;;;;-1:-1:-1;47377:99:0;;;;;:::i;:::-;;:::i;31990:175::-;;;;;;;;;;-1:-1:-1;31990:175:0;;;;;:::i;:::-;;:::i;33600:142::-;;;;;;;;;;-1:-1:-1;33600:142:0;;;;;:::i;:::-;;:::i;47591:257::-;;;;;;;;;;-1:-1:-1;47591:257:0;;;;;:::i;:::-;;:::i;33490:104::-;;;;;;;;;;-1:-1:-1;33490:104:0;;;;;:::i;:::-;-1:-1:-1;;;;;33568:20:0;33548:4;33568:20;;;:11;:20;;;;;;;;;33490:104;32171:160;;;;;;;;;;-1:-1:-1;32171:160:0;;;;;:::i;:::-;-1:-1:-1;;;;;32298:18:0;;;32272:7;32298:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;32171:160;39644:91;;;;;;;;;;-1:-1:-1;39644:91:0;;;;;:::i;:::-;;:::i;34913:431::-;;;;;;;;;;-1:-1:-1;34913:431:0;;;;;:::i;:::-;;:::i;12629:192::-;;;;;;;;;;-1:-1:-1;12629:192:0;;;;;:::i;:::-;;:::i;39494:144::-;;;;;;;;;;;;;:::i;46097:105::-;;;;;;;;;;-1:-1:-1;46175:21:0;46097:105;;35350:410;;;;;;;;;;-1:-1:-1;35350:410:0;;;;;:::i;:::-;;:::i;31448:77::-;31485:13;31514:5;31507:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31448:77;:::o;32337:169::-;32427:4;32443:39;10685:10;32466:7;32475:6;32443:8;:39::i;:::-;-1:-1:-1;32496:4:0;32337:169;;;;;:::o;46982:229::-;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;;;;;;;;;47085:17:::1;47070:11;:32;;47054:118;;;::::0;-1:-1:-1;;;47054:118:0;;9375:2:1;47054:118:0::1;::::0;::::1;9357:21:1::0;9414:2;9394:18;;;9387:30;9453:34;9433:18;;;9426:62;-1:-1:-1;;;9504:18:1;;;9497:50;9564:19;;47054:118:0::1;9347:242:1::0;47054:118:0::1;47179:12;:26:::0;46982:229::o;46814:162::-;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;46922:23:::1;:48:::0;;-1:-1:-1;;;;;;46922:48:0::1;-1:-1:-1::0;;;;;46922:48:0;;;::::1;::::0;;;::::1;::::0;;46814:162::o;32512:374::-;32630:4;32643:36;32653:6;32661:9;32672:6;32643:9;:36::i;:::-;32686:176;32703:6;10685:10;32739:116;32787:6;32739:116;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32739:19:0;;;;;;:11;:19;;;;;;;;10685:10;32739:33;;;;;;;;;;:37;:116::i;:::-;32686:8;:176::i;:::-;-1:-1:-1;32876:4:0;32512:374;;;;;:::o;46354:146::-;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;46437:1:::1;46426:7;:12;;46418:51;;;::::0;-1:-1:-1;;;46418:51:0;;7443:2:1;46418:51:0::1;::::0;::::1;7425:21:1::0;7482:2;7462:18;;;7455:30;7521:28;7501:18;;;7494:56;7567:18;;46418:51:0::1;7415:176:1::0;46418:51:0::1;46476:8;:18:::0;46354:146::o;34668:239::-;34735:7;34770;;34759;:18;;34751:73;;;;-1:-1:-1;;;34751:73:0;;7798:2:1;34751:73:0;;;7780:21:1;7837:2;7817:18;;;7810:30;7876:34;7856:18;;;7849:62;-1:-1:-1;;;7927:18:1;;;7920:40;7977:19;;34751:73:0;7770:232:1;34751:73:0;34831:19;34853:10;:8;:10::i;:::-;34831:32;-1:-1:-1;34877:24:0;:7;34831:32;34877:11;:24::i;:::-;34870:31;34668:239;-1:-1:-1;;;34668:239:0:o;46506:171::-;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;46591:1:::1;46583:4;:9;;;;:22;;;;;46604:1;46596:4;:9;;;;46583:22;46575:64;;;::::0;-1:-1:-1;;;46575:64:0;;9796:2:1;46575:64:0::1;::::0;::::1;9778:21:1::0;9835:2;9815:18;;;9808:30;9874:31;9854:18;;;9847:59;9923:18;;46575:64:0::1;9768:179:1::0;46575:64:0::1;46646:18;:25:::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;46646:25:0;;::::1;::::0;;;::::1;::::0;;46506:171::o;46683:125::-;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;46766:17:::1;:36:::0;;-1:-1:-1;;;;;;46766:36:0::1;-1:-1:-1::0;;;;;46766:36:0;;;::::1;::::0;;;::::1;::::0;;46683:125::o;32892:254::-;10685:10;32995:4;33065:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;33065:34:0;;;;;;;;;;32995:4;;33011:111;;33049:7;;33065:50;;33104:10;33065:38;:50::i;33835:384::-;10685:10;33883:14;33936:19;;;:11;:19;;;;;;;;33935:20;33919:98;;;;-1:-1:-1;;;33919:98:0;;12908:2:1;33919:98:0;;;12890:21:1;12947:2;12927:18;;;12920:30;12986:34;12966:18;;;12959:62;-1:-1:-1;;;13037:18:1;;;13030:42;13089:19;;33919:98:0;12880:234:1;33919:98:0;34025:15;34054:26;34065:7;34074:5;34054:10;:26::i;:::-;-1:-1:-1;;;;;;;;;34105:15:0;;;;;;:7;:15;;;;;;34024:56;;-1:-1:-1;34105:28:0;;:15;-1:-1:-1;34024:56:0;34105:19;:28::i;:::-;-1:-1:-1;;;;;34087:15:0;;;;;;:7;:15;;;;;:46;34150:7;;:20;;34162:7;34150:11;:20::i;:::-;34140:7;:30;34190:10;;:23;;34205:7;34190:14;:23::i;:::-;34177:10;:36;-1:-1:-1;;;33835:384:0:o;34225:437::-;34331:7;34369;;34358;:18;;34350:62;;;;-1:-1:-1;;;34350:62:0;;10154:2:1;34350:62:0;;;10136:21:1;10193:2;10173:18;;;10166:30;10232:33;10212:18;;;10205:61;10283:18;;34350:62:0;10126:181:1;34350:62:0;34424:17;34419:238;;34453:15;34482:26;34493:7;34502:5;34482:10;:26::i;:::-;-1:-1:-1;34452:56:0;;-1:-1:-1;34517:14:0;;-1:-1:-1;;;;;34517:14:0;34419:238;34557:23;34592:26;34603:7;34612:5;34592:10;:26::i;:::-;-1:-1:-1;34554:64:0;;-1:-1:-1;34627:22:0;;-1:-1:-1;;;;;34627:22:0;39344:144;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;39392:23:::1;39418:24;39436:4;39418:9;:24::i;:::-;39392:50;;39449:33;39466:15;39449:16;:33::i;:::-;12020:1;39344:144::o:0;46208:140::-;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;46288:1:::1;46278:6;:11;;46270:49;;;::::0;-1:-1:-1;;;46270:49:0;;6685:2:1;46270:49:0::1;::::0;::::1;6667:21:1::0;6724:2;6704:18;;;6697:30;6763:27;6743:18;;;6736:55;6808:18;;46270:49:0::1;6657:175:1::0;46270:49:0::1;46326:7;:16:::0;46208:140::o;31796:188::-;-1:-1:-1;;;;;31882:20:0;;31862:7;31882:20;;;:11;:20;;;;;;;;31878:49;;;-1:-1:-1;;;;;;31911:16:0;;;;;:7;:16;;;;;;;31796:188::o;31878:49::-;-1:-1:-1;;;;;31961:16:0;;;;;;:7;:16;;;;;;31941:37;;:19;:37::i;12380:94::-;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;12445:21:::1;12463:1;12445:9;:21::i;:::-;12380:94::o:0;31531:81::-;31570:13;31599:7;31592:14;;;;;:::i;47217:154::-;47278:4;47304:13;-1:-1:-1;;;;;47295:22:0;:5;-1:-1:-1;;;;;47295:22:0;;47291:39;;;-1:-1:-1;47326:4:0;;47217:154;-1:-1:-1;47217:154:0:o;47291:39::-;-1:-1:-1;;;;;;47344:21:0;;;;;:14;:21;;;;;;;;;47217:154::o;33152:332::-;33260:4;33276:184;10685:10;33314:7;33330:123;33379:15;33330:123;;;;;;;;;;;;;;;;;10685:10;33330:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;33330:34:0;;;;;;;;;;;;:38;:123::i;47482:103::-;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;47550:21:0::1;47574:5;47550:21:::0;;;:14:::1;:21;::::0;;;;:29;;-1:-1:-1;;47550:29:0::1;::::0;;47482:103::o;47377:99::-;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;47442:21:0::1;;::::0;;;:14:::1;:21;::::0;;;;:28;;-1:-1:-1;;47442:28:0::1;47466:4;47442:28;::::0;;47377:99::o;31990:175::-;32083:4;32099:42;10685:10;32123:9;32134:6;32099:9;:42::i;33600:142::-;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33698:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;33698:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33600:142::o;47591:257::-;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;47676:10:::1;47671:172;47697:10;:17;47692:2;:22;47671:172;;;47731:28;47762:10;47773:2;47762:14;;;;;;-1:-1:-1::0;;;47762:14:0::1;;;;;;;;;;;;;;;47731:45;;47785:50;47798:10;47810:5;:10;;;47822:5;:12;;;47785;:50::i;:::-;;47671:172;47716:4;;;;;:::i;:::-;;;;47671:172;;;;47591:257:::0;:::o;39644:91::-;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;39708:11:::1;:21:::0;;;::::1;;;;-1:-1:-1::0;;39708:21:0;;::::1;::::0;;;::::1;::::0;;39644:91::o;34913:431::-;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;35007:42:::1;-1:-1:-1::0;;;;;34996:53:0;::::1;;;34980:121;;;::::0;-1:-1:-1;;;34980:121:0;;12505:2:1;34980:121:0::1;::::0;::::1;12487:21:1::0;12544:2;12524:18;;;12517:30;12583:34;12563:18;;;12556:62;-1:-1:-1;;;12634:18:1;;;12627:32;12676:19;;34980:121:0::1;12477:224:1::0;34980:121:0::1;-1:-1:-1::0;;;;;35117:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;35116:21;35108:61;;;::::0;-1:-1:-1;;;35108:61:0;;9019:2:1;35108:61:0::1;::::0;::::1;9001:21:1::0;9058:2;9038:18;;;9031:30;9097:29;9077:18;;;9070:57;9144:18;;35108:61:0::1;8991:177:1::0;35108:61:0::1;-1:-1:-1::0;;;;;35180:16:0;::::1;35199:1;35180:16:::0;;;:7:::1;:16;::::0;;;;;:20;35176:99:::1;;-1:-1:-1::0;;;;;35250:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;35230:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;35211:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;35176:99:::1;-1:-1:-1::0;;;;;35281:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;35281:27:0::1;35304:4;35281:27:::0;;::::1;::::0;;;35315:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;35315:23:0::1;::::0;;::::1;::::0;;34913:431::o;12629:192::-;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12718:22:0;::::1;12710:73;;;::::0;-1:-1:-1;;;12710:73:0;;8209:2:1;12710:73:0::1;::::0;::::1;8191:21:1::0;8248:2;8228:18;;;8221:30;8287:34;8267:18;;;8260:62;-1:-1:-1;;;8338:18:1;;;8331:36;8384:19;;12710:73:0::1;8181:228:1::0;12710:73:0::1;12794:19;12804:8;12794:9;:19::i;39494:144::-:0;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;39571:21:::1;39599:33;39571:21:::0;39599:13:::1;:33::i;35350:410::-:0;11775:7;11802:6;-1:-1:-1;;;;;11802:6:0;10685:10;11949:23;11941:68;;;;-1:-1:-1;;;11941:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35425:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;35417:60;;;::::0;-1:-1:-1;;;35417:60:0;;9019:2:1;35417:60:0::1;::::0;::::1;9001:21:1::0;9058:2;9038:18;;;9031:30;9097:29;9077:18;;;9070:57;9144:18;;35417:60:0::1;8991:177:1::0;35417:60:0::1;35489:9;35484:271;35508:9;:16:::0;35504:20;::::1;35484:271;;;35560:7;-1:-1:-1::0;;;;;35544:23:0::1;:9;35554:1;35544:12;;;;;;-1:-1:-1::0;;;35544:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;35544:12:0::1;:23;35540:208;;;35595:9;35605:16:::0;;:20:::1;::::0;35624:1:::1;::::0;35605:20:::1;:::i;:::-;35595:31;;;;;;-1:-1:-1::0;;;35595:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;35580:9:::1;:12:::0;;-1:-1:-1;;;;;35595:31:0;;::::1;::::0;35590:1;;35580:12;::::1;;;-1:-1:-1::0;;;35580:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;35580:46:0::1;-1:-1:-1::0;;;;;35580:46:0;;::::1;;::::0;;35637:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;35668:11:::1;:20:::0;;;;:28;;-1:-1:-1;;35668:28:0::1;::::0;;35707:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;35707:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;35707:15:0;;;;;-1:-1:-1;;;;;;35707:15:0::1;::::0;;;;;47671:172:::1;47591:257:::0;:::o;35540:208::-:1;35526:3:::0;::::1;::::0;::::1;:::i;:::-;;;;35484:271;;36200:339:::0;-1:-1:-1;;;;;36309:19:0;;36301:68;;;;-1:-1:-1;;;36301:68:0;;12100:2:1;36301:68:0;;;12082:21:1;12139:2;12119:18;;;12112:30;12178:34;12158:18;;;12151:62;-1:-1:-1;;;12229:18:1;;;12222:34;12273:19;;36301:68:0;12072:226:1;36301:68:0;-1:-1:-1;;;;;36384:21:0;;36376:68;;;;-1:-1:-1;;;36376:68:0;;8616:2:1;36376:68:0;;;8598:21:1;8655:2;8635:18;;;8628:30;8694:34;8674:18;;;8667:62;-1:-1:-1;;;8745:18:1;;;8738:32;8787:19;;36376:68:0;8588:224:1;36376:68:0;-1:-1:-1;;;;;36453:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;36501:32;;13265:25:1;;;36501:32:0;;13238:18:1;36501:32:0;;;;;;;36200:339;;;:::o;36545:1933::-;-1:-1:-1;;;;;36658:20:0;;36650:70;;;;-1:-1:-1;;;36650:70:0;;11694:2:1;36650:70:0;;;11676:21:1;11733:2;11713:18;;;11706:30;11772:34;11752:18;;;11745:62;-1:-1:-1;;;11823:18:1;;;11816:35;11868:19;;36650:70:0;11666:227:1;36650:70:0;-1:-1:-1;;;;;36735:23:0;;36727:71;;;;-1:-1:-1;;;36727:71:0;;7039:2:1;36727:71:0;;;7021:21:1;7078:2;7058:18;;;7051:30;7117:34;7097:18;;;7090:62;-1:-1:-1;;;7168:18:1;;;7161:33;7211:19;;36727:71:0;7011:225:1;36727:71:0;36822:1;36813:6;:10;36805:64;;;;-1:-1:-1;;;36805:64:0;;11284:2:1;36805:64:0;;;11266:21:1;11323:2;11303:18;;;11296:30;11362:34;11342:18;;;11335:62;-1:-1:-1;;;11413:18:1;;;11406:39;11462:19;;36805:64:0;11256:231:1;36805:64:0;11775:7;11802:6;-1:-1:-1;;;;;36882:17:0;;;11802:6;;36882:17;;;;:41;;-1:-1:-1;11775:7:0;11802:6;-1:-1:-1;;;;;36903:20:0;;;11802:6;;36903:20;;36882:41;36878:156;;;36960:12;;36950:6;:22;;36932:102;;;;-1:-1:-1;;;36932:102:0;;10514:2:1;36932:102:0;;;10496:21:1;10553:2;10533:18;;;10526:30;10592:34;10572:18;;;10565:62;-1:-1:-1;;;10643:18:1;;;10636:38;10691:19;;36932:102:0;10486:230:1;36932:102:0;37277:28;37308:24;37326:4;37308:9;:24::i;:::-;37277:55;;37369:12;;37345:20;:36;37341:94;;-1:-1:-1;37415:12:0;;37341:94;37501:29;;37550:6;;37470:60;;;;;37550:6;;37549:7;:29;;;;-1:-1:-1;37567:11:0;;;;;;;37549:29;:59;;;;;37589:19;37549:59;:127;;;;;37633:13;-1:-1:-1;;;;;37620:26:0;:9;-1:-1:-1;;;;;37620:26:0;;:55;;;-1:-1:-1;;;;;;37650:25:0;;;;;;:14;:25;;;;;;;;37620:55;37537:436;;;37773:38;37790:20;37773:16;:38::i;:::-;37851:21;37885:22;;37881:85;;37920:36;37934:21;37920:13;:36::i;:::-;37537:436;;38039:12;38122:13;-1:-1:-1;;;;;38112:23:0;:6;-1:-1:-1;;;;;38112:23:0;;:62;;;;38161:13;-1:-1:-1;;;;;38148:26:0;:9;-1:-1:-1;;;;;38148:26:0;;38112:62;:100;;;-1:-1:-1;;;;;;38187:25:0;;;;;;:14;:25;;;;;;;;38112:100;:135;;;-1:-1:-1;;;;;;38225:22:0;;;;;;:14;:22;;;;;;;;38112:135;38111:210;;;;-1:-1:-1;;;;;;38261:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;38291:29:0;;;;;;:18;:29;;;;;;;;38261:59;38259:62;38111:210;38099:261;;;-1:-1:-1;38348:4:0;38099:261;38422:50;38437:6;38445:9;38456:6;38464:7;38422:14;:50::i;:::-;36545:1933;;;;;;:::o;8180:240::-;8300:7;8361:12;8353:6;;;;8345:29;;;;-1:-1:-1;;;8345:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;8396:5:0;;;8180:240::o;45080:154::-;45122:7;45139:15;45156;45175:19;:17;:19::i;:::-;45138:56;;-1:-1:-1;45138:56:0;-1:-1:-1;45208:20:0;45138:56;;45208:11;:20::i;:::-;45201:27;;;;45080:154;:::o;7038:98::-;7096:7;7123:5;7127:1;7123;:5;:::i;5901:98::-;5959:7;5986:5;5990:1;5986;:5;:::i;43408:613::-;43506:7;43522;43538;43554;43570;43586;43612:23;43637:12;43651:13;43668:85;43688:7;43704;;43720:8;;43737:9;43668:11;:85::i;:::-;43611:142;;;;;;43760:19;43782:10;:8;:10::i;:::-;43760:32;;43800:15;43817:23;43842:12;43858:81;43878:7;43894:4;43907:5;43921:11;43858;:81::i;:::-;43799:140;;-1:-1:-1;43799:140:0;-1:-1:-1;43799:140:0;-1:-1:-1;43986:15:0;;-1:-1:-1;44003:4:0;;-1:-1:-1;44009:5:0;;-1:-1:-1;;;;;43408:613:0;;;;;;;;:::o;6282:98::-;6340:7;6367:5;6371:1;6367;:5;:::i;38484:537::-;30522:6;:13;;-1:-1:-1;;30522:13:0;30531:4;30522:13;;;38638:16:::1;::::0;;38652:1:::1;38638:16:::0;;;;;::::1;::::0;;-1:-1:-1;;38638:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;38638:16:0::1;38614:40;;38679:4;38661;38666:1;38661:7;;;;;;-1:-1:-1::0;;;38661:7:0::1;;;;;;;;;;;;;;:23;-1:-1:-1::0;;;;;38661:23:0::1;;;-1:-1:-1::0;;;;;38661:23:0::1;;;::::0;::::1;38701:15;-1:-1:-1::0;;;;;38701:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38691:4;38696:1;38691:7;;;;;;-1:-1:-1::0;;;38691:7:0::1;;;;;;;;;;;;;;:32;-1:-1:-1::0;;;;;38691:32:0::1;;;-1:-1:-1::0;;;;;38691:32:0::1;;;::::0;::::1;38732:62;38749:4;38764:15;38782:11;38732:8;:62::i;:::-;38825:190;::::0;-1:-1:-1;;;38825:190:0;;-1:-1:-1;;;;;38825:15:0::1;:66;::::0;::::1;::::0;:190:::1;::::0;38900:11;;38920:1:::1;::::0;38958:4;;38979::::1;::::0;38993:15:::1;::::0;38825:190:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;30550:6:0;:14;;-1:-1:-1;;30550:14:0;;;-1:-1:-1;;;;38484:537:0:o;12829:173::-;12885:16;12904:6;;-1:-1:-1;;;;;12921:17:0;;;-1:-1:-1;;;;;;12921:17:0;;;;;;12954:40;;12904:6;;;;;;;12954:40;;12885:16;12954:40;12829:173;;:::o;39027:::-;39081:17;;-1:-1:-1;;;;;39081:17:0;39112:13;:6;39123:1;39112:10;:13::i;:::-;39081:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;39138:23:0;;-1:-1:-1;;;;;39138:23:0;;-1:-1:-1;39175:13:0;:6;39186:1;39175:10;:13::i;:::-;39138:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39027:173;:::o;39741:636::-;39875:7;39870:28;;39884:14;:12;:14::i;:::-;-1:-1:-1;;;;;39911:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;39935:22:0;;;;;;:11;:22;;;;;;;;39934:23;39911:46;39907:427;;;39968:48;39990:6;39998:9;40009:6;39968:21;:48::i;:::-;39907:427;;;-1:-1:-1;;;;;40035:19:0;;;;;;:11;:19;;;;;;;;40034:20;:46;;;;-1:-1:-1;;;;;;40058:22:0;;;;;;:11;:22;;;;;;;;40034:46;40030:304;;;40091:46;40111:6;40119:9;40130:6;40091:19;:46::i;40030:304::-;-1:-1:-1;;;;;40155:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;40178:22:0;;;;;;:11;:22;;;;;;;;40155:45;40151:183;;;40211:48;40233:6;40241:9;40252:6;40211:21;:48::i;40151:183::-;40282:44;40300:6;40308:9;40319:6;40282:17;:44::i;:::-;40347:7;40342:29;;40356:15;36015;;36005:7;:25;36048:16;;36037:8;:27;35965:105;45240:521;45334:7;;45366;;45291;;;;;45380:276;45404:9;:16;45400:20;;45380:276;;;45464:7;45440;:21;45448:9;45458:1;45448:12;;;;;;-1:-1:-1;;;45448:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45448:12:0;45440:21;;;;;;;;;;;;;:31;;:66;;;45499:7;45475;:21;45483:9;45493:1;45483:12;;;;;;-1:-1:-1;;;45483:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45483:12:0;45475:21;;;;;;;;;;;;;:31;45440:66;45436:106;;;45525:7;;45534;;45517:25;;;;;;;45240:521;;:::o;45436:106::-;45561:34;45573:7;:21;45581:9;45591:1;45581:12;;;;;;-1:-1:-1;;;45581:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45581:12:0;45573:21;;;;;;;;;;;;;45561:7;;:11;:34::i;:::-;45551:44;;45614:34;45626:7;:21;45634:9;45644:1;45634:12;;;;;;-1:-1:-1;;;45634:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45634:12:0;45626:21;;;;;;;;;;;;;45614:7;;:11;:34::i;:::-;45604:44;-1:-1:-1;45422:3:0;;;;:::i;:::-;;;;45380:276;;;-1:-1:-1;45688:7:0;;45676;;:20;;:11;:20::i;:::-;45666:7;:30;45662:61;;;45706:7;;45715;;45698:25;;;;;;45240:521;;:::o;45662:61::-;45738:7;;45747;;-1:-1:-1;45240:521:0;-1:-1:-1;45240:521:0:o;44027:583::-;44184:7;44200;44216;44241:16;44260:9;:51;;44305:6;44260:51;;;44283:18;;44272:30;;:6;;44283:18;;;;;44272:10;:30::i;:::-;44241:70;;44318:17;44338:9;:53;;44384:7;44338:53;;;44362:18;;44350:31;;:7;;44362:18;;;;;44350:11;:31::i;:::-;44318:73;-1:-1:-1;44400:12:0;44415:30;44441:3;44415:21;:7;44427:8;44415:11;:21::i;:::-;:25;;:30::i;:::-;44400:45;-1:-1:-1;44452:13:0;44468:31;44495:3;44468:22;:7;44480:9;44468:11;:22::i;:31::-;44452:47;-1:-1:-1;44506:23:0;44532:28;44452:47;44532:17;:7;44544:4;44532:11;:17::i;:::-;:21;;:28::i;:::-;44506:54;44592:4;;-1:-1:-1;44598:5:0;;-1:-1:-1;44027:583:0;;-1:-1:-1;;;;;;;;44027:583:0:o;44616:458::-;44774:7;;;;44849:24;:7;44861:11;44849;:24::i;:::-;44831:42;-1:-1:-1;44880:12:0;44895:21;:4;44904:11;44895:8;:21::i;:::-;44880:36;-1:-1:-1;44923:13:0;44939:22;:5;44949:11;44939:9;:22::i;:::-;44923:38;-1:-1:-1;44968:23:0;44994:28;44923:38;44994:17;:7;45006:4;44994:11;:17::i;:28::-;45037:7;;;;-1:-1:-1;45063:4:0;;-1:-1:-1;44616:458:0;;-1:-1:-1;;;;;;;44616:458:0:o;35766:193::-;35809:7;;:12;:29;;;;-1:-1:-1;35825:8:0;;:13;35809:29;35805:42;;;35766:193::o;35805:42::-;35873:7;;;35855:15;:25;35906:8;;;35887:16;:27;-1:-1:-1;35923:11:0;;;;35941:12;35766:193::o;41570:610::-;41697:15;41721:23;41753:12;41774:23;41806:12;41827:13;41850:42;41861:7;41870:21;41881:9;41870:10;:21::i;:::-;41850:10;:42::i;:::-;-1:-1:-1;;;;;41917:15:0;;;;;;:7;:15;;;;;;41688:204;;-1:-1:-1;41688:204:0;;-1:-1:-1;41688:204:0;;-1:-1:-1;41688:204:0;-1:-1:-1;41688:204:0;-1:-1:-1;41688:204:0;-1:-1:-1;41917:28:0;;41937:7;41917:19;:28::i;:::-;-1:-1:-1;;;;;41899:15:0;;;;;;:7;:15;;;;;;;;:46;;;;41970:7;:15;;;;:28;;41990:7;41970:19;:28::i;:::-;-1:-1:-1;;;;;41952:15:0;;;;;;;:7;:15;;;;;;:46;;;;42026:18;;;;;;;:39;;42049:15;42026:22;:39::i;:::-;-1:-1:-1;;;;;42005:18:0;;;;;;:7;:18;;;;;:60;42072:16;42082:5;42072:9;:16::i;:::-;42095:23;42107:4;42113;42095:11;:23::i;:::-;42147:9;-1:-1:-1;;;;;42130:44:0;42139:6;-1:-1:-1;;;;;42130:44:0;;42158:15;42130:44;;;;13265:25:1;;13253:2;13238:18;;13220:76;42130:44:0;;;;;;;;41570:610;;;;;;;;;:::o;40942:622::-;41067:15;41091:23;41123:12;41144:23;41176:12;41197:13;41220:42;41231:7;41240:21;41251:9;41240:10;:21::i;41220:42::-;-1:-1:-1;;;;;41287:15:0;;;;;;:7;:15;;;;;;41058:204;;-1:-1:-1;41058:204:0;;-1:-1:-1;41058:204:0;;-1:-1:-1;41058:204:0;-1:-1:-1;41058:204:0;-1:-1:-1;41058:204:0;-1:-1:-1;41287:28:0;;41058:204;41287:19;:28::i;:::-;-1:-1:-1;;;;;41269:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;41343:18;;;;;:7;:18;;;;;:39;;41366:15;41343:22;:39::i;:::-;-1:-1:-1;;;;;41322:18:0;;;;;;:7;:18;;;;;;;;:60;;;;41410:7;:18;;;;:39;;41433:15;41410:22;:39::i;42186:677::-;42313:15;42337:23;42369:12;42390:23;42422:12;42443:13;42466:42;42477:7;42486:21;42497:9;42486:10;:21::i;42466:42::-;-1:-1:-1;;;;;42533:15:0;;;;;;:7;:15;;;;;;42304:204;;-1:-1:-1;42304:204:0;;-1:-1:-1;42304:204:0;;-1:-1:-1;42304:204:0;-1:-1:-1;42304:204:0;-1:-1:-1;42304:204:0;-1:-1:-1;42533:28:0;;42553:7;42533:19;:28::i;:::-;-1:-1:-1;;;;;42515:15:0;;;;;;:7;:15;;;;;;;;:46;;;;42586:7;:15;;;;:28;;42606:7;42586:19;:28::i;40383:553::-;40506:15;40530:23;40562:12;40583:23;40615:12;40636:13;40659:42;40670:7;40679:21;40690:9;40679:10;:21::i;40659:42::-;-1:-1:-1;;;;;40726:15:0;;;;;;:7;:15;;;;;;40497:204;;-1:-1:-1;40497:204:0;;-1:-1:-1;40497:204:0;;-1:-1:-1;40497:204:0;-1:-1:-1;40497:204:0;-1:-1:-1;40497:204:0;-1:-1:-1;40726:28:0;;40497:204;40726:19;:28::i;6639:98::-;6697:7;6724:5;6728:1;6724;:5;:::i;45949:142::-;46010:4;46043:13;-1:-1:-1;;;;;46030:26:0;:9;-1:-1:-1;;;;;46030:26:0;;:55;;;-1:-1:-1;;;;;;;46060:25:0;;;;;:14;:25;;;;;;;;;45949:142::o;42869:301::-;42918:19;42940:10;:8;:10::i;:::-;42918:32;-1:-1:-1;42957:13:0;42973:22;:5;42918:32;42973:9;:22::i;:::-;43043:4;43027:22;;;;:7;:22;;;;;;42957:38;;-1:-1:-1;43027:33:0;;42957:38;43027:26;:33::i;:::-;43018:4;43002:22;;;;:7;:22;;;;;;;;:58;;;;43071:11;:26;;;;;;43067:97;;;43147:4;43131:22;;;;:7;:22;;;;;;:33;;43158:5;43131:26;:33::i;:::-;43122:4;43106:22;;;;:7;:22;;;;;:58;43067:97;42869:301;;;:::o;43176:137::-;43250:7;;:17;;43262:4;43250:11;:17::i;:::-;43240:7;:27;43287:10;;:20;;43302:4;43287:14;:20::i;:::-;43274:10;:33;-1:-1:-1;;43176:137:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;977:398::-;1045:6;1053;1106:2;1094:9;1085:7;1081:23;1077:32;1074:2;;;1127:6;1119;1112:22;1074:2;1171:9;1158:23;1190:31;1215:5;1190:31;:::i;:::-;1240:5;-1:-1:-1;1297:2:1;1282:18;;1269:32;1310:33;1269:32;1310:33;:::i;:::-;1362:7;1352:17;;;1064:311;;;;;:::o;1380:466::-;1457:6;1465;1473;1526:2;1514:9;1505:7;1501:23;1497:32;1494:2;;;1547:6;1539;1532:22;1494:2;1591:9;1578:23;1610:31;1635:5;1610:31;:::i;:::-;1660:5;-1:-1:-1;1717:2:1;1702:18;;1689:32;1730:33;1689:32;1730:33;:::i;:::-;1484:362;;1782:7;;-1:-1:-1;;;1836:2:1;1821:18;;;;1808:32;;1484:362::o;1851:325::-;1916:6;1924;1977:2;1965:9;1956:7;1952:23;1948:32;1945:2;;;1998:6;1990;1983:22;1945:2;2042:9;2029:23;2061:31;2086:5;2061:31;:::i;:::-;2111:5;-1:-1:-1;2135:35:1;2166:2;2151:18;;2135:35;:::i;:::-;2125:45;;1935:241;;;;;:::o;2181:325::-;2249:6;2257;2310:2;2298:9;2289:7;2285:23;2281:32;2278:2;;;2331:6;2323;2316:22;2278:2;2375:9;2362:23;2394:31;2419:5;2394:31;:::i;:::-;2444:5;2496:2;2481:18;;;;2468:32;;-1:-1:-1;;;2268:238:1:o;2511:1343::-;2628:6;2659:2;2702;2690:9;2681:7;2677:23;2673:32;2670:2;;;2723:6;2715;2708:22;2670:2;2768:9;2755:23;2797:18;2838:2;2830:6;2827:14;2824:2;;;2859:6;2851;2844:22;2824:2;2902:6;2891:9;2887:22;2877:32;;2947:7;2940:4;2936:2;2932:13;2928:27;2918:2;;2974:6;2966;2959:22;2918:2;3015;3002:16;3037:2;3033;3030:10;3027:2;;;3043:18;;:::i;:::-;3083:36;3115:2;3110;3107:1;3103:10;3099:19;3083:36;:::i;:::-;3153:15;;;3184:12;;;;-1:-1:-1;3216:11:1;;;3258:1;3254:10;;;3246:19;;3242:28;;3239:41;-1:-1:-1;3236:2:1;;;3298:6;3290;3283:22;3236:2;3325:6;3316:15;;3340:484;3354:2;3351:1;3348:9;3340:484;;;3409:4;3452:2;3446:3;3437:7;3433:17;3429:26;3426:2;;;3473:6;3465;3458:22;3426:2;3508:22;;:::i;:::-;3571:3;3558:17;3588:33;3613:7;3588:33;:::i;:::-;3634:22;;3705:12;;;3692:26;3676:14;;;3669:50;3732:18;;3372:1;3365:9;;;;;3770:12;;;;3802;3340:484;;;-1:-1:-1;3843:5:1;2639:1215;-1:-1:-1;;;;;;;2639:1215:1:o;3859:190::-;3915:6;3968:2;3956:9;3947:7;3943:23;3939:32;3936:2;;;3989:6;3981;3974:22;3936:2;4017:26;4033:9;4017:26;:::i;4054:190::-;4113:6;4166:2;4154:9;4145:7;4141:23;4137:32;4134:2;;;4187:6;4179;4172:22;4134:2;-1:-1:-1;4215:23:1;;4124:120;-1:-1:-1;4124:120:1:o;4249:258::-;4314:6;4322;4375:2;4363:9;4354:7;4350:23;4346:32;4343:2;;;4396:6;4388;4381:22;4343:2;4437:9;4424:23;4414:33;;4466:35;4497:2;4486:9;4482:18;4466:35;:::i;4512:289::-;4569:6;4622:2;4610:9;4601:7;4597:23;4593:32;4590:2;;;4643:6;4635;4628:22;4590:2;4687:9;4674:23;4737:4;4730:5;4726:16;4719:5;4716:27;4706:2;;4762:6;4754;4747:22;5875:603;5987:4;6016:2;6045;6034:9;6027:21;6077:6;6071:13;6120:6;6115:2;6104:9;6100:18;6093:34;6145:4;6158:140;6172:6;6169:1;6166:13;6158:140;;;6267:14;;;6263:23;;6257:30;6233:17;;;6252:2;6229:26;6222:66;6187:10;;6158:140;;;6316:6;6313:1;6310:13;6307:2;;;6386:4;6381:2;6372:6;6361:9;6357:22;6353:31;6346:45;6307:2;-1:-1:-1;6462:2:1;6441:15;-1:-1:-1;;6437:29:1;6422:45;;;;6469:2;6418:54;;5996:482;-1:-1:-1;;;5996:482:1:o;10721:356::-;10923:2;10905:21;;;10942:18;;;10935:30;11001:34;10996:2;10981:18;;10974:62;11068:2;11053:18;;10895:182::o;13301:983::-;13563:4;13611:3;13600:9;13596:19;13642:6;13631:9;13624:25;13668:2;13706:6;13701:2;13690:9;13686:18;13679:34;13749:3;13744:2;13733:9;13729:18;13722:31;13773:6;13808;13802:13;13839:6;13831;13824:22;13877:3;13866:9;13862:19;13855:26;;13916:2;13908:6;13904:15;13890:29;;13937:4;13950:195;13964:6;13961:1;13958:13;13950:195;;;14029:13;;-1:-1:-1;;;;;14025:39:1;14013:52;;14120:15;;;;14085:12;;;;14061:1;13979:9;13950:195;;;-1:-1:-1;;;;;;;14201:32:1;;;;14196:2;14181:18;;14174:60;-1:-1:-1;;;14265:3:1;14250:19;14243:35;14162:3;13572:712;-1:-1:-1;;;13572:712:1:o;14478:257::-;14550:4;14544:11;;;14582:17;;14629:18;14614:34;;14650:22;;;14611:62;14608:2;;;14676:18;;:::i;:::-;14712:4;14705:24;14524:211;:::o;14740:275::-;14811:2;14805:9;14876:2;14857:13;;-1:-1:-1;;14853:27:1;14841:40;;14911:18;14896:34;;14932:22;;;14893:62;14890:2;;;14958:18;;:::i;:::-;14994:2;14987:22;14785:230;;-1:-1:-1;14785:230:1:o;15020:128::-;15060:3;15091:1;15087:6;15084:1;15081:13;15078:2;;;15097:18;;:::i;:::-;-1:-1:-1;15133:9:1;;15068:80::o;15153:217::-;15193:1;15219;15209:2;;-1:-1:-1;;;15244:31:1;;15298:4;15295:1;15288:15;15326:4;15251:1;15316:15;15209:2;-1:-1:-1;15355:9:1;;15199:171::o;15375:168::-;15415:7;15481:1;15477;15473:6;15469:14;15466:1;15463:21;15458:1;15451:9;15444:17;15440:45;15437:2;;;15488:18;;:::i;:::-;-1:-1:-1;15528:9:1;;15427:116::o;15548:125::-;15588:4;15616:1;15613;15610:8;15607:2;;;15621:18;;:::i;:::-;-1:-1:-1;15658:9:1;;15597:76::o;15678:380::-;15757:1;15753:12;;;;15800;;;15821:2;;15875:4;15867:6;15863:17;15853:27;;15821:2;15928;15920:6;15917:14;15897:18;15894:38;15891:2;;;15974:10;15969:3;15965:20;15962:1;15955:31;16009:4;16006:1;15999:15;16037:4;16034:1;16027:15;15891:2;;15733:325;;;:::o;16063:135::-;16102:3;-1:-1:-1;;16123:17:1;;16120:2;;;16143:18;;:::i;:::-;-1:-1:-1;16190:1:1;16179:13;;16110:88::o;16203:127::-;16264:10;16259:3;16255:20;16252:1;16245:31;16295:4;16292:1;16285:15;16319:4;16316:1;16309:15;16335:127;16396:10;16391:3;16387:20;16384:1;16377:31;16427:4;16424:1;16417:15;16451:4;16448:1;16441:15;16467:131;-1:-1:-1;;;;;16542:31:1;;16532:42;;16522:2;;16588:1;16585;16578:12
Swarm Source
ipfs://7ddc236d00abedcdc7f8696e6ac3462fbc7264e37019a3defd31e5d299e740d5
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.