ETH Price: $2,614.03 (-1.79%)

Contract

0x2e42a86459C0ab5A94F1a759f4F689a4e6559529
 
Transaction Hash
Method
Block
From
To
Approve208195922024-09-24 9:35:116 days ago1727170511IN
0x2e42a864...4e6559529
0 ETH0.0013397128.93935873
Approve207590182024-09-15 22:30:2314 days ago1726439423IN
0x2e42a864...4e6559529
0 ETH0.000101512.19273618
Approve206265332024-08-28 10:37:2333 days ago1724841443IN
0x2e42a864...4e6559529
0 ETH0.000109352.35008696
Approve206052002024-08-25 11:06:4736 days ago1724584007IN
0x2e42a864...4e6559529
0 ETH0.000034090.73272671
Approve204885232024-08-09 4:02:2352 days ago1723176143IN
0x2e42a864...4e6559529
0 ETH0.000102352.19958068
Approve204500302024-08-03 19:13:1158 days ago1722712391IN
0x2e42a864...4e6559529
0 ETH0.00014583.1545467
Approve203590582024-07-22 2:21:5970 days ago1721614919IN
0x2e42a864...4e6559529
0 ETH0.000144453.10824365
Approve203245662024-07-17 6:50:3575 days ago1721199035IN
0x2e42a864...4e6559529
0 ETH0.0004643210.03783062
Approve202498222024-07-06 20:21:3586 days ago1720297295IN
0x2e42a864...4e6559529
0 ETH0.000084761.83385335
Approve202264722024-07-03 14:06:5989 days ago1720015619IN
0x2e42a864...4e6559529
0 ETH0.0009326220.06776277
Approve201747212024-06-26 8:39:1196 days ago1719391151IN
0x2e42a864...4e6559529
0 ETH0.000153513.29892026
Approve201107992024-06-17 10:06:11105 days ago1718618771IN
0x2e42a864...4e6559529
0 ETH0.000306636.63388939
Approve201055942024-06-16 16:37:23106 days ago1718555843IN
0x2e42a864...4e6559529
0 ETH0.000203844.3862085
Approve200228532024-06-05 3:11:23117 days ago1717557083IN
0x2e42a864...4e6559529
0 ETH0.000459889.89559
Approve199167372024-05-21 7:16:59132 days ago1716275819IN
0x2e42a864...4e6559529
0 ETH0.0009114819.6891444
Transfer199107912024-05-20 11:18:47133 days ago1716203927IN
0x2e42a864...4e6559529
0 ETH0.000340047.28653314
Approve198960082024-05-18 9:42:35135 days ago1716025355IN
0x2e42a864...4e6559529
0 ETH0.000165073.56761638
Approve198198092024-05-07 17:54:35146 days ago1715104475IN
0x2e42a864...4e6559529
0 ETH0.000154836.38495649
Approve198195822024-05-07 17:08:59146 days ago1715101739IN
0x2e42a864...4e6559529
0 ETH0.000417919.04139994
Transfer197444042024-04-27 4:50:59156 days ago1714193459IN
0x2e42a864...4e6559529
0 ETH0.000255945.48031905
Approve196486162024-04-13 19:05:11170 days ago1713035111IN
0x2e42a864...4e6559529
0 ETH0.0005345822.09950421
Approve196242812024-04-10 9:16:59173 days ago1712740619IN
0x2e42a864...4e6559529
0 ETH0.0006390613.7509378
Approve196238942024-04-10 7:58:59173 days ago1712735939IN
0x2e42a864...4e6559529
0 ETH0.0007010115.08401689
Approve195093842024-03-25 5:19:35189 days ago1711343975IN
0x2e42a864...4e6559529
0 ETH0.0008066217.45119344
Approve193613852024-03-04 11:05:35210 days ago1709550335IN
0x2e42a864...4e6559529
0 ETH0.0030140764.85500168
View all transactions

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
177605142023-07-24 4:14:35434 days ago1690172075
0x2e42a864...4e6559529
 Contract Creation0 ETH
177605142023-07-24 4:14:35434 days ago1690172075  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GAPE

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-24
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

// SUPER GAPE COIN ($GAPE)
// https://supergapecoin.com/

interface Callable {
	function tokenCallback(address _from, uint256 _tokens, bytes calldata _data) external returns (bool);
}

interface Router {
	function factory() external view returns (address);
	function positionManager() external view returns (address);
	function WETH9() external view returns (address);
}

interface Factory {
	function createPool(address _tokenA, address _tokenB, uint24 _fee) external returns (address);
}

interface Pool {
	function initialize(uint160 _sqrtPriceX96) external;
}

interface PositionManager {
	struct MintParams {
		address token0;
		address token1;
		uint24 fee;
		int24 tickLower;
		int24 tickUpper;
		uint256 amount0Desired;
		uint256 amount1Desired;
		uint256 amount0Min;
		uint256 amount1Min;
		address recipient;
		uint256 deadline;
	}
	struct CollectParams {
		uint256 tokenId;
		address recipient;
		uint128 amount0Max;
		uint128 amount1Max;
	}
	function mint(MintParams calldata) external payable returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);
	function collect(CollectParams calldata) external payable returns (uint256 amount0, uint256 amount1);
}

interface ERC20 {
	function balanceOf(address) external view returns (uint256);
	function transfer(address, uint256) external returns (bool);
}

interface WETH is ERC20 {
	function withdraw(uint256) external;
}


contract Team {

	Router constant private ROUTER = Router(0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45);

	struct Share {
		address payable user;
		uint256 shares;
	}
	Share[] public shares;
	uint256 public totalShares;
	ERC20 public token;


	constructor() {
		token = ERC20(msg.sender);
		_addShare(0xda5dcA304139DFC92dD5491E82f84c5Df023677b, 2);
		_addShare(0x3CB30579e7C4A943509Dba604141c12A4609960A, 1);
		_addShare(0x63F52299d9B808eb2DE6115535E42Ef155dB1dfD, 1);
	}

	receive() external payable {}

	function withdrawETH() public {
		uint256 _balance = address(this).balance;
		if (_balance > 0) {
			for (uint256 i = 0; i < shares.length; i++) {
				Share memory _share = shares[i];
				!_share.user.send(_balance * _share.shares / totalShares);
			}
		}
	}

	function withdrawToken(ERC20 _token) public {
		uint256 _balance = _token.balanceOf(address(this));
		if (_balance > 0) {
			for (uint256 i = 0; i < shares.length; i++) {
				Share memory _share = shares[i];
				_token.transfer(_share.user, _balance * _share.shares / totalShares);
			}
		}
	}

	function withdrawFees() external {
		WETH _weth = WETH(ROUTER.WETH9());
		_weth.withdraw(_weth.balanceOf(address(this)));
		withdrawETH();
		withdrawToken(token);
	}


	function _addShare(address _user, uint256 _shares) internal {
		shares.push(Share(payable(_user), _shares));
		totalShares += _shares;
	}
}


contract GAPE {

	uint256 constant private FLOAT_SCALAR = 2**64;
	uint256 constant private UINT_MAX = type(uint256).max;
	uint128 constant private UINT128_MAX = type(uint128).max;
	uint256 constant private INITIAL_SUPPLY = 69_696_969_696e18;
	Router constant private ROUTER = Router(0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45);
	uint256 constant private INITIAL_ETH_MC = 100 ether; // 100 ETH initial market cap price
	uint256 constant private CONCENTRATED_PERCENT = 20; // 20% of tokens will be sold at the min price (20 ETH)
	uint256 constant private UPPER_ETH_MC = 1e6 ether; // 1,000,000 ETH max market cap price

	int24 constant private MIN_TICK = -887272;
	int24 constant private MAX_TICK = -MIN_TICK;
	uint160 constant private MIN_SQRT_RATIO = 4295128739;
	uint160 constant private MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;

	string constant public name = "SUPER GAPE COIN";
	string constant public symbol = "GAPE";
	uint8 constant public decimals = 18;

	struct User {
		uint256 balance;
		mapping(address => uint256) allowance;
	}

	struct Info {
		Team team;
		address pool;
		uint256 totalSupply;
		mapping(address => User) users;
		uint256 lowerPositionId;
		uint256 upperPositionId;
	}
	Info private info;


	event Transfer(address indexed from, address indexed to, uint256 tokens);
	event Approval(address indexed owner, address indexed spender, uint256 tokens);


	constructor() {
		info.team = new Team();
		address _this = address(this);
		address _weth = ROUTER.WETH9();
		(uint160 _initialSqrtPrice, ) = _getPriceAndTickFromValues(_weth < _this, INITIAL_SUPPLY, INITIAL_ETH_MC);
		info.pool = Factory(ROUTER.factory()).createPool(_this, _weth, 10000);
		Pool(pool()).initialize(_initialSqrtPrice);
	}
	
	function initialize() external {
		require(totalSupply() == 0);
		address _this = address(this);
		address _weth = ROUTER.WETH9();
		bool _weth0 = _weth < _this;
		PositionManager _pm = PositionManager(ROUTER.positionManager());
		info.totalSupply = INITIAL_SUPPLY;
		info.users[_this].balance = INITIAL_SUPPLY;
		emit Transfer(address(0x0), _this, INITIAL_SUPPLY);
		_approve(_this, address(_pm), INITIAL_SUPPLY);
		( , int24 _minTick) = _getPriceAndTickFromValues(_weth0, INITIAL_SUPPLY, INITIAL_ETH_MC);
		( , int24 _maxTick) = _getPriceAndTickFromValues(_weth0, INITIAL_SUPPLY, UPPER_ETH_MC);
		uint256 _concentratedTokens = CONCENTRATED_PERCENT * INITIAL_SUPPLY / 100;
		(info.lowerPositionId, , , ) = _pm.mint(PositionManager.MintParams({
			token0: _weth0 ? _weth : _this,
			token1: !_weth0 ? _weth : _this,
			fee: 10000,
			tickLower: _weth0 ? _minTick - 200 : _minTick,
			tickUpper: !_weth0 ? _minTick + 200 : _minTick,
			amount0Desired: _weth0 ? 0 : _concentratedTokens,
			amount1Desired: !_weth0 ? 0 : _concentratedTokens,
			amount0Min: 0,
			amount1Min: 0,
			recipient: _this,
			deadline: block.timestamp
		}));
		(info.upperPositionId, , , ) = _pm.mint(PositionManager.MintParams({
			token0: _weth0 ? _weth : _this,
			token1: !_weth0 ? _weth : _this,
			fee: 10000,
			tickLower: _weth0 ? _maxTick : _minTick + 200,
			tickUpper: !_weth0 ? _maxTick : _minTick - 200,
			amount0Desired: _weth0 ? 0 : INITIAL_SUPPLY - _concentratedTokens,
			amount1Desired: !_weth0 ? 0 : INITIAL_SUPPLY - _concentratedTokens,
			amount0Min: 0,
			amount1Min: 0,
			recipient: _this,
			deadline: block.timestamp
		}));
	}

	function collectTradingFees() external {
		PositionManager _pm = PositionManager(ROUTER.positionManager());
		_pm.collect(PositionManager.CollectParams({
			tokenId: info.lowerPositionId,
			recipient: address(info.team),
			amount0Max: UINT128_MAX,
			amount1Max: UINT128_MAX
		}));
		_pm.collect(PositionManager.CollectParams({
			tokenId: info.upperPositionId,
			recipient: address(info.team),
			amount0Max: UINT128_MAX,
			amount1Max: UINT128_MAX
		}));
		info.team.withdrawFees();
	}

	function transfer(address _to, uint256 _tokens) external returns (bool) {
		return _transfer(msg.sender, _to, _tokens);
	}

	function approve(address _spender, uint256 _tokens) external returns (bool) {
		return _approve(msg.sender, _spender, _tokens);
	}

	function transferFrom(address _from, address _to, uint256 _tokens) external returns (bool) {
		uint256 _allowance = allowance(_from, msg.sender);
		require(_allowance >= _tokens);
		if (_allowance != UINT_MAX) {
			info.users[_from].allowance[msg.sender] -= _tokens;
		}
		return _transfer(_from, _to, _tokens);
	}

	function transferAndCall(address _to, uint256 _tokens, bytes calldata _data) external returns (bool) {
		_transfer(msg.sender, _to, _tokens);
		uint32 _size;
		assembly {
			_size := extcodesize(_to)
		}
		if (_size > 0) {
			require(Callable(_to).tokenCallback(msg.sender, _tokens, _data));
		}
		return true;
	}
	

	function pool() public view returns (address) {
		return info.pool;
	}

	function totalSupply() public view returns (uint256) {
		return info.totalSupply;
	}

	function balanceOf(address _user) public view returns (uint256) {
		return info.users[_user].balance;
	}

	function allowance(address _user, address _spender) public view returns (uint256) {
		return info.users[_user].allowance[_spender];
	}

	function positions() external view returns (uint256 lower, uint256 upper) {
		return (info.lowerPositionId, info.upperPositionId);
	}


	function _approve(address _owner, address _spender, uint256 _tokens) internal returns (bool) {
		info.users[_owner].allowance[_spender] = _tokens;
		emit Approval(_owner, _spender, _tokens);
		return true;
	}
	
	function _transfer(address _from, address _to, uint256 _tokens) internal returns (bool) {
		unchecked {
			require(balanceOf(_from) >= _tokens);
			info.users[_from].balance -= _tokens;
			info.users[_to].balance += _tokens;
			emit Transfer(_from, _to, _tokens);
			return true;
		}
	}


	function _getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {
		unchecked {
			uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));
			require(absTick <= uint256(int256(MAX_TICK)), 'T');

			uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;
			if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;
			if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;
			if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;
			if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;
			if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;
			if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;
			if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;
			if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;
			if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;
			if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;
			if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;
			if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;
			if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;
			if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;
			if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;
			if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;
			if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;
			if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;
			if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;

			if (tick > 0) ratio = type(uint256).max / ratio;

			sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));
		}
	}

	function _getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {
		unchecked {
			require(sqrtPriceX96 >= MIN_SQRT_RATIO && sqrtPriceX96 < MAX_SQRT_RATIO, 'R');
			uint256 ratio = uint256(sqrtPriceX96) << 32;

			uint256 r = ratio;
			uint256 msb = 0;

			assembly {
				let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(5, gt(r, 0xFFFFFFFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(4, gt(r, 0xFFFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(3, gt(r, 0xFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(2, gt(r, 0xF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(1, gt(r, 0x3))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := gt(r, 0x1)
				msb := or(msb, f)
			}

			if (msb >= 128) r = ratio >> (msb - 127);
			else r = ratio << (127 - msb);

			int256 log_2 = (int256(msb) - 128) << 64;

			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(63, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(62, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(61, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(60, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(59, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(58, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(57, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(56, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(55, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(54, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(53, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(52, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(51, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(50, f))
			}

			int256 log_sqrt10001 = log_2 * 255738958999603826347141;

			int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);
			int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);

			tick = tickLow == tickHi ? tickLow : _getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;
		}
	}

	function _sqrt(uint256 _n) internal pure returns (uint256 result) {
		unchecked {
			uint256 _tmp = (_n + 1) / 2;
			result = _n;
			while (_tmp < result) {
				result = _tmp;
				_tmp = (_n / _tmp + _tmp) / 2;
			}
		}
	}

	function _getPriceAndTickFromValues(bool _weth0, uint256 _tokens, uint256 _weth) internal pure returns (uint160 price, int24 tick) {
		uint160 _tmpPrice = uint160(_sqrt(2**192 / (!_weth0 ? _tokens : _weth) * (_weth0 ? _tokens : _weth)));
		tick = _getTickAtSqrtRatio(_tmpPrice);
		tick = tick - (tick % 200);
		price = _getSqrtRatioAtTick(tick);
	}
}


contract Deploy {
	GAPE immutable public gape;
	constructor() {
		gape = new GAPE();
		gape.initialize();
	}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Approval","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":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_user","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":"_tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collectTradingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"positions","outputs":[{"internalType":"uint256","name":"lower","type":"uint256"},{"internalType":"uint256","name":"upper","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

608060405234801562000010575f80fd5b506040516200001f90620009ba565b604051809103905ff08015801562000039573d5f803e3d5ffd5b505f80546001600160a01b0319166001600160a01b0392909216919091178155604080516312a9293f60e21b815290513092917368b3465833fb72a70ecdf485e0e4c7bd8665fc4591634aa4a4fc916004808201926020929091908290030181865afa158015620000ac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000d29190620009c8565b90505f620001056001600160a01b03808516908416106be133fb6a00c330df0380000068056bc75e2d631000006200027f565b5090507368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000159573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200017f9190620009c8565b60405163a167129560e01b81526001600160a01b03858116600483015284811660248301526127106044830152919091169063a1671295906064016020604051808303815f875af1158015620001d7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001fd9190620009c8565b600180546001600160a01b0319166001600160a01b0392909216918217905560405163f637731d60e01b81526001600160a01b038381166004830152919091169063f637731d906024015f604051808303815f87803b1580156200025f575f80fd5b505af115801562000272573d5f803e3d5ffd5b5050505050505062000aa1565b5f805f620002c78662000293578462000295565b855b8715620002a35785620002a5565b865b620002b590600160c01b62000a1f565b620002c1919062000a35565b62000307565b9050620002d48162000352565b9150620002e360c88362000a55565b620002ef908362000a79565b9150620002fc8262000677565b925050935093915050565b80600260018201045b818110156200034c57809150600281828581620003315762000331620009f7565b040181620003435762000343620009f7565b04905062000310565b50919050565b5f6401000276a36001600160a01b038316108015906200038e575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b620003c45760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b600160201b600160c01b03602083901b166001600160801b03811160071b81811c6001600160401b03811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106200045857607f810383901c915062000462565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1462000668576001600160a01b0389166200064a8262000677565b6001600160a01b031611156200066157816200066a565b806200066a565b815b9998505050505050505050565b5f805f8360020b126200068e578260020b62000695565b8260020b5f035b9050620d89e8811115620006d05760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401620003bb565b5f816001165f03620006e757600160801b620006f9565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b03169050600282161562000724576ffff97272373d413259a46990580e213a0260801c5b600482161562000744576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161562000764576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161562000784576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615620007a4576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615620007c4576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615620007e4576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161562000805576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161562000826576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161562000847576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161562000868576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161562000889576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615620008aa576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615620008cb576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615620008ec576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156200090e576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156200092f576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156200094f576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156200096d576b048a170391f7dc42444e8fa20260801c5b5f8460020b13156200099057805f19816200098c576200098c620009f7565b0490505b640100000000810615620009a6576001620009a8565b5f5b60ff16602082901c0192505050919050565b61079380620021c483390190565b5f60208284031215620009d9575f80fd5b81516001600160a01b0381168114620009f0575f80fd5b9392505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8262000a305762000a30620009f7565b500490565b808202811582820484141762000a4f5762000a4f62000a0b565b92915050565b5f8260020b8062000a6a5762000a6a620009f7565b808360020b0791505092915050565b600282810b9082900b03627fffff198112627fffff8213171562000a4f5762000a4f62000a0b565b6117158062000aaf5f395ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806353f8b3031161008857806395d89b411161006357806395d89b41146101f7578063a9059cbb1461021a578063ba5b79821461022d578063dd62ed3e14610248575f80fd5b806353f8b303146101bd57806370a08231146101c75780638129fc1c146101ef575f80fd5b806318160ddd116100c357806318160ddd1461016b57806323b872dd1461017d578063313ce567146101905780634000aea0146101aa575f80fd5b806306fdde03146100e9578063095ea7b31461012d57806316f0115b14610150575b5f80fd5b6101176040518060400160405280600f81526020016e29aaa822a91023a0a8229021a7a4a760891b81525081565b604051610124919061127a565b60405180910390f35b61014061013b3660046112dc565b610284565b6040519015158152602001610124565b6001546040516001600160a01b039091168152602001610124565b6002545b604051908152602001610124565b61014061018b366004611306565b610299565b610198601281565b60405160ff9091168152602001610124565b6101406101b8366004611344565b610322565b6101c56103c3565b005b61016f6101d53660046113c6565b6001600160a01b03165f9081526003602052604090205490565b6101c56105c1565b610117604051806040016040528060048152602001634741504560e01b81525081565b6101406102283660046112dc565b610a7a565b60045460055460408051928352602083019190915201610124565b61016f6102563660046113e8565b6001600160a01b039182165f9081526003602090815260408083209390941682526001909201909152205490565b5f610290338484610a86565b90505b92915050565b6001600160a01b0383165f908152600360209081526040808320338452600101909152812054828110156102cb575f80fd5b5f19811461030e576001600160a01b0385165f90815260036020908152604080832033845260010190915281208054859290610308908490611433565b90915550505b610319858585610af2565b95945050505050565b5f61032e338686610af2565b50843b63ffffffff8116156103b757604051636be32e7360e01b81526001600160a01b03871690636be32e739061036f903390899089908990600401611446565b6020604051808303815f875af115801561038b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103af919061148d565b6103b7575f80fd5b50600195945050505050565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610414573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043891906114ac565b604080516080810182526004805482525f546001600160a01b0390811660208401526001600160801b038385018190526060840152925163fc6f786560e01b81529394509184169263fc6f7865926104919291016114c7565b60408051808303815f875af11580156104ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d0919061150a565b50506040805160808101825260055481525f546001600160a01b0390811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529183169163fc6f786591610528916004016114c7565b60408051808303815f875af1158015610543573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610567919061150a565b50505f8054604080516323b1a1f760e11b815290516001600160a01b039092169263476343ee9260048084019382900301818387803b1580156105a8575f80fd5b505af11580156105ba573d5f803e3d5ffd5b5050505050565b600254156105cd575f80fd5b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610622573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064691906114ac565b90505f826001600160a01b0316826001600160a01b03161090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d591906114ac565b6be133fb6a00c330df0380000060028190556001600160a01b0386165f8181526003602052604080822084905551939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9161073891815260200190565b60405180910390a361075784826be133fb6a00c330df03800000610a86565b505f610779836be133fb6a00c330df0380000068056bc75e2d63100000610b76565b9150505f61079e846be133fb6a00c330df0380000069d3c21bcecceda1000000610b76565b91505f905060646107bc6be133fb6a00c330df03800000601461152c565b6107c69190611557565b9050836001600160a01b03166388316456604051806101600160405280886107ee578a6107f0565b895b6001600160a01b03168152602001881561080a578a61080c565b895b6001600160a01b0316815261271060208201526040018861082d5786610838565b61083860c88861156a565b60020b8152602001881561084c5786610857565b6108578760c861158f565b60020b81526020018861086a578461086c565b5f5b8152602001881561087d578461087f565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b81526004016108bf91906115b4565b6080604051808303815f875af11580156108db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ff9190611678565b5050506004556040805161016081019091526001600160a01b03851690638831645690808861092e578a610930565b895b6001600160a01b03168152602001881561094a578a61094c565b895b6001600160a01b03168152612710602082015260400188610977576109728760c861158f565b610979565b855b60020b815260200188156109975761099260c88861156a565b610999565b855b60020b8152602001886109c1576109bc856be133fb6a00c330df03800000611433565b6109c3565b5f5b815260200188156109e9576109e4856be133fb6a00c330df03800000611433565b6109eb565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610a2b91906115b4565b6080604051808303815f875af1158015610a47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6b9190611678565b50505060055550505050505050565b5f610290338484610af2565b6001600160a01b038381165f8181526003602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b6001600160a01b0383165f90815260036020526040812054821115610b15575f80fd5b6001600160a01b038085165f81815260036020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ae09086815260200190565b5f805f610bb486610b875784610b89565b855b8715610b955785610b97565b865b610ba590600160c01b611557565b610baf919061152c565b610bec565b9050610bbf81610c2f565b9150610bcc60c8836116be565b610bd6908361156a565b9150610be182610f4c565b925050935093915050565b80600260018201045b81811015610c2957809150600281828581610c1257610c12611543565b040181610c2157610c21611543565b049050610bf5565b50919050565b5f6401000276a36001600160a01b03831610801590610c6a575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b610c9f5760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110610d3357607f810383901c9150610d3d565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14610f3d57886001600160a01b0316610f2282610f4c565b6001600160a01b03161115610f375781610f3f565b80610f3f565b815b9998505050505050505050565b5f805f8360020b12610f61578260020b610f68565b8260020b5f035b9050620d89e8811115610fa15760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610c96565b5f816001165f03610fb657600160801b610fc8565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610ffc576ffff97272373d413259a46990580e213a0260801c5b600482161561101b576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561103a576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611059576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611078576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611097576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156110b6576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156110d6576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156110f6576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611116576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611136576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611156576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611176576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611196576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156111b6576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156111d7576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156111f7576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611216576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611233576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561125257805f198161124e5761124e611543565b0490505b640100000000810615611266576001611268565b5f5b60ff16602082901c0192505050919050565b5f6020808352835180828501525f5b818110156112a557858101830151858201604001528201611289565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112d9575f80fd5b50565b5f80604083850312156112ed575f80fd5b82356112f8816112c5565b946020939093013593505050565b5f805f60608486031215611318575f80fd5b8335611323816112c5565b92506020840135611333816112c5565b929592945050506040919091013590565b5f805f8060608587031215611357575f80fd5b8435611362816112c5565b935060208501359250604085013567ffffffffffffffff80821115611385575f80fd5b818701915087601f830112611398575f80fd5b8135818111156113a6575f80fd5b8860208285010111156113b7575f80fd5b95989497505060200194505050565b5f602082840312156113d6575f80fd5b81356113e1816112c5565b9392505050565b5f80604083850312156113f9575f80fd5b8235611404816112c5565b91506020830135611414816112c5565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156102935761029361141f565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f6020828403121561149d575f80fd5b815180151581146113e1575f80fd5b5f602082840312156114bc575f80fd5b81516113e1816112c5565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b5f806040838503121561151b575f80fd5b505080516020909101519092909150565b80820281158282048414176102935761029361141f565b634e487b7160e01b5f52601260045260245ffd5b5f8261156557611565611543565b500490565b600282810b9082900b03627fffff198112627fffff821317156102935761029361141f565b600281810b9083900b01627fffff8113627fffff19821217156102935761029361141f565b81516001600160a01b03168152610160810160208301516115e060208401826001600160a01b03169052565b5060408301516115f7604084018262ffffff169052565b50606083015161160c606084018260020b9052565b506080830151611621608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611667828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f806080858703121561168b575f80fd5b8451935060208501516001600160801b03811681146116a8575f80fd5b6040860151606090960151949790965092505050565b5f8260020b806116d0576116d0611543565b808360020b079150509291505056fea2646970667358221220f547ef0ed8e2582ecb348e0844049690728d1f14eef7e80cd1caf2139395ab4364736f6c63430008140033608060405234801561000f575f80fd5b50600280546001600160a01b031916331781556100419073da5dca304139dfc92dd5491e82f84c5df023677b90610084565b610060733cb30579e7c4a943509dba604141c12a4609960a6001610084565b61007f7363f52299d9b808eb2de6115535e42ef155db1dfd6001610084565b610157565b604080518082019091526001600160a01b038381168252602082018381525f80546001808201835582805294517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563600290920291820180546001600160a01b031916919095161790935590517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56490920191909155815483929190610129908490610132565b90915550505050565b8082018082111561015157634e487b7160e01b5f52601160045260245ffd5b92915050565b61062f806101645f395ff3fe608060405260043610610057575f3560e01c80633a98ef3914610062578063476343ee1461008a57806357a858fc146100a057806389476069146100de578063e086e5ec146100fd578063fc0c546a14610111575f80fd5b3661005e57005b5f80fd5b34801561006d575f80fd5b5061007760015481565b6040519081526020015b60405180910390f35b348015610095575f80fd5b5061009e610148565b005b3480156100ab575f80fd5b506100bf6100ba3660046104df565b610299565b604080516001600160a01b039093168352602083019190915201610081565b3480156100e9575f80fd5b5061009e6100f836600461050a565b6102ce565b348015610108575f80fd5b5061009e61043c565b34801561011c575f80fd5b50600254610130906001600160a01b031681565b6040516001600160a01b039091168152602001610081565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610199573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101bd919061052c565b6040516370a0823160e01b81523060048201529091506001600160a01b03821690632e1a7d4d9082906370a0823190602401602060405180830381865afa15801561020a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022e9190610547565b6040518263ffffffff1660e01b815260040161024c91815260200190565b5f604051808303815f87803b158015610263575f80fd5b505af1158015610275573d5f803e3d5ffd5b5050505061028161043c565b600254610296906001600160a01b03166102ce565b50565b5f81815481106102a7575f80fd5b5f918252602090912060029091020180546001909101546001600160a01b03909116915082565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610312573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103369190610547565b90508015610438575f5b5f54811015610436575f80828154811061035c5761035c61055e565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03908116808452600192830154948401859052915492945087169263a9059cbb92906103ab9088610586565b6103b591906105a3565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156103fd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042191906105c2565b5050808061042e906105e1565b915050610340565b505b5050565b478015610296575f5b5f54811015610438575f8082815481106104615761046161055e565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03168083526001918201549383018490529054919350916108fc91906104aa9087610586565b6104b491906105a3565b6040518115909202915f818181858888f19350505050505080806104d7906105e1565b915050610445565b5f602082840312156104ef575f80fd5b5035919050565b6001600160a01b0381168114610296575f80fd5b5f6020828403121561051a575f80fd5b8135610525816104f6565b9392505050565b5f6020828403121561053c575f80fd5b8151610525816104f6565b5f60208284031215610557575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761059d5761059d610572565b92915050565b5f826105bd57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156105d2575f80fd5b81518015158114610525575f80fd5b5f600182016105f2576105f2610572565b506001019056fea2646970667358221220f0ab2b61bad9871dc54e928caf61aa69de43a3893bf36993b8e0d11acb5558c464736f6c63430008140033

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806353f8b3031161008857806395d89b411161006357806395d89b41146101f7578063a9059cbb1461021a578063ba5b79821461022d578063dd62ed3e14610248575f80fd5b806353f8b303146101bd57806370a08231146101c75780638129fc1c146101ef575f80fd5b806318160ddd116100c357806318160ddd1461016b57806323b872dd1461017d578063313ce567146101905780634000aea0146101aa575f80fd5b806306fdde03146100e9578063095ea7b31461012d57806316f0115b14610150575b5f80fd5b6101176040518060400160405280600f81526020016e29aaa822a91023a0a8229021a7a4a760891b81525081565b604051610124919061127a565b60405180910390f35b61014061013b3660046112dc565b610284565b6040519015158152602001610124565b6001546040516001600160a01b039091168152602001610124565b6002545b604051908152602001610124565b61014061018b366004611306565b610299565b610198601281565b60405160ff9091168152602001610124565b6101406101b8366004611344565b610322565b6101c56103c3565b005b61016f6101d53660046113c6565b6001600160a01b03165f9081526003602052604090205490565b6101c56105c1565b610117604051806040016040528060048152602001634741504560e01b81525081565b6101406102283660046112dc565b610a7a565b60045460055460408051928352602083019190915201610124565b61016f6102563660046113e8565b6001600160a01b039182165f9081526003602090815260408083209390941682526001909201909152205490565b5f610290338484610a86565b90505b92915050565b6001600160a01b0383165f908152600360209081526040808320338452600101909152812054828110156102cb575f80fd5b5f19811461030e576001600160a01b0385165f90815260036020908152604080832033845260010190915281208054859290610308908490611433565b90915550505b610319858585610af2565b95945050505050565b5f61032e338686610af2565b50843b63ffffffff8116156103b757604051636be32e7360e01b81526001600160a01b03871690636be32e739061036f903390899089908990600401611446565b6020604051808303815f875af115801561038b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103af919061148d565b6103b7575f80fd5b50600195945050505050565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610414573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043891906114ac565b604080516080810182526004805482525f546001600160a01b0390811660208401526001600160801b038385018190526060840152925163fc6f786560e01b81529394509184169263fc6f7865926104919291016114c7565b60408051808303815f875af11580156104ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d0919061150a565b50506040805160808101825260055481525f546001600160a01b0390811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529183169163fc6f786591610528916004016114c7565b60408051808303815f875af1158015610543573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610567919061150a565b50505f8054604080516323b1a1f760e11b815290516001600160a01b039092169263476343ee9260048084019382900301818387803b1580156105a8575f80fd5b505af11580156105ba573d5f803e3d5ffd5b5050505050565b600254156105cd575f80fd5b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610622573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064691906114ac565b90505f826001600160a01b0316826001600160a01b03161090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d591906114ac565b6be133fb6a00c330df0380000060028190556001600160a01b0386165f8181526003602052604080822084905551939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9161073891815260200190565b60405180910390a361075784826be133fb6a00c330df03800000610a86565b505f610779836be133fb6a00c330df0380000068056bc75e2d63100000610b76565b9150505f61079e846be133fb6a00c330df0380000069d3c21bcecceda1000000610b76565b91505f905060646107bc6be133fb6a00c330df03800000601461152c565b6107c69190611557565b9050836001600160a01b03166388316456604051806101600160405280886107ee578a6107f0565b895b6001600160a01b03168152602001881561080a578a61080c565b895b6001600160a01b0316815261271060208201526040018861082d5786610838565b61083860c88861156a565b60020b8152602001881561084c5786610857565b6108578760c861158f565b60020b81526020018861086a578461086c565b5f5b8152602001881561087d578461087f565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b81526004016108bf91906115b4565b6080604051808303815f875af11580156108db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ff9190611678565b5050506004556040805161016081019091526001600160a01b03851690638831645690808861092e578a610930565b895b6001600160a01b03168152602001881561094a578a61094c565b895b6001600160a01b03168152612710602082015260400188610977576109728760c861158f565b610979565b855b60020b815260200188156109975761099260c88861156a565b610999565b855b60020b8152602001886109c1576109bc856be133fb6a00c330df03800000611433565b6109c3565b5f5b815260200188156109e9576109e4856be133fb6a00c330df03800000611433565b6109eb565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610a2b91906115b4565b6080604051808303815f875af1158015610a47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6b9190611678565b50505060055550505050505050565b5f610290338484610af2565b6001600160a01b038381165f8181526003602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b6001600160a01b0383165f90815260036020526040812054821115610b15575f80fd5b6001600160a01b038085165f81815260036020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ae09086815260200190565b5f805f610bb486610b875784610b89565b855b8715610b955785610b97565b865b610ba590600160c01b611557565b610baf919061152c565b610bec565b9050610bbf81610c2f565b9150610bcc60c8836116be565b610bd6908361156a565b9150610be182610f4c565b925050935093915050565b80600260018201045b81811015610c2957809150600281828581610c1257610c12611543565b040181610c2157610c21611543565b049050610bf5565b50919050565b5f6401000276a36001600160a01b03831610801590610c6a575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b610c9f5760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110610d3357607f810383901c9150610d3d565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14610f3d57886001600160a01b0316610f2282610f4c565b6001600160a01b03161115610f375781610f3f565b80610f3f565b815b9998505050505050505050565b5f805f8360020b12610f61578260020b610f68565b8260020b5f035b9050620d89e8811115610fa15760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610c96565b5f816001165f03610fb657600160801b610fc8565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610ffc576ffff97272373d413259a46990580e213a0260801c5b600482161561101b576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561103a576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611059576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611078576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611097576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156110b6576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156110d6576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156110f6576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611116576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611136576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611156576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611176576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611196576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156111b6576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156111d7576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156111f7576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611216576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611233576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561125257805f198161124e5761124e611543565b0490505b640100000000810615611266576001611268565b5f5b60ff16602082901c0192505050919050565b5f6020808352835180828501525f5b818110156112a557858101830151858201604001528201611289565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112d9575f80fd5b50565b5f80604083850312156112ed575f80fd5b82356112f8816112c5565b946020939093013593505050565b5f805f60608486031215611318575f80fd5b8335611323816112c5565b92506020840135611333816112c5565b929592945050506040919091013590565b5f805f8060608587031215611357575f80fd5b8435611362816112c5565b935060208501359250604085013567ffffffffffffffff80821115611385575f80fd5b818701915087601f830112611398575f80fd5b8135818111156113a6575f80fd5b8860208285010111156113b7575f80fd5b95989497505060200194505050565b5f602082840312156113d6575f80fd5b81356113e1816112c5565b9392505050565b5f80604083850312156113f9575f80fd5b8235611404816112c5565b91506020830135611414816112c5565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156102935761029361141f565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f6020828403121561149d575f80fd5b815180151581146113e1575f80fd5b5f602082840312156114bc575f80fd5b81516113e1816112c5565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b5f806040838503121561151b575f80fd5b505080516020909101519092909150565b80820281158282048414176102935761029361141f565b634e487b7160e01b5f52601260045260245ffd5b5f8261156557611565611543565b500490565b600282810b9082900b03627fffff198112627fffff821317156102935761029361141f565b600281810b9083900b01627fffff8113627fffff19821217156102935761029361141f565b81516001600160a01b03168152610160810160208301516115e060208401826001600160a01b03169052565b5060408301516115f7604084018262ffffff169052565b50606083015161160c606084018260020b9052565b506080830151611621608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611667828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f806080858703121561168b575f80fd5b8451935060208501516001600160801b03811681146116a8575f80fd5b6040860151606090960151949790965092505050565b5f8260020b806116d0576116d0611543565b808360020b079150509291505056fea2646970667358221220f547ef0ed8e2582ecb348e0844049690728d1f14eef7e80cd1caf2139395ab4364736f6c63430008140033

Deployed Bytecode Sourcemap

2950:12225:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3825:47;;;;;;;;;;;;;;;-1:-1:-1;;;3825:47:0;;;;;;;;;;;;:::i;:::-;;;;;;;;7057:132;;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7057:132:0;1023:187:1;7851:72:0;7909:9;;7851:72;;-1:-1:-1;;;;;7909:9:0;;;1470:51:1;;1458:2;1443:18;7851:72:0;1324:203:1;7928:86:0;7993:16;;7928:86;;;1678:25:1;;;1666:2;1651:18;7928:86:0;1532:177:1;7194:321:0;;;;;;:::i;:::-;;:::i;3918:35::-;;3951:2;3918:35;;;;;2347:4:1;2335:17;;;2317:36;;2305:2;2290:18;3918:35:0;2175:184:1;7520:323:0;;;;;;:::i;:::-;;:::i;6418:505::-;;;:::i;:::-;;8019:106;;;;;;:::i;:::-;-1:-1:-1;;;;;8095:17:0;8074:7;8095:17;;;:10;:17;;;;;:25;;8019:106;4748:1665;;;:::i;3876:38::-;;;;;;;;;;;;;;;-1:-1:-1;;;3876:38:0;;;;;6928:124;;;;;;:::i;:::-;;:::i;8271:135::-;8358:20;;8380;;8271:135;;;3589:25:1;;;3645:2;3630:18;;3623:34;;;;3562:18;8271:135:0;3415:248:1;8130:136:0;;;;;;:::i;:::-;-1:-1:-1;;;;;8224:17:0;;;8203:7;8224:17;;;:10;:17;;;;;;;;:37;;;;;;:27;;;;:37;;;;;;8130:136;7057:132;7127:4;7145:39;7154:10;7166:8;7176:7;7145:8;:39::i;:::-;7138:46;;7057:132;;;;;:::o;7194:321::-;-1:-1:-1;;;;;8224:17:0;;7279:4;8224:17;;;:10;:17;;;;;;;;7328:10;8224:37;;:27;;:37;;;;;;7366:7;7352:10;:21;;7344:30;;;;;;-1:-1:-1;;7383:10:0;:22;7379:90;;-1:-1:-1;;;;;7413:17:0;;:4;:17;;;:10;:17;;;;;;;;7441:10;7413:39;;:27;;:39;;;;;:50;;7456:7;;7413:4;:50;;7456:7;;7413:50;:::i;:::-;;;;-1:-1:-1;;7379:90:0;7480:30;7490:5;7497:3;7502:7;7480:9;:30::i;:::-;7473:37;7194:321;-1:-1:-1;;;;;7194:321:0:o;7520:323::-;7615:4;7626:35;7636:10;7648:3;7653:7;7626:9;:35::i;:::-;-1:-1:-1;7707:16:0;;7736:9;;;;7732:91;;7761:55;;-1:-1:-1;;;7761:55:0;;-1:-1:-1;;;;;7761:27:0;;;;;:55;;7789:10;;7801:7;;7810:5;;;;7761:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7753:64;;;;;;-1:-1:-1;7834:4:0;;7520:323;-1:-1:-1;;;;;7520:323:0:o;6418:505::-;6462:19;3239:42;-1:-1:-1;;;;;6500:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6542:164;;;;;;;;6587:20;;;6542:164;;-1:-1:-1;6632:9:0;-1:-1:-1;;;;;6632:9:0;;;6542:164;;;;-1:-1:-1;;;;;6542:164:0;;;;;;;;;;6530:177;;-1:-1:-1;;;6530:177:0;;6462:63;;-1:-1:-1;6530:11:0;;;;;;:177;;6542:164;6530:177;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;6724:164:0;;;;;;;;6769:20;;6724:164;;-1:-1:-1;6814:9:0;-1:-1:-1;;;;;6814:9:0;;;6724:164;;;;-1:-1:-1;;;;;6724:164:0;;;;;;;;;;6712:177;;-1:-1:-1;;;6712:177:0;;:11;;;;;;:177;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;6894:4:0;:9;;:24;;;-1:-1:-1;;;6894:24:0;;;;-1:-1:-1;;;;;6894:9:0;;;;:22;;:24;;;;;;;;;;:4;:9;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6457:466;6418:505::o;4748:1665::-;7993:16;;4792:18;4784:27;;;;;;4816:13;4840:4;4816:29;;4850:13;3239:42;-1:-1:-1;;;;;4866:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4850:30;;4885:11;4907:5;-1:-1:-1;;;;;4899:13:0;:5;-1:-1:-1;;;;;4899:13:0;;4885:27;;4917:19;3239:42;-1:-1:-1;;;;;4955:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3178:17;4985:16;:33;;;-1:-1:-1;;;;;5023:17:0;;4985:4;5023:17;;;:10;:17;;;;;;:42;;;5075:45;4917:63;;-1:-1:-1;5023:17:0;;4985:4;;5075:45;;;;1678:25:1;;1666:2;1651:18;;1532:177;5075:45:0;;;;;;;;5125;5134:5;5149:3;3178:17;5125:8;:45::i;:::-;;5179:14;5197:66;5224:6;3178:17;3328:9;5197:26;:66::i;:::-;5175:88;;;5272:14;5290:64;5317:6;3178:17;3527:9;5290:26;:64::i;:::-;5268:86;-1:-1:-1;5359:27:0;;-1:-1:-1;5429:3:0;5389:37;3178:17;3425:2;5389:37;:::i;:::-;:43;;;;:::i;:::-;5359:73;;5468:3;-1:-1:-1;;;;;5468:8:0;;5477:425;;;;;;;;5518:6;:22;;5535:5;5518:22;;;5527:5;5518:22;-1:-1:-1;;;;;5477:425:0;;;;;5555:6;5554:7;:23;;5572:5;5554:23;;;5564:5;5554:23;-1:-1:-1;;;;;5477:425:0;;;5588:5;5477:425;;;;;;5610:6;:34;;5636:8;5610:34;;;5619:14;5630:3;5619:8;:14;:::i;:::-;5477:425;;;;;;5662:6;5661:7;:35;;5688:8;5661:35;;;5671:14;:8;5682:3;5671:14;:::i;:::-;5477:425;;;;;;5718:6;:32;;5731:19;5718:32;;;5727:1;5718:32;5477:425;;;;5773:6;5772:7;:33;;5786:19;5772:33;;;5782:1;5772:33;5477:425;;;;5823:1;5477:425;;;;5842:1;5477:425;;;;5860:5;-1:-1:-1;;;;;5477:425:0;;;;;5881:15;5477:425;;;5468:435;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;5438:20:0;5437:466;5948:459;;;;;;;;;-1:-1:-1;;;;;5939:8:0;;;;;5948:459;5989:6;:22;;6006:5;5989:22;;;5998:5;5989:22;-1:-1:-1;;;;;5948:459:0;;;;;6026:6;6025:7;:23;;6043:5;6025:23;;;6035:5;6025:23;-1:-1:-1;;;;;5948:459:0;;;6059:5;5948:459;;;;;;6081:6;:34;;6101:14;:8;6112:3;6101:14;:::i;:::-;6081:34;;;6090:8;6081:34;5948:459;;;;;;6133:6;6132:7;:35;;6153:14;6164:3;6153:8;:14;:::i;:::-;6132:35;;;6142:8;6132:35;5948:459;;;;;;6189:6;:49;;6202:36;6219:19;3178:17;6202:36;:::i;:::-;6189:49;;;6198:1;6189:49;5948:459;;;;6261:6;6260:7;:50;;6274:36;6291:19;3178:17;6274:36;:::i;:::-;6260:50;;;6270:1;6260:50;5948:459;;;;6328:1;5948:459;;;;6347:1;5948:459;;;;6365:5;-1:-1:-1;;;;;5948:459:0;;;;;6386:15;5948:459;;;5939:469;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;5909:20:0;5908:500;-1:-1:-1;;;;;;;4748:1665:0:o;6928:124::-;6994:4;7012:35;7022:10;7034:3;7039:7;7012:9;:35::i;8413:212::-;-1:-1:-1;;;;;8511:18:0;;;8500:4;8511:18;;;:10;:18;;;;;;;;:38;;;;;;:28;;;;:38;;;;;:48;;;8569:35;1678:25:1;;;8500:4:0;;8511:38;:18;8569:35;;1651:18:1;8569:35:0;;;;;;;;-1:-1:-1;8616:4:0;8413:212;;;;;:::o;8631:294::-;-1:-1:-1;;;;;8095:17:0;;8713:4;8095:17;;;:10;:17;;;;;:25;8768:7;-1:-1:-1;8748:27:0;8740:36;;;;;;-1:-1:-1;;;;;8782:17:0;;;:4;:17;;;:10;:17;;;;;;:36;;;;;;;8824:15;;;;;;;;;;:34;;;;;;8869:29;;;;;;8811:7;1678:25:1;;1666:2;1651:18;;1532:177;14819:353:0;14923:13;14938:10;14955:17;14983:72;15029:6;:24;;15048:5;15029:24;;;15038:7;15029:24;15000:6;14999:7;:25;;15019:5;14999:25;;;15009:7;14999:25;14989:36;;-1:-1:-1;;;14989:36:0;:::i;:::-;:65;;;;:::i;:::-;14983:5;:72::i;:::-;14955:101;;15068:30;15088:9;15068:19;:30::i;:::-;15061:37;-1:-1:-1;15118:10:0;15125:3;15061:37;15118:10;:::i;:::-;15110:19;;:4;:19;:::i;:::-;15103:26;;15142:25;15162:4;15142:19;:25::i;:::-;15134:33;;14950:222;14819:353;;;;;;:::o;14583:231::-;14686:6;14696:1;14691;14686:6;;14685:12;14720:85;14734:6;14727:4;:13;14720:85;;;14758:4;14749:13;;14797:1;14789:4;14782;14777:2;:9;;;;;:::i;:::-;;:16;14776:22;;;;;:::i;:::-;;14769:29;;14720:85;;;14654:156;14583:231;;;:::o;11152:3426::-;11226:10;3714;-1:-1:-1;;;;;11267:30:0;;;;;;:63;;-1:-1:-1;3770:49:0;-1:-1:-1;;;;;11301:29:0;;;11267:63;11259:77;;;;-1:-1:-1;;;11259:77:0;;9358:2:1;11259:77:0;;;9340:21:1;9397:1;9377:18;;;9370:29;-1:-1:-1;;;9415:18:1;;;9408:31;9456:18;;11259:77:0;;;;;;;;;-1:-1:-1;;;;;11383:2:0;11358:27;;;;-1:-1:-1;;;;;11471:41:0;;11468:1;11464:49;11547:9;;;11605:18;11599:25;;11596:1;11592:33;11659:9;;;11717:10;11711:17;;11708:1;11704:25;11763:9;;;11821:6;11815:13;;11812:1;11808:21;11863:9;;;11921:4;11915:11;;11912:1;11908:19;;;11961:9;;;12019:3;12013:10;;12010:1;12006:18;12058:9;;;12110:10;;;12107:1;12103:18;;;12155:9;;;;12200:10;;;11638;;11742;;;11842;;;11940;12037;;;12134;12223;12257:3;12250:10;;12246:75;;12282:3;12276;:9;12266:5;:20;;12262:24;;12246:75;;;12317:3;12311;:9;12301:5;:20;;12297:24;;12246:75;12407:9;;;12402:3;12398:19;;;12432:11;;;;12490:9;;;;12540;;12531:19;;;12565:11;;;12623:9;12673;;12664:19;;;12698:11;;;12756:9;12806;;12797:19;;;12831:11;;;12889:9;12939;;12930:19;;;12964:11;;;13022:9;13072;;13063:19;;;13097:11;;;13155:9;13205;;13196:19;;;13230:11;;;13288:9;13338;;13329:19;;;13363:11;;;13421:9;13471;;13462:19;;;13496:11;;;13554:9;13604;;13595:19;;;13629:11;;;13687:9;13737;;13728:19;;;13762:11;;;13820:9;13870;;13861:19;;;13895:11;;;13953:9;14003;;13994:19;;;14028:11;;;;14086:9;;;;14136;;14127:19;;;;;12407:9;-1:-1:-1;;12345:17:0;;12367:2;12344:25;12468:10;;;;;;;12458:21;12601:10;;;;;;;12591:21;;;;12734:10;;;;;;;12724:21;;;;12867:10;;;;;;;12857:21;;;;13000:10;;;;;;;12990:21;;;;13133:10;;;;;;;13123:21;;;;13266:10;;;;;;;13256:21;13399:10;;;;;;;13389:21;13532:10;;;;;;;13522:21;13665:10;;;;;;;13655:21;13798:10;;;;;;;13788:21;13931:10;;;;;;;13921:21;14064:10;;;;;;;14054:21;14197:10;;;;;;;14187:21;14252:24;14244:32;;-1:-1:-1;;14307:53:0;;12359:3;14306:62;;;;14413:39;14397:55;;14396:64;;14476:17;;;;;;;;;:92;;14537:12;-1:-1:-1;;;;;14506:43:0;:27;14526:6;14506:19;:27::i;:::-;-1:-1:-1;;;;;14506:43:0;;;:62;;14561:7;14476:92;;14506:62;14552:6;14476:92;;;14496:7;14476:92;14469:99;11152:3426;-1:-1:-1;;;;;;;;;11152:3426:0:o;8932:2215::-;8996:20;9039:15;9064:1;9057:4;:8;;;:57;;9108:4;9101:12;;9057:57;;;9084:4;9077:12;;9076:13;;9057:57;9039:75;-1:-1:-1;3659:9:0;9128:36;;;9120:50;;;;-1:-1:-1;;;9120:50:0;;9687:2:1;9120:50:0;;;9669:21:1;9726:1;9706:18;;;9699:29;-1:-1:-1;;;9744:18:1;;;9737:31;9785:18;;9120:50:0;9485:324:1;9120:50:0;9178:13;9194:7;9204:3;9194:13;9211:1;9194:18;:93;;-1:-1:-1;;;9194:93:0;;;9215:34;9194:93;9178:109;;;-1:-1:-1;9307:3:0;9297:13;;:18;9293:83;;9334:34;9326:42;9373:3;9325:51;9293:83;9396:3;9386:13;;:18;9382:83;;9423:34;9415:42;9462:3;9414:51;9382:83;9485:3;9475:13;;:18;9471:83;;9512:34;9504:42;9551:3;9503:51;9471:83;9574:4;9564:14;;:19;9560:84;;9602:34;9594:42;9641:3;9593:51;9560:84;9664:4;9654:14;;:19;9650:84;;9692:34;9684:42;9731:3;9683:51;9650:84;9754:4;9744:14;;:19;9740:84;;9782:34;9774:42;9821:3;9773:51;9740:84;9844:4;9834:14;;:19;9830:84;;9872:34;9864:42;9911:3;9863:51;9830:84;9934:5;9924:15;;:20;9920:85;;9963:34;9955:42;10002:3;9954:51;9920:85;10025:5;10015:15;;:20;10011:85;;10054:34;10046:42;10093:3;10045:51;10011:85;10116:5;10106:15;;:20;10102:85;;10145:34;10137:42;10184:3;10136:51;10102:85;10207:5;10197:15;;:20;10193:85;;10236:34;10228:42;10275:3;10227:51;10193:85;10298:6;10288:16;;:21;10284:86;;10328:34;10320:42;10367:3;10319:51;10284:86;10390:6;10380:16;;:21;10376:86;;10420:34;10412:42;10459:3;10411:51;10376:86;10482:6;10472:16;;:21;10468:86;;10512:34;10504:42;10551:3;10503:51;10468:86;10574:6;10564:16;;:21;10560:86;;10604:34;10596:42;10643:3;10595:51;10560:86;10666:7;10656:17;;:22;10652:86;;10697:33;10689:41;10735:3;10688:50;10652:86;10758:7;10748:17;;:22;10744:85;;10789:32;10781:40;10826:3;10780:49;10744:85;10849:7;10839:17;;:22;10835:83;;10880:30;10872:38;10915:3;10871:47;10835:83;10938:7;10928:17;;:22;10924:78;;10969:25;10961:33;10999:3;10960:42;10924:78;11021:1;11014:4;:8;;;11010:47;;;11052:5;-1:-1:-1;;11032:25:0;;;;;:::i;:::-;;11024:33;;11010:47;11114:7;11105:5;:17;:22;:30;;11134:1;11105:30;;;11130:1;11105:30;11088:48;;11098:2;11089:5;:11;;11088:48;11065:72;;9023:2120;;8932:2215;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1714:456::-;1791:6;1799;1807;1860:2;1848:9;1839:7;1835:23;1831:32;1828:52;;;1876:1;1873;1866:12;1828:52;1915:9;1902:23;1934:31;1959:5;1934:31;:::i;:::-;1984:5;-1:-1:-1;2041:2:1;2026:18;;2013:32;2054:33;2013:32;2054:33;:::i;:::-;1714:456;;2106:7;;-1:-1:-1;;;2160:2:1;2145:18;;;;2132:32;;1714:456::o;2364:794::-;2452:6;2460;2468;2476;2529:2;2517:9;2508:7;2504:23;2500:32;2497:52;;;2545:1;2542;2535:12;2497:52;2584:9;2571:23;2603:31;2628:5;2603:31;:::i;:::-;2653:5;-1:-1:-1;2705:2:1;2690:18;;2677:32;;-1:-1:-1;2760:2:1;2745:18;;2732:32;2783:18;2813:14;;;2810:34;;;2840:1;2837;2830:12;2810:34;2878:6;2867:9;2863:22;2853:32;;2923:7;2916:4;2912:2;2908:13;2904:27;2894:55;;2945:1;2942;2935:12;2894:55;2985:2;2972:16;3011:2;3003:6;3000:14;2997:34;;;3027:1;3024;3017:12;2997:34;3072:7;3067:2;3058:6;3054:2;3050:15;3046:24;3043:37;3040:57;;;3093:1;3090;3083:12;3040:57;2364:794;;;;-1:-1:-1;;3124:2:1;3116:11;;-1:-1:-1;;;2364:794:1:o;3163:247::-;3222:6;3275:2;3263:9;3254:7;3250:23;3246:32;3243:52;;;3291:1;3288;3281:12;3243:52;3330:9;3317:23;3349:31;3374:5;3349:31;:::i;:::-;3399:5;3163:247;-1:-1:-1;;;3163:247:1:o;3668:388::-;3736:6;3744;3797:2;3785:9;3776:7;3772:23;3768:32;3765:52;;;3813:1;3810;3803:12;3765:52;3852:9;3839:23;3871:31;3896:5;3871:31;:::i;:::-;3921:5;-1:-1:-1;3978:2:1;3963:18;;3950:32;3991:33;3950:32;3991:33;:::i;:::-;4043:7;4033:17;;;3668:388;;;;;:::o;4061:127::-;4122:10;4117:3;4113:20;4110:1;4103:31;4153:4;4150:1;4143:15;4177:4;4174:1;4167:15;4193:128;4260:9;;;4281:11;;;4278:37;;;4295:18;;:::i;4326:559::-;-1:-1:-1;;;;;4539:32:1;;4521:51;;4603:2;4588:18;;4581:34;;;4651:2;4646;4631:18;;4624:30;;;4670:18;;4663:34;;;4690:6;4740;4734:3;4719:19;;4706:49;4805:1;4775:22;;;4799:3;4771:32;;;4764:43;;;;4868:2;4847:15;;;-1:-1:-1;;4843:29:1;4828:45;4824:55;;4326:559;-1:-1:-1;;;4326:559:1:o;4890:277::-;4957:6;5010:2;4998:9;4989:7;4985:23;4981:32;4978:52;;;5026:1;5023;5016:12;4978:52;5058:9;5052:16;5111:5;5104:13;5097:21;5090:5;5087:32;5077:60;;5133:1;5130;5123:12;5172:251;5242:6;5295:2;5283:9;5274:7;5270:23;5266:32;5263:52;;;5311:1;5308;5301:12;5263:52;5343:9;5337:16;5362:31;5387:5;5362:31;:::i;5428:570::-;5651:13;;5633:32;;5725:4;5713:17;;;5707:24;-1:-1:-1;;;;;5703:50:1;5681:20;;;5674:80;5801:4;5789:17;;;5783:24;-1:-1:-1;;;;;5898:21:1;;;5876:20;;;5869:51;;;;5980:4;5968:17;;;5962:24;5958:33;5936:20;;;5929:63;;;;5620:3;5605:19;;5428:570::o;6003:245::-;6082:6;6090;6143:2;6131:9;6122:7;6118:23;6114:32;6111:52;;;6159:1;6156;6149:12;6111:52;-1:-1:-1;;6182:16:1;;6238:2;6223:18;;;6217:25;6182:16;;6217:25;;-1:-1:-1;6003:245:1:o;6253:168::-;6326:9;;;6357;;6374:15;;;6368:22;;6354:37;6344:71;;6395:18;;:::i;6426:127::-;6487:10;6482:3;6478:20;6475:1;6468:31;6518:4;6515:1;6508:15;6542:4;6539:1;6532:15;6558:120;6598:1;6624;6614:35;;6629:18;;:::i;:::-;-1:-1:-1;6663:9:1;;6558:120::o;6683:193::-;6781:1;6770:16;;;6752;;;;6748:39;-1:-1:-1;;6802:23:1;;6837:8;6827:19;;6799:48;6796:74;;;6850:18;;:::i;6881:189::-;6977:1;6948:16;;;6966;;;;6944:39;7031:7;6998:18;;-1:-1:-1;;7018:22:1;;6995:46;6992:72;;;7044:18;;:::i;7268:1218::-;7486:13;;-1:-1:-1;;;;;1281:31:1;1269:44;;7454:3;7439:19;;7558:4;7550:6;7546:17;7540:24;7573:54;7621:4;7610:9;7606:20;7592:12;-1:-1:-1;;;;;1281:31:1;1269:44;;1215:104;7573:54;;7676:4;7668:6;7664:17;7658:24;7691:55;7740:4;7729:9;7725:20;7709:14;7151:8;7140:20;7128:33;;7075:92;7691:55;;7795:4;7787:6;7783:17;7777:24;7810:54;7858:4;7847:9;7843:20;7827:14;7247:1;7236:20;7224:33;;7172:91;7810:54;;7913:4;7905:6;7901:17;7895:24;7928:54;7976:4;7965:9;7961:20;7945:14;7247:1;7236:20;7224:33;;7172:91;7928:54;;8038:4;8030:6;8026:17;8020:24;8013:4;8002:9;7998:20;7991:54;8101:4;8093:6;8089:17;8083:24;8076:4;8065:9;8061:20;8054:54;8164:4;8156:6;8152:17;8146:24;8139:4;8128:9;8124:20;8117:54;8190:6;8250:2;8242:6;8238:15;8232:22;8227:2;8216:9;8212:18;8205:50;;8274:6;8329:2;8321:6;8317:15;8311:22;8342:54;8392:2;8381:9;8377:18;8361:14;-1:-1:-1;;;;;1281:31:1;1269:44;;1215:104;8342:54;-1:-1:-1;;8415:6:1;8463:15;;;8457:22;8437:18;;;;8430:50;7268:1218;:::o;8491:489::-;8588:6;8596;8604;8612;8665:3;8653:9;8644:7;8640:23;8636:33;8633:53;;;8682:1;8679;8672:12;8633:53;8711:9;8705:16;8695:26;;8764:2;8753:9;8749:18;8743:25;-1:-1:-1;;;;;8801:5:1;8797:46;8790:5;8787:57;8777:85;;8858:1;8855;8848:12;8777:85;8926:2;8911:18;;8905:25;8970:2;8955:18;;;8949:25;8491:489;;8881:5;;-1:-1:-1;8491:489:1;-1:-1:-1;;;8491:489:1:o;8985:166::-;9015:1;9056;9053;9042:16;9077:3;9067:37;;9084:18;;:::i;:::-;9141:3;9137:1;9134;9123:16;9118:27;9113:32;;;8985:166;;;;:::o

Swarm Source

ipfs://f0ab2b61bad9871dc54e928caf61aa69de43a3893bf36993b8e0d11acb5558c4

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.