ETH Price: $2,437.19 (-0.77%)
 

Overview

Max Total Supply

4,206,911,000 BAPE

Holders

625

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4.33001000000000011 BAPE

Value
$0.00
0xfed4ee6529252962cc21cdde66f0ce895a55a71e
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x509f48a4...4931de157
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Token

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-06
*/

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

// Created with Bossman's Bakery (bakery.mullet.capital)!

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

interface Router {
	struct ExactInputSingleParams {
		address tokenIn;
		address tokenOut;
		uint24 fee;
		address recipient;
		uint256 amountIn;
		uint256 amountOutMinimum;
		uint160 sqrtPriceLimitX96;
	}
	function factory() external view returns (address);
	function positionManager() external view returns (address);
	function WETH9() external view returns (address);
	function exactInputSingle(ExactInputSingleParams calldata) external payable returns (uint256);
}

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;


	function initialize(address _creator) external {
		require(totalShares == 0);
		token = ERC20(msg.sender);
		_addShare(_creator, 10);
		_addShare(0xe6c791FBd46dB3f4EdA5f7Bb76474F4FA530733E, 6);
		_addShare(0x12fe289b7588dE4ee1f1392Ce086be100f7165ed, 3);
		_addShare(0xc28C9da0F8a500DFfC16Ff09a3DD1Cc4c530D346, 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 {
		WETH _weth = WETH(ROUTER.WETH9());
		if (address(_token) == address(_weth)) {
			_weth.withdraw(_weth.balanceOf(address(this)));
			withdrawETH();
		} else {
			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 withdrawWETH() public {
		withdrawToken(ERC20(ROUTER.WETH9()));
	}

	function withdrawFees() external {
		withdrawWETH();
		withdrawToken(token);
	}


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


contract Token {

	uint256 constant private UINT_MAX = type(uint256).max;
	uint128 constant private UINT128_MAX = type(uint128).max;
	uint256 constant private MAX_NAME_LENGTH = 32;
	uint256 constant private MIN_SUPPLY = 1e16; // 0.01 tokens
	uint256 constant private MAX_SUPPLY = 1e33; // 1 quadrillion tokens
	uint256 constant private PERCENT_PRECISION = 1000; // 1 = 0.1%
	uint256 constant private MAX_TIME_LIMIT = 24 hours;
	Router constant private ROUTER = Router(0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45);

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

	string public name;
	string public symbol;
	uint8 constant public decimals = 18;

	string constant public source = "Created with Bossman's Bakery (bakery.mullet.capital)!";


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

	struct Info {
		bool locked;
		Team team;
		address pool;
		address creator;
		uint256 totalSupply;
		uint256 initialMarketCap;
		uint256 upperMarketCap;
		uint256 concentratedPercent;
		uint256 creatorFee;
		uint256 transferLimit;
		uint256 transferLimitEnd;
		mapping(address => User) users;
		uint256 positionId;
		string website;
		string twitter;
		string telegram;
		string discord;
		string additionalInfo;
	}
	Info private info;


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


	modifier _onlyCreator() {
		require(msg.sender == creator());
		_;
	}

	
	function lock() external {
		require(!info.locked);
		require(totalSupply() == 0);
		info.locked = true;
	}
	
	function initialize(address _creator, string memory _name, string memory _symbol, uint256 _totalSupply, uint256 _initialMarketCap, uint256 _upperMarketCap, uint256 _creatorFee, uint256 _transferLimit, uint256 _transferLimitTime) external payable {
		require(!info.locked);
		require(totalSupply() == 0);
		require(bytes(_name).length > 0 && bytes(_name).length <= MAX_NAME_LENGTH);
		require(bytes(_symbol).length > 0 && bytes(_symbol).length <= MAX_NAME_LENGTH);
		require(_totalSupply >= MIN_SUPPLY && _totalSupply <= MAX_SUPPLY);
		require(_initialMarketCap > 0 && _upperMarketCap > _initialMarketCap);
		require(_creatorFee <= PERCENT_PRECISION / 10);
		require(_transferLimitTime <= MAX_TIME_LIMIT);
		info.team = new Team();
		info.team.initialize(_creator);
		info.creator = _creator;
		name = _name;
		symbol = _symbol;
		info.totalSupply = _totalSupply;
		info.users[address(this)].balance = _totalSupply;
		emit Transfer(address(0x0), address(this), _totalSupply);
		info.initialMarketCap = _initialMarketCap;
		info.upperMarketCap = _upperMarketCap;
		info.creatorFee = _creatorFee;
		_createLP(_initialMarketCap, _upperMarketCap, _creatorFee);
		info.transferLimit = _transferLimit;
		info.transferLimitEnd = block.timestamp + _transferLimitTime;
	}

	function updateAll(string memory _website, string memory _twitter, string memory _telegram, string memory _discord, string memory _info) external _onlyCreator {
		info.website = _website;
		info.twitter = _twitter;
		info.telegram = _telegram;
		info.discord = _discord;
		info.additionalInfo = _info;
	}

	function updateWebsite(string memory _website) external _onlyCreator {
		info.website = _website;
	}

	function updateTwitter(string memory _twitter) external _onlyCreator {
		info.twitter = _twitter;
	}

	function updateTelegram(string memory _telegram) external _onlyCreator {
		info.telegram = _telegram;
	}

	function updateDiscord(string memory _discord) external _onlyCreator {
		info.discord = _discord;
	}

	function updateInfo(string memory _info) external _onlyCreator {
		info.additionalInfo = _info;
	}

	function collectTradingFees() external {
		PositionManager _pm = PositionManager(ROUTER.positionManager());
		_pm.collect(PositionManager.CollectParams({
			tokenId: info.positionId,
			recipient: 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) {
		unchecked {
			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 creator() public view returns (address) {
		return info.creator;
	}
	
	function team() public view returns (address) {
		return address(info.team);
	}

	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 position() external view returns (uint256) {
		return info.positionId;
	}

	function initialMarketCap() external view returns (string memory) {
		return string(abi.encodePacked(_uint2str(info.initialMarketCap, 18, 5), " ETH"));
	}

	function upperMarketCap() external view returns (string memory) {
		return string(abi.encodePacked(_uint2str(info.upperMarketCap, 18, 5), " ETH"));
	}

	function creatorFee() external view returns (string memory) {
		return string(abi.encodePacked(_uint2str(info.creatorFee * 100, 3, 3), "%"));
	}

	function transferLimit() public view returns (uint256 limit, uint256 until, bool active) {
		limit = info.transferLimit;
		until = info.transferLimitEnd;
		active = limit > 0 && block.timestamp < until;
	}

	function website() external view returns (string memory) {
		return info.website;
	}

	function twitter() external view returns (string memory) {
		return info.twitter;
	}

	function telegram() external view returns (string memory) {
		return info.telegram;
	}

	function discord() external view returns (string memory) {
		return info.discord;
	}

	function additionalInfo() external view returns (string memory) {
		return info.additionalInfo;
	}


	function _createLP(uint256 _initialMarketCap, uint256 _upperMarketCap, uint256 _creatorFee) internal {
		unchecked {
			address _this = address(this);
			address _weth = ROUTER.WETH9();
			bool _weth0 = _weth < _this;
			(uint160 _initialSqrtPrice, ) = _getPriceAndTickFromValues(_weth0, totalSupply(), _initialMarketCap);
			info.pool = Factory(ROUTER.factory()).createPool(_this, _weth, 10000);
			Pool(pool()).initialize(_initialSqrtPrice);
			PositionManager _pm = PositionManager(ROUTER.positionManager());
			_approve(_this, address(_pm), totalSupply());
			( , int24 _minTick) = _getPriceAndTickFromValues(_weth0, totalSupply(), _initialMarketCap);
			( , int24 _maxTick) = _getPriceAndTickFromValues(_weth0, totalSupply(), _upperMarketCap);
			(info.positionId, , , ) = _pm.mint(PositionManager.MintParams({
				token0: _weth0 ? _weth : _this,
				token1: !_weth0 ? _weth : _this,
				fee: 10000,
				tickLower: _weth0 ? _maxTick : _minTick,
				tickUpper: !_weth0 ? _maxTick : _minTick,
				amount0Desired: _weth0 ? 0 :  totalSupply() * (PERCENT_PRECISION - _creatorFee) / PERCENT_PRECISION,
				amount1Desired: !_weth0 ? 0 : totalSupply() * (PERCENT_PRECISION - _creatorFee) / PERCENT_PRECISION,
				amount0Min: 0,
				amount1Min: 0,
				recipient: _this,
				deadline: block.timestamp
			}));
			if (_this.balance > 0) {
				ROUTER.exactInputSingle{value:_this.balance}(Router.ExactInputSingleParams({
					tokenIn: _weth,
					tokenOut: _this,
					fee: 10000,
					recipient: creator(),
					amountIn: _this.balance,
					amountOutMinimum: 0,
					sqrtPriceLimitX96: 0
				}));
			}
		}
	}
	
	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(_tokens > 0);
			(uint256 _limit, , bool _active) = transferLimit();
			if (_active) {
				require(_tokens <= _limit);
			}
			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);
	}

	function _uint2str(uint256 _value, uint256 _scale, uint256 _maxDecimals) internal pure returns (string memory str) {
		uint256 _d = _scale > _maxDecimals ? _maxDecimals : _scale;
		uint256 _n = _value / 10**(_scale > _d ? _scale - _d : 0);
		if (_n == 0) {
			return "0";
		}
		uint256 _digits = 1;
		uint256 _tmp = _n;
		while (_tmp > 9) {
			_tmp /= 10;
			_digits++;
		}
		_tmp = _digits > _d ? _digits : _d + 1;
		uint256 _offset = (_tmp > _d + 1 ? _tmp - _d - 1 > _d ? _d : _tmp - _d - 1 : 0);
		for (uint256 i = 0; i < _tmp - _offset; i++) {
			uint256 _dec = i < _tmp - _digits ? 0 : (_n / (10**(_tmp - i - 1))) % 10;
			bytes memory _char = new bytes(1);
			_char[0] = bytes1(uint8(_dec) + 48);
			str = string(abi.encodePacked(str, string(_char)));
			if (i < _tmp - _d - 1) {
				if ((i + 1) % 3 == (_tmp - _d) % 3) {
					str = string(abi.encodePacked(str, ","));
				}
			} else {
				if ((_n / 10**_offset) % 10**(_tmp - _offset - i - 1) == 0) {
					break;
				} else if (i == _tmp - _d - 1) {
					str = string(abi.encodePacked(str, "."));
				}
			}
		}
	}
}

Contract Security Audit

Contract ABI

[{"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":[],"name":"additionalInfo","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"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":"creator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creatorFee","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"discord","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialMarketCap","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"},{"internalType":"uint256","name":"_initialMarketCap","type":"uint256"},{"internalType":"uint256","name":"_upperMarketCap","type":"uint256"},{"internalType":"uint256","name":"_creatorFee","type":"uint256"},{"internalType":"uint256","name":"_transferLimit","type":"uint256"},{"internalType":"uint256","name":"_transferLimitTime","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"lock","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":"position","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"source","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"team","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"telegram","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"},{"inputs":[],"name":"transferLimit","outputs":[{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"until","type":"uint256"},{"internalType":"bool","name":"active","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"twitter","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_website","type":"string"},{"internalType":"string","name":"_twitter","type":"string"},{"internalType":"string","name":"_telegram","type":"string"},{"internalType":"string","name":"_discord","type":"string"},{"internalType":"string","name":"_info","type":"string"}],"name":"updateAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_discord","type":"string"}],"name":"updateDiscord","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_info","type":"string"}],"name":"updateInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_telegram","type":"string"}],"name":"updateTelegram","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_twitter","type":"string"}],"name":"updateTwitter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_website","type":"string"}],"name":"updateWebsite","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upperMarketCap","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"website","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

608060405234801561000f575f80fd5b506131868061001d5f395ff3fe6080604052600436106101e6575f3560e01c806367e828bf11610108578063bdaaa6401161009d578063e88958dc1161006d578063e88958dc14610544578063e8bd71e114610558578063f1b54ff91461056c578063f83d08ba1461058b578063f94325171461059f575f80fd5b8063bdaaa640146104b5578063beb0a416146104c9578063d3f64664146104dd578063dd62ed3e146104fc575f80fd5b806397d6c43c116100d857806397d6c43c14610444578063a9059cbb14610463578063ab29511b14610482578063abfaeee0146104a1575f80fd5b806367e828bf146103c657806370a08231146103da57806385f2aef21461040e57806395d89b4114610430575f80fd5b80632b0f17621161017e5780634063c8651161014e5780634063c8651461036b57806347ecb6651461037f57806353f8b3031461039357806367475859146103a7575f80fd5b80632b0f1762146102ff578063313ce567146103125780633b5f1935146103385780634000aea01461034c575f80fd5b806316f0115b116101b957806316f0115b1461028e57806318160ddd146102ab57806323b872dd146102bf578063246d84e0146102de575f80fd5b806302d05d3f146101ea57806306fdde031461022057806309218e9114610241578063095ea7b31461025f575b5f80fd5b3480156101f5575f80fd5b506004546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022b575f80fd5b506102346105d0565b6040516102179190611f34565b34801561024c575f80fd5b50600d545b604051908152602001610217565b34801561026a575f80fd5b5061027e610279366004611f7d565b61065b565b6040519015158152602001610217565b348015610299575f80fd5b506003546001600160a01b0316610203565b3480156102b6575f80fd5b50600554610251565b3480156102ca575f80fd5b5061027e6102d9366004611fa7565b610670565b3480156102e9575f80fd5b506102fd6102f8366004612082565b6106ed565b005b6102fd61030d3660046120bc565b610713565b34801561031d575f80fd5b50610326601281565b60405160ff9091168152602001610217565b348015610343575f80fd5b5061023461091e565b348015610357575f80fd5b5061027e610366366004612162565b610956565b348015610376575f80fd5b506102346109f7565b34801561038a575f80fd5b50610234610a8a565b34801561039e575f80fd5b506102fd610a9c565b3480156103b2575f80fd5b506102fd6103c1366004612082565b610c5e565b3480156103d1575f80fd5b50610234610c80565b3480156103e5575f80fd5b506102516103f43660046121e4565b6001600160a01b03165f908152600c602052604090205490565b348015610419575f80fd5b5060025461010090046001600160a01b0316610203565b34801561043b575f80fd5b50610234610c9c565b34801561044f575f80fd5b506102fd61045e3660046121ff565b610ca9565b34801561046e575f80fd5b5061027e61047d366004611f7d565b610d07565b34801561048d575f80fd5b506102fd61049c366004612082565b610d13565b3480156104ac575f80fd5b50610234610d35565b3480156104c0575f80fd5b50610234610d47565b3480156104d4575f80fd5b50610234610d5b565b3480156104e8575f80fd5b506102fd6104f7366004612082565b610d6d565b348015610507575f80fd5b506102516105163660046122c8565b6001600160a01b039182165f908152600c602090815260408083209390941682526001909201909152205490565b34801561054f575f80fd5b50610234610d8f565b348015610563575f80fd5b50610234610dbc565b348015610577575f80fd5b506102fd610586366004612082565b610dce565b348015610596575f80fd5b506102fd610df0565b3480156105aa575f80fd5b506105b3610e1a565b604080519384526020840192909252151590820152606001610217565b5f80546105dc906122ff565b80601f0160208091040260200160405190810160405280929190818152602001828054610608906122ff565b80156106535780601f1061062a57610100808354040283529160200191610653565b820191905f5260205f20905b81548152906001019060200180831161063657829003601f168201915b505050505081565b5f610667338484610e36565b90505b92915050565b6001600160a01b0383165f908152600c60209081526040808320338452600101909152812054828110156106a2575f80fd5b5f1981146106d7576001600160a01b0385165f908152600c602090815260408083203384526001019091529020805484900390555b6106e2858585610ea1565b9150505b9392505050565b6004546001600160a01b03163314610703575f80fd5b601161070f828261237a565b5050565b60025460ff1615610722575f80fd5b6005541561072e575f80fd5b5f885111801561074057506020885111155b610748575f80fd5b5f875111801561075a57506020875111155b610762575f80fd5b662386f26fc10000861015801561078757506d314dc6448d9338c15b0a000000008611155b61078f575f80fd5b5f8511801561079d57508484115b6107a5575f80fd5b6107b2600a6103e861245e565b8311156107bd575f80fd5b620151808111156107cc575f80fd5b6040516107d890611f05565b604051809103905ff0801580156107f1573d5f803e3d5ffd5b5060028054610100600160a81b0319166101006001600160a01b039384168102919091179182905560405163189acdbd60e31b81528c8416600482015291049091169063c4d66de8906024015f604051808303815f87803b158015610854575f80fd5b505af1158015610866573d5f803e3d5ffd5b5050600480546001600160a01b0319166001600160a01b038d16179055505f9050610891898261237a565b50600161089e888261237a565b506005869055305f818152600c602090815260408083208a9055518981527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600685905560078490556009839055610901858585610f6c565b600a8290556109108142612471565b600b55505050505050505050565b6060610932600260040154601260056114f4565b6040516020016109429190612484565b604051602081830303815290604052905090565b5f610962338686610ea1565b50843b63ffffffff8116156109eb57604051636be32e7360e01b81526001600160a01b03871690636be32e73906109a39033908990899089906004016124ab565b6020604051808303815f875af11580156109bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e391906124f2565b6109eb575f80fd5b50600195945050505050565b606060026010018054610a09906122ff565b80601f0160208091040260200160405190810160405280929190818152602001828054610a35906122ff565b8015610a805780601f10610a5757610100808354040283529160200191610a80565b820191905f5260205f20905b815481529060010190602001808311610a6357829003601f168201915b5050505050905090565b60606002600e018054610a09906122ff565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b119190612511565b9050806001600160a01b031663fc6f786560405180608001604052806002600b01548152602001610b506002546001600160a01b036101009091041690565b6001600160a01b0390811682526001600160801b0360208084018290526040938401829052835160e087901b6001600160e01b031916815285516004820152908501519092166024830152918301518216604482015260609092015116606482015260840160408051808303815f875af1158015610bd0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf4919061252c565b505060025f0160019054906101000a90046001600160a01b03166001600160a01b031663476343ee6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610c45575f80fd5b505af1158015610c57573d5f803e3d5ffd5b5050505050565b6004546001600160a01b03163314610c74575f80fd5b600f61070f828261237a565b60405180606001604052806036815260200161311b6036913981565b600180546105dc906122ff565b6004546001600160a01b03163314610cbf575f80fd5b600e610ccb868261237a565b50600f610cd8858261237a565b506010610ce5848261237a565b506011610cf2838261237a565b506012610cff828261237a565b505050505050565b5f610667338484610ea1565b6004546001600160a01b03163314610d29575f80fd5b601261070f828261237a565b60606002600d018054610a09906122ff565b6060610932600260050154601260056114f4565b60606002600c018054610a09906122ff565b6004546001600160a01b03163314610d83575f80fd5b601061070f828261237a565b600954606090610dac90610da490606461254e565b6003806114f4565b6040516020016109429190612565565b60606002600f018054610a09906122ff565b6004546001600160a01b03163314610de4575f80fd5b600e61070f828261237a565b60025460ff1615610dff575f80fd5b60055415610e0b575f80fd5b6002805460ff19166001179055565b600a54600b545f8215801590610e2f57508142105b9050909192565b6001600160a01b038381165f818152600c602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b5f808211610ead575f80fd5b5f80610eb7610e1a565b92505091508015610ece5781841115610ece575f80fd5b83610eed876001600160a01b03165f908152600c602052604090205490565b1015610ef7575f80fd5b6001600160a01b038087165f818152600c6020526040808220805489900390559288168082529083902080548801905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f589088815260200190565b60405180910390a350600195945050505050565b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fe59190612511565b90506001600160a01b03808316908216105f61100a8261100460055490565b89611801565b5090507368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110819190612511565b60405163a167129560e01b81526001600160a01b03868116600483015285811660248301526127106044830152919091169063a1671295906064016020604051808303815f875af11580156110d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110fc9190612511565b600380546001600160a01b0319166001600160a01b0392909216918217905560405163f637731d60e01b81526001600160a01b038381166004830152919091169063f637731d906024015f604051808303815f87803b15801561115d575f80fd5b505af115801561116f573d5f803e3d5ffd5b505050505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e89190612511565b90506111fd85826111f860055490565b610e36565b505f6112128461120c60055490565b8b611801565b9150505f6112238561120c60055490565b915050826001600160a01b031663883164566040518061016001604052808861124c578a61124e565b895b6001600160a01b031681526020018815611268578a61126a565b895b6001600160a01b0316815261271060208201526040018861128b578561128d565b845b60020b815260200188156112a157856112a3565b845b60020b8152602001886112d5576103e88c6103e8036112c160055490565b02816112cf576112cf612436565b046112d7565b5f5b81526020018815611307576103e88c6103e8036112f360055490565b028161130157611301612436565b04611309565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b81526004016113499190612589565b6080604051808303815f875af1158015611365573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611389919061264d565b505050600d556001600160a01b03871631156114e8577368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b03166304e45aaf886001600160a01b0316316040518060e001604052808a6001600160a01b031681526020018b6001600160a01b0316815260200161271062ffffff1681526020016114156004546001600160a01b031690565b6001600160a01b0390811682528c8116316020808401919091525f604080850182905260609485019190915280516001600160e01b031960e089901b168152855184166004820152918501518316602483015284015162ffffff16604482015291830151811660648301526080830151608483015260a083015160a483015260c09092015190911660c482015260e40160206040518083038185885af11580156114c1573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114e69190612693565b505b50505050505050505050565b60605f8284116115045783611506565b825b90505f818511611516575f611520565b61152082866126aa565b61152b90600a61279d565b611535908761245e565b9050805f0361156157604051806040016040528060018152602001600360fc1b815250925050506106e6565b6001815b600981111561158d57611579600a8261245e565b905081611585816127a8565b925050611565565b8382116115a45761159f846001612471565b6115a6565b815b90505f6115b4856001612471565b82116115c0575f6115f9565b8460016115cd82856126aa565b6115d791906126aa565b116115f75760016115e886846126aa565b6115f291906126aa565b6115f9565b845b90505f5b61160782846126aa565b8110156117f4575f61161985856126aa565b821061165b57600a600161162d84876126aa565b61163791906126aa565b61164290600a61279d565b61164c908861245e565b61165691906127c0565b61165d565b5f5b6040805160018082528183019092529192505f919060208201818036833701905050905061168c8260306127d3565b60f81b815f815181106116a1576116a16127ec565b60200101906001600160f81b03191690815f1a90535088816040516020016116ca929190612800565b60408051601f19818403018152919052985060016116e889876126aa565b6116f291906126aa565b83101561175357600361170589876126aa565b61170f91906127c0565b600361171c856001612471565b61172691906127c0565b0361174e578860405160200161173c919061282e565b60405160208183030381529060405298505b6117ea565b60018361176086886126aa565b61176a91906126aa565b61177491906126aa565b61177f90600a61279d565b61178a85600a61279d565b611794908961245e565b61179e91906127c0565b5f036117ab5750506117f4565b60016117b789876126aa565b6117c191906126aa565b83036117ea57886040516020016117d89190612852565b60405160208183030381529060405298505b50506001016115fd565b5050505050509392505050565b5f805f61183f866118125784611814565b855b87156118205785611822565b865b61183090600160c01b61245e565b61183a919061254e565b611877565b905061184a816118ba565b915061185760c883612876565b6118619083612897565b915061186c82611bd7565b925050935093915050565b80600260018201045b818110156118b45780915060028182858161189d5761189d612436565b0401816118ac576118ac612436565b049050611880565b50919050565b5f6401000276a36001600160a01b038316108015906118f5575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b61192a5760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106119be57607f810383901c91506119c8565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14611bc857886001600160a01b0316611bad82611bd7565b6001600160a01b03161115611bc25781611bca565b80611bca565b815b9998505050505050505050565b5f805f8360020b12611bec578260020b611bf3565b8260020b5f035b9050620d89e8811115611c2c5760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401611921565b5f816001165f03611c4157600160801b611c53565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611c87576ffff97272373d413259a46990580e213a0260801c5b6004821615611ca6576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611cc5576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611ce4576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611d03576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611d22576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611d41576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611d61576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611d81576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611da1576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611dc1576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611de1576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611e01576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611e21576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611e41576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611e62576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611e82576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611ea1576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611ebe576b048a170391f7dc42444e8fa20260801c5b5f8460020b1315611edd57805f1981611ed957611ed9612436565b0490505b640100000000810615611ef1576001611ef3565b5f5b60ff16602082901c0192505050919050565b61085e806128bd83390190565b5f5b83811015611f2c578181015183820152602001611f14565b50505f910152565b602081525f8251806020840152611f52816040850160208701611f12565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611f7a575f80fd5b50565b5f8060408385031215611f8e575f80fd5b8235611f9981611f66565b946020939093013593505050565b5f805f60608486031215611fb9575f80fd5b8335611fc481611f66565b92506020840135611fd481611f66565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112612008575f80fd5b813567ffffffffffffffff8082111561202357612023611fe5565b604051601f8301601f19908116603f0116810190828211818310171561204b5761204b611fe5565b81604052838152866020858801011115612063575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60208284031215612092575f80fd5b813567ffffffffffffffff8111156120a8575f80fd5b6120b484828501611ff9565b949350505050565b5f805f805f805f805f6101208a8c0312156120d5575f80fd5b89356120e081611f66565b985060208a013567ffffffffffffffff808211156120fc575f80fd5b6121088d838e01611ff9565b995060408c013591508082111561211d575f80fd5b5061212a8c828d01611ff9565b999c989b5098996060810135995060808101359860a0820135985060c0820135975060e0820135965061010090910135945092505050565b5f805f8060608587031215612175575f80fd5b843561218081611f66565b935060208501359250604085013567ffffffffffffffff808211156121a3575f80fd5b818701915087601f8301126121b6575f80fd5b8135818111156121c4575f80fd5b8860208285010111156121d5575f80fd5b95989497505060200194505050565b5f602082840312156121f4575f80fd5b81356106e681611f66565b5f805f805f60a08688031215612213575f80fd5b853567ffffffffffffffff8082111561222a575f80fd5b61223689838a01611ff9565b9650602088013591508082111561224b575f80fd5b61225789838a01611ff9565b9550604088013591508082111561226c575f80fd5b61227889838a01611ff9565b9450606088013591508082111561228d575f80fd5b61229989838a01611ff9565b935060808801359150808211156122ae575f80fd5b506122bb88828901611ff9565b9150509295509295909350565b5f80604083850312156122d9575f80fd5b82356122e481611f66565b915060208301356122f481611f66565b809150509250929050565b600181811c9082168061231357607f821691505b6020821081036118b457634e487b7160e01b5f52602260045260245ffd5b601f82111561237557805f5260205f20601f840160051c810160208510156123565750805b601f840160051c820191505b81811015610c57575f8155600101612362565b505050565b815167ffffffffffffffff81111561239457612394611fe5565b6123a8816123a284546122ff565b84612331565b602080601f8311600181146123db575f84156123c45750858301515b5f19600386901b1c1916600185901b178555610cff565b5f85815260208120601f198616915b82811015612409578886015182559484019460019091019084016123ea565b508582101561242657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261246c5761246c612436565b500490565b8082018082111561066a5761066a61244a565b5f8251612495818460208701611f12565b630408aa8960e31b920191825250600401919050565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f60208284031215612502575f80fd5b815180151581146106e6575f80fd5b5f60208284031215612521575f80fd5b81516106e681611f66565b5f806040838503121561253d575f80fd5b505080516020909101519092909150565b808202811582820484141761066a5761066a61244a565b5f8251612576818460208701611f12565b602560f81b920191825250600101919050565b81516001600160a01b03168152610160810160208301516125b560208401826001600160a01b03169052565b5060408301516125cc604084018262ffffff169052565b5060608301516125e1606084018260020b9052565b5060808301516125f6608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e08301526101008084015181840152506101208084015161263c828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f8060808587031215612660575f80fd5b8451935060208501516001600160801b038116811461267d575f80fd5b6040860151606090960151949790965092505050565b5f602082840312156126a3575f80fd5b5051919050565b8181038181111561066a5761066a61244a565b600181815b808511156126f757815f19048211156126dd576126dd61244a565b808516156126ea57918102915b93841c93908002906126c2565b509250929050565b5f8261270d5750600161066a565b8161271957505f61066a565b816001811461272f576002811461273957612755565b600191505061066a565b60ff84111561274a5761274a61244a565b50506001821b61066a565b5060208310610133831016604e8410600b8410161715612778575081810a61066a565b61278283836126bd565b805f19048211156127955761279561244a565b029392505050565b5f61066783836126ff565b5f600182016127b9576127b961244a565b5060010190565b5f826127ce576127ce612436565b500690565b60ff818116838216019081111561066a5761066a61244a565b634e487b7160e01b5f52603260045260245ffd5b5f8351612811818460208801611f12565b835190830190612825818360208801611f12565b01949350505050565b5f825161283f818460208701611f12565b600b60fa1b920191825250600101919050565b5f8251612863818460208701611f12565b601760f91b920191825250600101919050565b5f8260020b8061288857612888612436565b808360020b0791505092915050565b600282810b9082900b03627fffff198112627fffff8213171561066a5761066a61244a56fe608060405234801561000f575f80fd5b506108418061001d5f395ff3fe60806040526004361061007c575f3560e01c8063894760691161004c5780638947606914610117578063c4d66de814610136578063e086e5ec14610155578063fc0c546a14610169575f80fd5b80633a98ef3914610087578063476343ee146100af5780634c02f62e146100c557806357a858fc146100d9575f80fd5b3661008357005b5f80fd5b348015610092575f80fd5b5061009c60015481565b6040519081526020015b60405180910390f35b3480156100ba575f80fd5b506100c36101a0565b005b3480156100d0575f80fd5b506100c36101bf565b3480156100e4575f80fd5b506100f86100f33660046106f6565b610236565b604080516001600160a01b0390931683526020830191909152016100a6565b348015610122575f80fd5b506100c3610131366004610721565b61026b565b348015610141575f80fd5b506100c3610150366004610721565b610524565b348015610160575f80fd5b506100c36105ad565b348015610174575f80fd5b50600254610188906001600160a01b031681565b6040516001600160a01b0390911681526020016100a6565b6101a86101bf565b6002546101bd906001600160a01b031661026b565b565b6101bd7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610212573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101319190610743565b5f8181548110610244575f80fd5b5f918252602090912060029091020180546001909101546001600160a01b03909116915082565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e09190610743565b9050806001600160a01b0316826001600160a01b0316036103c0576040516370a0823160e01b81523060048201526001600160a01b03821690632e1a7d4d9082906370a0823190602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610369919061075e565b6040518263ffffffff1660e01b815260040161038791815260200190565b5f604051808303815f87803b15801561039e575f80fd5b505af11580156103b0573d5f803e3d5ffd5b505050506103bc6105ad565b5050565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610404573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610428919061075e565b9050801561051f575f5b5f5481101561051d575f80828154811061044e5761044e610775565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03908116808452600192830154948401859052915492945088169263a9059cbb929061049d908861079d565b6104a791906107ba565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156104ef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051391906107d9565b5050600101610432565b505b505050565b60015415610530575f80fd5b600280546001600160a01b0319163317905561054d81600a610648565b61056c73e6c791fbd46db3f4eda5f7bb76474f4fa530733e6006610648565b61058b7312fe289b7588de4ee1f1392ce086be100f7165ed6003610648565b6105aa73c28c9da0f8a500dffc16ff09a3dd1cc4c530d3466001610648565b50565b4780156105aa575f5b5f548110156103bc575f8082815481106105d2576105d2610775565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03168083526001918201549383018490529054919350916108fc919061061b908761079d565b61062591906107ba565b6040518115909202915f818181858888f15050600190940193506105b692505050565b604080518082019091526001600160a01b038381168252602082018381525f80546001808201835582805294517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563600290920291820180546001600160a01b031916919095161790935590517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e564909201919091558154839291906106ed9084906107f8565b90915550505050565b5f60208284031215610706575f80fd5b5035919050565b6001600160a01b03811681146105aa575f80fd5b5f60208284031215610731575f80fd5b813561073c8161070d565b9392505050565b5f60208284031215610753575f80fd5b815161073c8161070d565b5f6020828403121561076e575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107b4576107b4610789565b92915050565b5f826107d457634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156107e9575f80fd5b8151801515811461073c575f80fd5b808201808211156107b4576107b461078956fea2646970667358221220be611567e38659c4618099278709c6212c8bc0adfaa2dea0b5bc0c8df813605564736f6c6343000816003343726561746564207769746820426f73736d616e27732042616b657279202862616b6572792e6d756c6c65742e6361706974616c2921a26469706673582212205d6dab18e9eacc3082b8d3c717dee069d294ceae91c5c18dd5a379f5ed8ddcb264736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101e6575f3560e01c806367e828bf11610108578063bdaaa6401161009d578063e88958dc1161006d578063e88958dc14610544578063e8bd71e114610558578063f1b54ff91461056c578063f83d08ba1461058b578063f94325171461059f575f80fd5b8063bdaaa640146104b5578063beb0a416146104c9578063d3f64664146104dd578063dd62ed3e146104fc575f80fd5b806397d6c43c116100d857806397d6c43c14610444578063a9059cbb14610463578063ab29511b14610482578063abfaeee0146104a1575f80fd5b806367e828bf146103c657806370a08231146103da57806385f2aef21461040e57806395d89b4114610430575f80fd5b80632b0f17621161017e5780634063c8651161014e5780634063c8651461036b57806347ecb6651461037f57806353f8b3031461039357806367475859146103a7575f80fd5b80632b0f1762146102ff578063313ce567146103125780633b5f1935146103385780634000aea01461034c575f80fd5b806316f0115b116101b957806316f0115b1461028e57806318160ddd146102ab57806323b872dd146102bf578063246d84e0146102de575f80fd5b806302d05d3f146101ea57806306fdde031461022057806309218e9114610241578063095ea7b31461025f575b5f80fd5b3480156101f5575f80fd5b506004546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022b575f80fd5b506102346105d0565b6040516102179190611f34565b34801561024c575f80fd5b50600d545b604051908152602001610217565b34801561026a575f80fd5b5061027e610279366004611f7d565b61065b565b6040519015158152602001610217565b348015610299575f80fd5b506003546001600160a01b0316610203565b3480156102b6575f80fd5b50600554610251565b3480156102ca575f80fd5b5061027e6102d9366004611fa7565b610670565b3480156102e9575f80fd5b506102fd6102f8366004612082565b6106ed565b005b6102fd61030d3660046120bc565b610713565b34801561031d575f80fd5b50610326601281565b60405160ff9091168152602001610217565b348015610343575f80fd5b5061023461091e565b348015610357575f80fd5b5061027e610366366004612162565b610956565b348015610376575f80fd5b506102346109f7565b34801561038a575f80fd5b50610234610a8a565b34801561039e575f80fd5b506102fd610a9c565b3480156103b2575f80fd5b506102fd6103c1366004612082565b610c5e565b3480156103d1575f80fd5b50610234610c80565b3480156103e5575f80fd5b506102516103f43660046121e4565b6001600160a01b03165f908152600c602052604090205490565b348015610419575f80fd5b5060025461010090046001600160a01b0316610203565b34801561043b575f80fd5b50610234610c9c565b34801561044f575f80fd5b506102fd61045e3660046121ff565b610ca9565b34801561046e575f80fd5b5061027e61047d366004611f7d565b610d07565b34801561048d575f80fd5b506102fd61049c366004612082565b610d13565b3480156104ac575f80fd5b50610234610d35565b3480156104c0575f80fd5b50610234610d47565b3480156104d4575f80fd5b50610234610d5b565b3480156104e8575f80fd5b506102fd6104f7366004612082565b610d6d565b348015610507575f80fd5b506102516105163660046122c8565b6001600160a01b039182165f908152600c602090815260408083209390941682526001909201909152205490565b34801561054f575f80fd5b50610234610d8f565b348015610563575f80fd5b50610234610dbc565b348015610577575f80fd5b506102fd610586366004612082565b610dce565b348015610596575f80fd5b506102fd610df0565b3480156105aa575f80fd5b506105b3610e1a565b604080519384526020840192909252151590820152606001610217565b5f80546105dc906122ff565b80601f0160208091040260200160405190810160405280929190818152602001828054610608906122ff565b80156106535780601f1061062a57610100808354040283529160200191610653565b820191905f5260205f20905b81548152906001019060200180831161063657829003601f168201915b505050505081565b5f610667338484610e36565b90505b92915050565b6001600160a01b0383165f908152600c60209081526040808320338452600101909152812054828110156106a2575f80fd5b5f1981146106d7576001600160a01b0385165f908152600c602090815260408083203384526001019091529020805484900390555b6106e2858585610ea1565b9150505b9392505050565b6004546001600160a01b03163314610703575f80fd5b601161070f828261237a565b5050565b60025460ff1615610722575f80fd5b6005541561072e575f80fd5b5f885111801561074057506020885111155b610748575f80fd5b5f875111801561075a57506020875111155b610762575f80fd5b662386f26fc10000861015801561078757506d314dc6448d9338c15b0a000000008611155b61078f575f80fd5b5f8511801561079d57508484115b6107a5575f80fd5b6107b2600a6103e861245e565b8311156107bd575f80fd5b620151808111156107cc575f80fd5b6040516107d890611f05565b604051809103905ff0801580156107f1573d5f803e3d5ffd5b5060028054610100600160a81b0319166101006001600160a01b039384168102919091179182905560405163189acdbd60e31b81528c8416600482015291049091169063c4d66de8906024015f604051808303815f87803b158015610854575f80fd5b505af1158015610866573d5f803e3d5ffd5b5050600480546001600160a01b0319166001600160a01b038d16179055505f9050610891898261237a565b50600161089e888261237a565b506005869055305f818152600c602090815260408083208a9055518981527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600685905560078490556009839055610901858585610f6c565b600a8290556109108142612471565b600b55505050505050505050565b6060610932600260040154601260056114f4565b6040516020016109429190612484565b604051602081830303815290604052905090565b5f610962338686610ea1565b50843b63ffffffff8116156109eb57604051636be32e7360e01b81526001600160a01b03871690636be32e73906109a39033908990899089906004016124ab565b6020604051808303815f875af11580156109bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e391906124f2565b6109eb575f80fd5b50600195945050505050565b606060026010018054610a09906122ff565b80601f0160208091040260200160405190810160405280929190818152602001828054610a35906122ff565b8015610a805780601f10610a5757610100808354040283529160200191610a80565b820191905f5260205f20905b815481529060010190602001808311610a6357829003601f168201915b5050505050905090565b60606002600e018054610a09906122ff565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b119190612511565b9050806001600160a01b031663fc6f786560405180608001604052806002600b01548152602001610b506002546001600160a01b036101009091041690565b6001600160a01b0390811682526001600160801b0360208084018290526040938401829052835160e087901b6001600160e01b031916815285516004820152908501519092166024830152918301518216604482015260609092015116606482015260840160408051808303815f875af1158015610bd0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf4919061252c565b505060025f0160019054906101000a90046001600160a01b03166001600160a01b031663476343ee6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610c45575f80fd5b505af1158015610c57573d5f803e3d5ffd5b5050505050565b6004546001600160a01b03163314610c74575f80fd5b600f61070f828261237a565b60405180606001604052806036815260200161311b6036913981565b600180546105dc906122ff565b6004546001600160a01b03163314610cbf575f80fd5b600e610ccb868261237a565b50600f610cd8858261237a565b506010610ce5848261237a565b506011610cf2838261237a565b506012610cff828261237a565b505050505050565b5f610667338484610ea1565b6004546001600160a01b03163314610d29575f80fd5b601261070f828261237a565b60606002600d018054610a09906122ff565b6060610932600260050154601260056114f4565b60606002600c018054610a09906122ff565b6004546001600160a01b03163314610d83575f80fd5b601061070f828261237a565b600954606090610dac90610da490606461254e565b6003806114f4565b6040516020016109429190612565565b60606002600f018054610a09906122ff565b6004546001600160a01b03163314610de4575f80fd5b600e61070f828261237a565b60025460ff1615610dff575f80fd5b60055415610e0b575f80fd5b6002805460ff19166001179055565b600a54600b545f8215801590610e2f57508142105b9050909192565b6001600160a01b038381165f818152600c602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b5f808211610ead575f80fd5b5f80610eb7610e1a565b92505091508015610ece5781841115610ece575f80fd5b83610eed876001600160a01b03165f908152600c602052604090205490565b1015610ef7575f80fd5b6001600160a01b038087165f818152600c6020526040808220805489900390559288168082529083902080548801905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f589088815260200190565b60405180910390a350600195945050505050565b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fe59190612511565b90506001600160a01b03808316908216105f61100a8261100460055490565b89611801565b5090507368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110819190612511565b60405163a167129560e01b81526001600160a01b03868116600483015285811660248301526127106044830152919091169063a1671295906064016020604051808303815f875af11580156110d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110fc9190612511565b600380546001600160a01b0319166001600160a01b0392909216918217905560405163f637731d60e01b81526001600160a01b038381166004830152919091169063f637731d906024015f604051808303815f87803b15801561115d575f80fd5b505af115801561116f573d5f803e3d5ffd5b505050505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e89190612511565b90506111fd85826111f860055490565b610e36565b505f6112128461120c60055490565b8b611801565b9150505f6112238561120c60055490565b915050826001600160a01b031663883164566040518061016001604052808861124c578a61124e565b895b6001600160a01b031681526020018815611268578a61126a565b895b6001600160a01b0316815261271060208201526040018861128b578561128d565b845b60020b815260200188156112a157856112a3565b845b60020b8152602001886112d5576103e88c6103e8036112c160055490565b02816112cf576112cf612436565b046112d7565b5f5b81526020018815611307576103e88c6103e8036112f360055490565b028161130157611301612436565b04611309565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b81526004016113499190612589565b6080604051808303815f875af1158015611365573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611389919061264d565b505050600d556001600160a01b03871631156114e8577368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b03166304e45aaf886001600160a01b0316316040518060e001604052808a6001600160a01b031681526020018b6001600160a01b0316815260200161271062ffffff1681526020016114156004546001600160a01b031690565b6001600160a01b0390811682528c8116316020808401919091525f604080850182905260609485019190915280516001600160e01b031960e089901b168152855184166004820152918501518316602483015284015162ffffff16604482015291830151811660648301526080830151608483015260a083015160a483015260c09092015190911660c482015260e40160206040518083038185885af11580156114c1573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114e69190612693565b505b50505050505050505050565b60605f8284116115045783611506565b825b90505f818511611516575f611520565b61152082866126aa565b61152b90600a61279d565b611535908761245e565b9050805f0361156157604051806040016040528060018152602001600360fc1b815250925050506106e6565b6001815b600981111561158d57611579600a8261245e565b905081611585816127a8565b925050611565565b8382116115a45761159f846001612471565b6115a6565b815b90505f6115b4856001612471565b82116115c0575f6115f9565b8460016115cd82856126aa565b6115d791906126aa565b116115f75760016115e886846126aa565b6115f291906126aa565b6115f9565b845b90505f5b61160782846126aa565b8110156117f4575f61161985856126aa565b821061165b57600a600161162d84876126aa565b61163791906126aa565b61164290600a61279d565b61164c908861245e565b61165691906127c0565b61165d565b5f5b6040805160018082528183019092529192505f919060208201818036833701905050905061168c8260306127d3565b60f81b815f815181106116a1576116a16127ec565b60200101906001600160f81b03191690815f1a90535088816040516020016116ca929190612800565b60408051601f19818403018152919052985060016116e889876126aa565b6116f291906126aa565b83101561175357600361170589876126aa565b61170f91906127c0565b600361171c856001612471565b61172691906127c0565b0361174e578860405160200161173c919061282e565b60405160208183030381529060405298505b6117ea565b60018361176086886126aa565b61176a91906126aa565b61177491906126aa565b61177f90600a61279d565b61178a85600a61279d565b611794908961245e565b61179e91906127c0565b5f036117ab5750506117f4565b60016117b789876126aa565b6117c191906126aa565b83036117ea57886040516020016117d89190612852565b60405160208183030381529060405298505b50506001016115fd565b5050505050509392505050565b5f805f61183f866118125784611814565b855b87156118205785611822565b865b61183090600160c01b61245e565b61183a919061254e565b611877565b905061184a816118ba565b915061185760c883612876565b6118619083612897565b915061186c82611bd7565b925050935093915050565b80600260018201045b818110156118b45780915060028182858161189d5761189d612436565b0401816118ac576118ac612436565b049050611880565b50919050565b5f6401000276a36001600160a01b038316108015906118f5575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b61192a5760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106119be57607f810383901c91506119c8565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14611bc857886001600160a01b0316611bad82611bd7565b6001600160a01b03161115611bc25781611bca565b80611bca565b815b9998505050505050505050565b5f805f8360020b12611bec578260020b611bf3565b8260020b5f035b9050620d89e8811115611c2c5760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401611921565b5f816001165f03611c4157600160801b611c53565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611c87576ffff97272373d413259a46990580e213a0260801c5b6004821615611ca6576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611cc5576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611ce4576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611d03576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611d22576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611d41576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611d61576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611d81576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611da1576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611dc1576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611de1576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611e01576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611e21576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611e41576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611e62576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611e82576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611ea1576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611ebe576b048a170391f7dc42444e8fa20260801c5b5f8460020b1315611edd57805f1981611ed957611ed9612436565b0490505b640100000000810615611ef1576001611ef3565b5f5b60ff16602082901c0192505050919050565b61085e806128bd83390190565b5f5b83811015611f2c578181015183820152602001611f14565b50505f910152565b602081525f8251806020840152611f52816040850160208701611f12565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611f7a575f80fd5b50565b5f8060408385031215611f8e575f80fd5b8235611f9981611f66565b946020939093013593505050565b5f805f60608486031215611fb9575f80fd5b8335611fc481611f66565b92506020840135611fd481611f66565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112612008575f80fd5b813567ffffffffffffffff8082111561202357612023611fe5565b604051601f8301601f19908116603f0116810190828211818310171561204b5761204b611fe5565b81604052838152866020858801011115612063575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60208284031215612092575f80fd5b813567ffffffffffffffff8111156120a8575f80fd5b6120b484828501611ff9565b949350505050565b5f805f805f805f805f6101208a8c0312156120d5575f80fd5b89356120e081611f66565b985060208a013567ffffffffffffffff808211156120fc575f80fd5b6121088d838e01611ff9565b995060408c013591508082111561211d575f80fd5b5061212a8c828d01611ff9565b999c989b5098996060810135995060808101359860a0820135985060c0820135975060e0820135965061010090910135945092505050565b5f805f8060608587031215612175575f80fd5b843561218081611f66565b935060208501359250604085013567ffffffffffffffff808211156121a3575f80fd5b818701915087601f8301126121b6575f80fd5b8135818111156121c4575f80fd5b8860208285010111156121d5575f80fd5b95989497505060200194505050565b5f602082840312156121f4575f80fd5b81356106e681611f66565b5f805f805f60a08688031215612213575f80fd5b853567ffffffffffffffff8082111561222a575f80fd5b61223689838a01611ff9565b9650602088013591508082111561224b575f80fd5b61225789838a01611ff9565b9550604088013591508082111561226c575f80fd5b61227889838a01611ff9565b9450606088013591508082111561228d575f80fd5b61229989838a01611ff9565b935060808801359150808211156122ae575f80fd5b506122bb88828901611ff9565b9150509295509295909350565b5f80604083850312156122d9575f80fd5b82356122e481611f66565b915060208301356122f481611f66565b809150509250929050565b600181811c9082168061231357607f821691505b6020821081036118b457634e487b7160e01b5f52602260045260245ffd5b601f82111561237557805f5260205f20601f840160051c810160208510156123565750805b601f840160051c820191505b81811015610c57575f8155600101612362565b505050565b815167ffffffffffffffff81111561239457612394611fe5565b6123a8816123a284546122ff565b84612331565b602080601f8311600181146123db575f84156123c45750858301515b5f19600386901b1c1916600185901b178555610cff565b5f85815260208120601f198616915b82811015612409578886015182559484019460019091019084016123ea565b508582101561242657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261246c5761246c612436565b500490565b8082018082111561066a5761066a61244a565b5f8251612495818460208701611f12565b630408aa8960e31b920191825250600401919050565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f60208284031215612502575f80fd5b815180151581146106e6575f80fd5b5f60208284031215612521575f80fd5b81516106e681611f66565b5f806040838503121561253d575f80fd5b505080516020909101519092909150565b808202811582820484141761066a5761066a61244a565b5f8251612576818460208701611f12565b602560f81b920191825250600101919050565b81516001600160a01b03168152610160810160208301516125b560208401826001600160a01b03169052565b5060408301516125cc604084018262ffffff169052565b5060608301516125e1606084018260020b9052565b5060808301516125f6608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e08301526101008084015181840152506101208084015161263c828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f8060808587031215612660575f80fd5b8451935060208501516001600160801b038116811461267d575f80fd5b6040860151606090960151949790965092505050565b5f602082840312156126a3575f80fd5b5051919050565b8181038181111561066a5761066a61244a565b600181815b808511156126f757815f19048211156126dd576126dd61244a565b808516156126ea57918102915b93841c93908002906126c2565b509250929050565b5f8261270d5750600161066a565b8161271957505f61066a565b816001811461272f576002811461273957612755565b600191505061066a565b60ff84111561274a5761274a61244a565b50506001821b61066a565b5060208310610133831016604e8410600b8410161715612778575081810a61066a565b61278283836126bd565b805f19048211156127955761279561244a565b029392505050565b5f61066783836126ff565b5f600182016127b9576127b961244a565b5060010190565b5f826127ce576127ce612436565b500690565b60ff818116838216019081111561066a5761066a61244a565b634e487b7160e01b5f52603260045260245ffd5b5f8351612811818460208801611f12565b835190830190612825818360208801611f12565b01949350505050565b5f825161283f818460208701611f12565b600b60fa1b920191825250600101919050565b5f8251612863818460208701611f12565b601760f91b920191825250600101919050565b5f8260020b8061288857612888612436565b808360020b0791505092915050565b600282810b9082900b03627fffff198112627fffff8213171561066a5761066a61244a56fe608060405234801561000f575f80fd5b506108418061001d5f395ff3fe60806040526004361061007c575f3560e01c8063894760691161004c5780638947606914610117578063c4d66de814610136578063e086e5ec14610155578063fc0c546a14610169575f80fd5b80633a98ef3914610087578063476343ee146100af5780634c02f62e146100c557806357a858fc146100d9575f80fd5b3661008357005b5f80fd5b348015610092575f80fd5b5061009c60015481565b6040519081526020015b60405180910390f35b3480156100ba575f80fd5b506100c36101a0565b005b3480156100d0575f80fd5b506100c36101bf565b3480156100e4575f80fd5b506100f86100f33660046106f6565b610236565b604080516001600160a01b0390931683526020830191909152016100a6565b348015610122575f80fd5b506100c3610131366004610721565b61026b565b348015610141575f80fd5b506100c3610150366004610721565b610524565b348015610160575f80fd5b506100c36105ad565b348015610174575f80fd5b50600254610188906001600160a01b031681565b6040516001600160a01b0390911681526020016100a6565b6101a86101bf565b6002546101bd906001600160a01b031661026b565b565b6101bd7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610212573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101319190610743565b5f8181548110610244575f80fd5b5f918252602090912060029091020180546001909101546001600160a01b03909116915082565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e09190610743565b9050806001600160a01b0316826001600160a01b0316036103c0576040516370a0823160e01b81523060048201526001600160a01b03821690632e1a7d4d9082906370a0823190602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610369919061075e565b6040518263ffffffff1660e01b815260040161038791815260200190565b5f604051808303815f87803b15801561039e575f80fd5b505af11580156103b0573d5f803e3d5ffd5b505050506103bc6105ad565b5050565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610404573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610428919061075e565b9050801561051f575f5b5f5481101561051d575f80828154811061044e5761044e610775565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03908116808452600192830154948401859052915492945088169263a9059cbb929061049d908861079d565b6104a791906107ba565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156104ef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051391906107d9565b5050600101610432565b505b505050565b60015415610530575f80fd5b600280546001600160a01b0319163317905561054d81600a610648565b61056c73e6c791fbd46db3f4eda5f7bb76474f4fa530733e6006610648565b61058b7312fe289b7588de4ee1f1392ce086be100f7165ed6003610648565b6105aa73c28c9da0f8a500dffc16ff09a3dd1cc4c530d3466001610648565b50565b4780156105aa575f5b5f548110156103bc575f8082815481106105d2576105d2610775565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03168083526001918201549383018490529054919350916108fc919061061b908761079d565b61062591906107ba565b6040518115909202915f818181858888f15050600190940193506105b692505050565b604080518082019091526001600160a01b038381168252602082018381525f80546001808201835582805294517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563600290920291820180546001600160a01b031916919095161790935590517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e564909201919091558154839291906106ed9084906107f8565b90915550505050565b5f60208284031215610706575f80fd5b5035919050565b6001600160a01b03811681146105aa575f80fd5b5f60208284031215610731575f80fd5b813561073c8161070d565b9392505050565b5f60208284031215610753575f80fd5b815161073c8161070d565b5f6020828403121561076e575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107b4576107b4610789565b92915050565b5f826107d457634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156107e9575f80fd5b8151801515811461073c575f80fd5b808201808211156107b4576107b461078956fea2646970667358221220be611567e38659c4618099278709c6212c8bc0adfaa2dea0b5bc0c8df813605564736f6c6343000816003343726561746564207769746820426f73736d616e27732042616b657279202862616b6572792e6d756c6c65742e6361706974616c2921a26469706673582212205d6dab18e9eacc3082b8d3c717dee069d294ceae91c5c18dd5a379f5ed8ddcb264736f6c63430008160033

Deployed Bytecode Sourcemap

3505:16755:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8770:78;;;;;;;;;;-1:-1:-1;8831:12:0;;-1:-1:-1;;;;;8831:12:0;8770:78;;;-1:-1:-1;;;;;287:32:1;;;269:51;;257:2;242:18;8770:78:0;;;;;;;;4280:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9360:84::-;;;;;;;;;;-1:-1:-1;9424:15:0;;9360:84;;;1133:25:1;;;1121:2;1106:18;9360:84:0;987:177:1;7950:132:0;;;;;;;;;;-1:-1:-1;7950:132:0;;;;;:::i;:::-;;:::i;:::-;;;1790:14:1;;1783:22;1765:41;;1753:2;1738:18;7950:132:0;1625:187:1;8940:72:0;;;;;;;;;;-1:-1:-1;8998:9:0;;-1:-1:-1;;;;;8998:9:0;8940:72;;9017:86;;;;;;;;;;-1:-1:-1;9082:16:0;;9017:86;;8087:347;;;;;;;;;;-1:-1:-1;8087:347:0;;;;;:::i;:::-;;:::i;7298:102::-;;;;;;;;;;-1:-1:-1;7298:102:0;;;;;:::i;:::-;;:::i;:::-;;5369:1284;;;;;;:::i;:::-;;:::i;4326:35::-;;;;;;;;;;;;4359:2;4326:35;;;;;4730:4:1;4718:17;;;4700:36;;4688:2;4673:18;4326:35:0;4558:184:1;9449:156:0;;;;;;;;;;;;;:::i;8439:323::-;;;;;;;;;;-1:-1:-1;8439:323:0;;;;;:::i;:::-;;:::i;10498:100::-;;;;;;;;;;;;;:::i;10314:88::-;;;;;;;;;;;;;:::i;7510:306::-;;;;;;;;;;;;;:::i;7080:102::-;;;;;;;;;;-1:-1:-1;7080:102:0;;;;;:::i;:::-;;:::i;4367:88::-;;;;;;;;;;;;;:::i;9108:106::-;;;;;;;;;;-1:-1:-1;9108:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;9184:17:0;9163:7;9184:17;;;:10;:17;;;;;:25;;9108:106;8854:81;;;;;;;;;;-1:-1:-1;8920:4:0;:9;;;;-1:-1:-1;;;;;8920:9:0;8854:81;;4302:20;;;;;;;;;;;;;:::i;6658:310::-;;;;;;;;;;-1:-1:-1;6658:310:0;;;;;:::i;:::-;;:::i;7821:124::-;;;;;;;;;;-1:-1:-1;7821:124:0;;;;;:::i;:::-;;:::i;7405:100::-;;;;;;;;;;-1:-1:-1;7405:100:0;;;;;:::i;:::-;;:::i;10223:86::-;;;;;;;;;;;;;:::i;9610:152::-;;;;;;;;;;;;;:::i;10132:86::-;;;;;;;;;;;;;:::i;7187:106::-;;;;;;;;;;-1:-1:-1;7187:106:0;;;;;:::i;:::-;;:::i;9219:136::-;;;;;;;;;;-1:-1:-1;9219:136:0;;;;;:::i;:::-;-1:-1:-1;;;;;9313:17:0;;;9292:7;9313:17;;;:10;:17;;;;;;;;:37;;;;;;:27;;;;:37;;;;;;9219:136;9767:146;;;;;;;;;;;;;:::i;10407:86::-;;;;;;;;;;;;;:::i;6973:102::-;;;;;;;;;;-1:-1:-1;6973:102:0;;;;;:::i;:::-;;:::i;5252:111::-;;;;;;;;;;;;;:::i;9918:209::-;;;;;;;;;;;;;:::i;:::-;;;;7537:25:1;;;7593:2;7578:18;;7571:34;;;;7648:14;7641:22;7621:18;;;7614:50;7525:2;7510:18;9918:209:0;7341:329:1;4280:18:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7950:132::-;8020:4;8038:39;8047:10;8059:8;8069:7;8038:8;:39::i;:::-;8031:46;;7950:132;;;;;:::o;8087:347::-;-1:-1:-1;;;;;9313:17:0;;8172:4;9313:17;;;:10;:17;;;;;;;;8237:10;9313:37;;:27;;:37;;;;;;8276:7;8262:10;:21;;8254:30;;;;;;-1:-1:-1;;8294:10:0;:22;8290:92;;-1:-1:-1;;;;;8325:17:0;;;;;;:10;:17;;;;;;;;8353:10;8325:39;;:27;;:39;;;;;:50;;;;;;;8290:92;8394:30;8404:5;8411:3;8416:7;8394:9;:30::i;:::-;8387:37;;;8087:347;;;;;;:::o;7298:102::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;7372:12;:23:::1;7387:8:::0;7372:12;:23:::1;:::i;:::-;;7298:102:::0;:::o;5369:1284::-;5629:4;:11;;;5628:12;5620:21;;;;;;9082:16;;5654:18;5646:27;;;;;;5708:1;5692:5;5686:19;:23;:65;;;;;3686:2;5719:5;5713:19;:38;;5686:65;5678:74;;;;;;5789:1;5771:7;5765:21;:25;:69;;;;;3686:2;5800:7;5794:21;:40;;5765:69;5757:78;;;;;;3730:4;5848:12;:26;;:56;;;;;3791:4;5878:12;:26;;5848:56;5840:65;;;;;;5938:1;5918:17;:21;:60;;;;;5961:17;5943:15;:35;5918:60;5910:69;;;;;;6007:22;6027:2;3868:4;6007:22;:::i;:::-;5992:11;:37;;5984:46;;;;;;3930:8;6043:18;:36;;6035:45;;;;;;6097:10;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6085:4:0;:22;;-1:-1:-1;;;;;;6085:22:0;;-1:-1:-1;;;;;6085:22:0;;;;;;;;;;;;;6112:30;;-1:-1:-1;;;6112:30:0;;287:32:1;;;6112:30:0;;;269:51:1;6112:9:0;;;;;;:20;;242:18:1;;6112:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6147:12:0;:23;;-1:-1:-1;;;;;;6147:23:0;-1:-1:-1;;;;;6147:23:0;;;;;-1:-1:-1;;;;6175:12:0;6182:5;-1:-1:-1;6175:12:0;:::i;:::-;-1:-1:-1;6192:6:0;:16;6201:7;6192:6;:16;:::i;:::-;-1:-1:-1;6213:16:0;:31;;;6268:4;6249:25;;;;:10;:25;;;;;;;;:48;;;6307:51;1133:25:1;;;6307:51:0;;1106:18:1;6307:51:0;;;;;;;6363:21;:41;;;6409:19;:37;;;6451:15;:29;;;6485:58;6387:17;6431:15;6469:11;6485:9;:58::i;:::-;6548:18;:35;;;6612:36;6630:18;6612:15;:36;:::i;:::-;6588:21;:60;-1:-1:-1;;;;;;;;;5369:1284:0:o;9449:156::-;9500:13;9551:39;9561:4;:21;;;9584:2;9588:1;9551:9;:39::i;:::-;9534:65;;;;;;;;:::i;:::-;;;;;;;;;;;;;9520:80;;9449:156;:::o;8439:323::-;8534:4;8545:35;8555:10;8567:3;8572:7;8545:9;:35::i;:::-;-1:-1:-1;8626:16:0;;8655:9;;;;8651:91;;8680:55;;-1:-1:-1;;;8680:55:0;;-1:-1:-1;;;;;8680:27:0;;;;;:55;;8708:10;;8720:7;;8729:5;;;;8680:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8672:64;;;;;;-1:-1:-1;8753:4:0;;8439:323;-1:-1:-1;;;;;8439:323:0:o;10498:100::-;10547:13;10574:4;:19;;10567:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10498:100;:::o;10314:88::-;10357:13;10384:4;:13;;10377:20;;;;;:::i;7510:306::-;7554:19;3982:42;-1:-1:-1;;;;;7592:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7554:63;;7622:3;-1:-1:-1;;;;;7622:11:0;;7634:147;;;;;;;;7679:4;:15;;;7634:147;;;;7711:6;8920:4;:9;-1:-1:-1;;;;;8920:9:0;;;;;;8854:81;7711:6;-1:-1:-1;;;;;7634:147:0;;;;;-1:-1:-1;;;;;7634:147:0;;;;;;;;;;;;;;7622:160;;;;;;-1:-1:-1;;;;;;7622:160:0;;;12536:13:1;;7622:160:0;;;12518:32:1;12598:17;;;12592:24;12588:50;;;12566:20;;;12559:80;12674:17;;;12668:24;12783:21;;12761:20;;;12754:51;12865:4;12853:17;;;12847:24;12843:33;12821:20;;;12814:63;12490:19;;7622:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7787:4;:9;;;;;;;;;;-1:-1:-1;;;;;7787:9:0;-1:-1:-1;;;;;7787:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7549:267;7510:306::o;7080:102::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;7154:12;:23:::1;7169:8:::0;7154:12;:23:::1;:::i;4367:88::-:0;;;;;;;;;;;;;;;;;;;:::o;4302:20::-;;;;;;;:::i;6658:310::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;6822:12;:23:::1;6837:8:::0;6822:12;:23:::1;:::i;:::-;-1:-1:-1::0;6850:12:0;:23:::1;6865:8:::0;6850:12;:23:::1;:::i;:::-;-1:-1:-1::0;6878:13:0;:25:::1;6894:9:::0;6878:13;:25:::1;:::i;:::-;-1:-1:-1::0;6908:12:0;:23:::1;6923:8:::0;6908:12;:23:::1;:::i;:::-;-1:-1:-1::0;6936:19:0;:27:::1;6958:5:::0;6936:19;:27:::1;:::i;:::-;;6658:310:::0;;;;;:::o;7821:124::-;7887:4;7905:35;7915:10;7927:3;7932:7;7905:9;:35::i;7405:100::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;7473:19;:27:::1;7495:5:::0;7473:19;:27:::1;:::i;10223:86::-:0;10265:13;10292:4;:12;;10285:19;;;;;:::i;9610:152::-;9659:13;9710:37;9720:4;:19;;;9741:2;9745:1;9710:9;:37::i;10132:86::-;10174:13;10201:4;:12;;10194:19;;;;;:::i;7187:106::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;7263:13;:25:::1;7279:9:::0;7263:13;:25:::1;:::i;9767:146::-:0;9873:15;;9812:13;;9863:38;;9873:21;;9891:3;9873:21;:::i;:::-;9896:1;9899;9863:9;:38::i;:::-;9846:61;;;;;;;;:::i;10407:86::-;10449:13;10476:4;:12;;10469:19;;;;;:::i;6973:102::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;7047:12;:23:::1;7062:8:::0;7047:12;:23:::1;:::i;5252:111::-:0;5291:4;:11;;;5290:12;5282:21;;;;;;9082:16;;5316:18;5308:27;;;;;;5340:4;:18;;-1:-1:-1;;5340:18:0;5354:4;5340:18;;;5252:111::o;9918:209::-;10020:18;;10051:21;;9964:13;10086:9;;;;;:36;;;10117:5;10099:15;:23;10086:36;10077:45;;9918:209;;;:::o;12250:212::-;-1:-1:-1;;;;;12348:18:0;;;12337:4;12348:18;;;:10;:18;;;;;;;;:38;;;;;;:28;;;;:38;;;;;:48;;;12406:35;1133:25:1;;;12337:4:0;;12348:38;:18;12406:35;;1106:18:1;12406:35:0;;;;;;;-1:-1:-1;12453:4:0;12250:212;;;;;:::o;12468:434::-;12550:4;12595:1;12585:7;:11;12577:20;;;;;;12604:14;12622:12;12638:15;:13;:15::i;:::-;12603:50;;;;;12663:7;12659:53;;;12698:6;12687:7;:17;;12679:26;;;;;;12745:7;12725:16;12735:5;-1:-1:-1;;;;;9184:17:0;9163:7;9184:17;;;:10;:17;;;;;:25;;9108:106;12725:16;:27;;12717:36;;;;;;-1:-1:-1;;;;;12759:17:0;;;;;;;:10;:17;;;;;;:36;;;;;;;12801:15;;;;;;;;;;:34;;;;;;12846:29;;;;;;12788:7;1133:25:1;;1121:2;1106:18;;987:177;12846:29:0;;;;;;;;-1:-1:-1;12888:4:0;;12468:434;-1:-1:-1;;;;;12468:434:0:o;10605:1639::-;10727:13;10751:4;10727:29;;10762:13;3982:42;-1:-1:-1;;;;;10778:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10762:30;-1:-1:-1;;;;;;10812:13:0;;;;;;;10798:11;10863:68;10812:13;10898;9082:16;;;9017:86;10898:13;10913:17;10863:26;:68::i;:::-;10831:100;;;3982:42;-1:-1:-1;;;;;10957:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10949:57;;-1:-1:-1;;;10949:57:0;;-1:-1:-1;;;;;14139:15:1;;;10949:57:0;;;14121:34:1;14191:15;;;14171:18;;;14164:43;11000:5:0;14223:18:1;;;14216:49;10949:36:0;;;;;;;14056:18:1;;10949:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10937:9;:69;;-1:-1:-1;;;;;;10937:69:0;-1:-1:-1;;;;;10937:69:0;;;;;;;;;11012:42;;-1:-1:-1;;;11012:42:0;;-1:-1:-1;;;;;287:32:1;;;11012:42:0;;;269:51:1;11012:23:0;;;;;;;242:18:1;;11012:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11060:19;3982:42;-1:-1:-1;;;;;11098:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11060:63;;11129:44;11138:5;11153:3;11159:13;9082:16;;;9017:86;11159:13;11129:8;:44::i;:::-;;11183:14;11201:68;11228:6;11236:13;9082:16;;;9017:86;11236:13;11251:17;11201:26;:68::i;:::-;11179:90;;;11279:14;11297:66;11324:6;11332:13;9082:16;;;9017:86;11297:66;11275:88;;;11395:3;-1:-1:-1;;;;;11395:8:0;;11404:526;;;;;;;;11446:6;:22;;11463:5;11446:22;;;11455:5;11446:22;-1:-1:-1;;;;;11404:526:0;;;;;11484:6;11483:7;:23;;11501:5;11483:23;;;11493:5;11483:23;-1:-1:-1;;;;;11404:526:0;;;11518:5;11404:526;;;;;;11541:6;:28;;11561:8;11541:28;;;11550:8;11541:28;11404:526;;;;;;11588:6;11587:7;:29;;11608:8;11587:29;;;11597:8;11587:29;11404:526;;;;;;11639:6;:83;;3868:4;11690:11;3868:4;11670:31;11653:13;9082:16;;;9017:86;11653:13;:49;:69;;;;;:::i;:::-;;11639:83;;;11648:1;11639:83;11404:526;;;;11746:6;11745:7;:83;;3868:4;11796:11;3868:4;11776:31;11759:13;9082:16;;;9017:86;11759:13;:49;:69;;;;;:::i;:::-;;11745:83;;;11755:1;11745:83;11404:526;;;;11847:1;11404:526;;;;11867:1;11404:526;;;;11886:5;-1:-1:-1;;;;;11404:526:0;;;;;11908:15;11404:526;;;11395:536;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;11370:15:0;11369:562;-1:-1:-1;;;;;11941:13:0;;;:17;11937:298;;3982:42;-1:-1:-1;;;;;11967:23:0;;11997:5;-1:-1:-1;;;;;11997:13:0;;12012:215;;;;;;;;12059:5;-1:-1:-1;;;;;12012:215:0;;;;;12082:5;-1:-1:-1;;;;;12012:215:0;;;;;12100:5;12012:215;;;;;;12124:9;8831:12;;-1:-1:-1;;;;;8831:12:0;;8770:78;12124:9;-1:-1:-1;;;;;12012:215:0;;;;;12151:13;;;;12012:215;;;;;;;;-1:-1:-1;12012:215:0;;;;;;;;;;;;;;;11967:261;;-1:-1:-1;;;;;;11967:261:0;;;;;;;16585:13:1;;16581:22;;11967:261:0;;;16563:41:1;16652:17;;;16646:24;16642:33;;16620:20;;;16613:63;16724:17;;16718:24;16744:8;16714:39;16692:20;;;16685:69;16802:17;;;16796:24;16792:33;;16770:20;;;16763:63;16882:4;16870:17;;16864:24;16842:20;;;16835:54;16543:3;16933:17;;16927:24;16905:20;;;16898:54;17012:4;17000:17;;;16994:24;16990:33;;;16968:20;;;16961:63;16497:19;;11967:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11937:298;10711:1529;;;;;;;10605:1639;;;:::o;19154:1103::-;19250:17;19274:10;19296:12;19287:6;:21;:45;;19326:6;19287:45;;;19311:12;19287:45;19274:58;;19337:10;19373:2;19364:6;:11;:29;;19392:1;19364:29;;;19378:11;19387:2;19378:6;:11;:::i;:::-;19359:35;;:2;:35;:::i;:::-;19350:44;;:6;:44;:::i;:::-;19337:57;;19403:2;19409:1;19403:7;19399:35;;19418:10;;;;;;;;;;;;;-1:-1:-1;;;19418:10:0;;;;;;;;;19399:35;19456:1;19477:2;19484:54;19498:1;19491:4;:8;19484:54;;;19507:10;19515:2;19507:10;;:::i;:::-;;-1:-1:-1;19523:9:0;;;;:::i;:::-;;;;19484:54;;;19559:2;19549:7;:12;:31;;19574:6;:2;19579:1;19574:6;:::i;:::-;19549:31;;;19564:7;19549:31;19542:38;-1:-1:-1;19585:15:0;19611:6;:2;19616:1;19611:6;:::i;:::-;19604:4;:13;:59;;19662:1;19604:59;;;19636:2;19632:1;19620:9;19636:2;19620:4;:9;:::i;:::-;:13;;;;:::i;:::-;:18;:39;;19658:1;19646:9;19653:2;19646:4;:9;:::i;:::-;:13;;;;:::i;:::-;19620:39;;;19641:2;19620:39;19585:79;;19674:9;19669:584;19693:14;19700:7;19693:4;:14;:::i;:::-;19689:1;:18;19669:584;;;19720:12;19739:14;19746:7;19739:4;:14;:::i;:::-;19735:1;:18;:57;;19790:2;19783:1;19772:8;19779:1;19772:4;:8;:::i;:::-;:12;;;;:::i;:::-;19767:18;;:2;:18;:::i;:::-;19761:25;;:2;:25;:::i;:::-;19760:32;;;;:::i;:::-;19735:57;;;19756:1;19735:57;19819:12;;;19829:1;19819:12;;;;;;;;;19720:72;;-1:-1:-1;19798:18:0;;19819:12;;;;;;;;;;;-1:-1:-1;;19798:33:0;-1:-1:-1;19855:16:0;19861:4;19869:2;19855:16;:::i;:::-;19848:24;;19837:5;19843:1;19837:8;;;;;;;;:::i;:::-;;;;:35;-1:-1:-1;;;;;19837:35:0;;;;;;;;;19908:3;19920:5;19891:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;19891:36:0;;;;;;;;;;-1:-1:-1;19954:1:0;19942:9;19949:2;19942:4;:9;:::i;:::-;:13;;;;:::i;:::-;19938:1;:17;19934:314;;;19997:1;19984:9;19991:2;19984:4;:9;:::i;:::-;19983:15;;;;:::i;:::-;19978:1;19969:5;:1;19973;19969:5;:::i;:::-;19968:11;;;;:::i;:::-;:30;19964:92;;20038:3;20021:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;20008:40;;19964:92;19934:314;;;20126:1;20122;20105:14;20112:7;20105:4;:14;:::i;:::-;:18;;;;:::i;:::-;:22;;;;:::i;:::-;20100:28;;:2;:28;:::i;:::-;20085:11;20089:7;20085:2;:11;:::i;:::-;20080:16;;:2;:16;:::i;:::-;20079:49;;;;:::i;:::-;20132:1;20079:54;20075:167;;20143:5;;;;20075:167;20183:1;20171:9;20178:2;20171:4;:9;:::i;:::-;:13;;;;:::i;:::-;20166:1;:18;20162:80;;20224:3;20207:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;20194:40;;20162:80;-1:-1:-1;;19709:3:0;;19669:584;;;;19269:988;;;;;19154:1103;;;;;:::o;18796:353::-;18900:13;18915:10;18932:17;18960:72;19006:6;:24;;19025:5;19006:24;;;19015:7;19006:24;18977:6;18976:7;:25;;18996:5;18976:25;;;18986:7;18976:25;18966:36;;-1:-1:-1;;;18966:36:0;:::i;:::-;:65;;;;:::i;:::-;18960:5;:72::i;:::-;18932:101;;19045:30;19065:9;19045:19;:30::i;:::-;19038:37;-1:-1:-1;19095:10:0;19102:3;19038:37;19095:10;:::i;:::-;19087:19;;:4;:19;:::i;:::-;19080:26;;19119:25;19139:4;19119:19;:25::i;:::-;19111:33;;18927:222;18796:353;;;;;;:::o;18560:231::-;18663:6;18673:1;18668;18663:6;;18662:12;18697:85;18711:6;18704:4;:13;18697:85;;;18735:4;18726:13;;18774:1;18766:4;18759;18754:2;:9;;;;;:::i;:::-;;:16;18753:22;;;;;:::i;:::-;;18746:29;;18697:85;;;18631:156;18560:231;;;:::o;15129:3426::-;15203:10;4168;-1:-1:-1;;;;;15244:30:0;;;;;;:63;;-1:-1:-1;4225:49:0;-1:-1:-1;;;;;15278:29:0;;;15244:63;15236:77;;;;-1:-1:-1;;;15236:77:0;;21253:2:1;15236:77:0;;;21235:21:1;21292:1;21272:18;;;21265:29;-1:-1:-1;;;21310:18:1;;;21303:31;21351:18;;15236:77:0;;;;;;;;;-1:-1:-1;;;;;15360:2:0;15335:27;;;;-1:-1:-1;;;;;15448:41:0;;15445:1;15441:49;15524:9;;;15582:18;15576:25;;15573:1;15569:33;15636:9;;;15694:10;15688:17;;15685:1;15681:25;15740:9;;;15798:6;15792:13;;15789:1;15785:21;15840:9;;;15898:4;15892:11;;15889:1;15885:19;;;15938:9;;;15996:3;15990:10;;15987:1;15983:18;16035:9;;;16087:10;;;16084:1;16080:18;;;16132:9;;;;16177:10;;;15615;;15719;;;15819;;;15917;16014;;;16111;16200;16234:3;16227:10;;16223:75;;16259:3;16253;:9;16243:5;:20;;16239:24;;16223:75;;;16294:3;16288;:9;16278:5;:20;;16274:24;;16223:75;16384:9;;;16379:3;16375:19;;;16409:11;;;;16467:9;;;;16517;;16508:19;;;16542:11;;;16600:9;16650;;16641:19;;;16675:11;;;16733:9;16783;;16774:19;;;16808:11;;;16866:9;16916;;16907:19;;;16941:11;;;16999:9;17049;;17040:19;;;17074:11;;;17132:9;17182;;17173:19;;;17207:11;;;17265:9;17315;;17306:19;;;17340:11;;;17398:9;17448;;17439:19;;;17473:11;;;17531:9;17581;;17572:19;;;17606:11;;;17664:9;17714;;17705:19;;;17739:11;;;17797:9;17847;;17838:19;;;17872:11;;;17930:9;17980;;17971:19;;;18005:11;;;;18063:9;;;;18113;;18104:19;;;;;16384:9;-1:-1:-1;;16322:17:0;;16344:2;16321:25;16445:10;;;;;;;16435:21;16578:10;;;;;;;16568:21;;;;16711:10;;;;;;;16701:21;;;;16844:10;;;;;;;16834:21;;;;16977:10;;;;;;;16967:21;;;;17110:10;;;;;;;17100:21;;;;17243:10;;;;;;;17233:21;17376:10;;;;;;;17366:21;17509:10;;;;;;;17499:21;17642:10;;;;;;;17632:21;17775:10;;;;;;;17765:21;17908:10;;;;;;;17898:21;18041:10;;;;;;;18031:21;18174:10;;;;;;;18164:21;18229:24;18221:32;;-1:-1:-1;;18284:53:0;;16336:3;18283:62;;;;18390:39;18374:55;;18373:64;;18453:17;;;;;;;;;:92;;18514:12;-1:-1:-1;;;;;18483:43:0;:27;18503:6;18483:19;:27::i;:::-;-1:-1:-1;;;;;18483:43:0;;;:62;;18538:7;18453:92;;18483:62;18529:6;18453:92;;;18473:7;18453:92;18446:99;15129:3426;-1:-1:-1;;;;;;;;;15129:3426:0:o;12909:2215::-;12973:20;13016:15;13041:1;13034:4;:8;;;:57;;13085:4;13078:12;;13034:57;;;13061:4;13054:12;;13053:13;;13034:57;13016:75;-1:-1:-1;4112:9:0;13105:36;;;13097:50;;;;-1:-1:-1;;;13097:50:0;;21582:2:1;13097:50:0;;;21564:21:1;21621:1;21601:18;;;21594:29;-1:-1:-1;;;21639:18:1;;;21632:31;21680:18;;13097:50:0;21380:324:1;13097:50:0;13155:13;13171:7;13181:3;13171:13;13188:1;13171:18;:93;;-1:-1:-1;;;13171:93:0;;;13192:34;13171:93;13155:109;;;-1:-1:-1;13284:3:0;13274:13;;:18;13270:83;;13311:34;13303:42;13350:3;13302:51;13270:83;13373:3;13363:13;;:18;13359:83;;13400:34;13392:42;13439:3;13391:51;13359:83;13462:3;13452:13;;:18;13448:83;;13489:34;13481:42;13528:3;13480:51;13448:83;13551:4;13541:14;;:19;13537:84;;13579:34;13571:42;13618:3;13570:51;13537:84;13641:4;13631:14;;:19;13627:84;;13669:34;13661:42;13708:3;13660:51;13627:84;13731:4;13721:14;;:19;13717:84;;13759:34;13751:42;13798:3;13750:51;13717:84;13821:4;13811:14;;:19;13807:84;;13849:34;13841:42;13888:3;13840:51;13807:84;13911:5;13901:15;;:20;13897:85;;13940:34;13932:42;13979:3;13931:51;13897:85;14002:5;13992:15;;:20;13988:85;;14031:34;14023:42;14070:3;14022:51;13988:85;14093:5;14083:15;;:20;14079:85;;14122:34;14114:42;14161:3;14113:51;14079:85;14184:5;14174:15;;:20;14170:85;;14213:34;14205:42;14252:3;14204:51;14170:85;14275:6;14265:16;;:21;14261:86;;14305:34;14297:42;14344:3;14296:51;14261:86;14367:6;14357:16;;:21;14353:86;;14397:34;14389:42;14436:3;14388:51;14353:86;14459:6;14449:16;;:21;14445:86;;14489:34;14481:42;14528:3;14480:51;14445:86;14551:6;14541:16;;:21;14537:86;;14581:34;14573:42;14620:3;14572:51;14537:86;14643:7;14633:17;;:22;14629:86;;14674:33;14666:41;14712:3;14665:50;14629:86;14735:7;14725:17;;:22;14721:85;;14766:32;14758:40;14803:3;14757:49;14721:85;14826:7;14816:17;;:22;14812:83;;14857:30;14849:38;14892:3;14848:47;14812:83;14915:7;14905:17;;:22;14901:78;;14946:25;14938:33;14976:3;14937:42;14901:78;14998:1;14991:4;:8;;;14987:47;;;15029:5;-1:-1:-1;;15009:25:0;;;;;:::i;:::-;;15001:33;;14987:47;15091:7;15082:5;:17;:22;:30;;15111:1;15082:30;;;15107:1;15082:30;15065:48;;15075:2;15066:5;:11;;15065:48;15042:72;;13000:2120;;12909:2215;;;:::o;-1:-1:-1:-;;;;;;;;:::o;331:250:1:-;416:1;426:113;440:6;437:1;434:13;426:113;;;516:11;;;510:18;497:11;;;490:39;462:2;455:10;426:113;;;-1:-1:-1;;573:1:1;555:16;;548:27;331:250::o;586:396::-;735:2;724:9;717:21;698:4;767:6;761:13;810:6;805:2;794:9;790:18;783:34;826:79;898:6;893:2;882:9;878:18;873:2;865:6;861:15;826:79;:::i;:::-;966:2;945:15;-1:-1:-1;;941:29:1;926:45;;;;973:2;922:54;;586:396;-1:-1:-1;;586:396:1:o;1169:131::-;-1:-1:-1;;;;;1244:31:1;;1234:42;;1224:70;;1290:1;1287;1280:12;1224:70;1169:131;:::o;1305:315::-;1373:6;1381;1434:2;1422:9;1413:7;1409:23;1405:32;1402:52;;;1450:1;1447;1440:12;1402:52;1489:9;1476:23;1508:31;1533:5;1508:31;:::i;:::-;1558:5;1610:2;1595:18;;;;1582:32;;-1:-1:-1;;;1305:315:1:o;1817:456::-;1894:6;1902;1910;1963:2;1951:9;1942:7;1938:23;1934:32;1931:52;;;1979:1;1976;1969:12;1931:52;2018:9;2005:23;2037:31;2062:5;2037:31;:::i;:::-;2087:5;-1:-1:-1;2144:2:1;2129:18;;2116:32;2157:33;2116:32;2157:33;:::i;:::-;1817:456;;2209:7;;-1:-1:-1;;;2263:2:1;2248:18;;;;2235:32;;1817:456::o;2278:127::-;2339:10;2334:3;2330:20;2327:1;2320:31;2370:4;2367:1;2360:15;2394:4;2391:1;2384:15;2410:719;2453:5;2506:3;2499:4;2491:6;2487:17;2483:27;2473:55;;2524:1;2521;2514:12;2473:55;2560:6;2547:20;2586:18;2623:2;2619;2616:10;2613:36;;;2629:18;;:::i;:::-;2704:2;2698:9;2672:2;2758:13;;-1:-1:-1;;2754:22:1;;;2778:2;2750:31;2746:40;2734:53;;;2802:18;;;2822:22;;;2799:46;2796:72;;;2848:18;;:::i;:::-;2888:10;2884:2;2877:22;2923:2;2915:6;2908:18;2969:3;2962:4;2957:2;2949:6;2945:15;2941:26;2938:35;2935:55;;;2986:1;2983;2976:12;2935:55;3050:2;3043:4;3035:6;3031:17;3024:4;3016:6;3012:17;2999:54;3097:1;3090:4;3085:2;3077:6;3073:15;3069:26;3062:37;3117:6;3108:15;;;;;;2410:719;;;;:::o;3134:322::-;3203:6;3256:2;3244:9;3235:7;3231:23;3227:32;3224:52;;;3272:1;3269;3262:12;3224:52;3312:9;3299:23;3345:18;3337:6;3334:30;3331:50;;;3377:1;3374;3367:12;3331:50;3400;3442:7;3433:6;3422:9;3418:22;3400:50;:::i;:::-;3390:60;3134:322;-1:-1:-1;;;;3134:322:1:o;3461:1092::-;3612:6;3620;3628;3636;3644;3652;3660;3668;3676;3729:3;3717:9;3708:7;3704:23;3700:33;3697:53;;;3746:1;3743;3736:12;3697:53;3785:9;3772:23;3804:31;3829:5;3804:31;:::i;:::-;3854:5;-1:-1:-1;3910:2:1;3895:18;;3882:32;3933:18;3963:14;;;3960:34;;;3990:1;3987;3980:12;3960:34;4013:50;4055:7;4046:6;4035:9;4031:22;4013:50;:::i;:::-;4003:60;;4116:2;4105:9;4101:18;4088:32;4072:48;;4145:2;4135:8;4132:16;4129:36;;;4161:1;4158;4151:12;4129:36;;4184:52;4228:7;4217:8;4206:9;4202:24;4184:52;:::i;:::-;3461:1092;;;;-1:-1:-1;4174:62:1;;4283:2;4268:18;;4255:32;;-1:-1:-1;4334:3:1;4319:19;;4306:33;;4386:3;4371:19;;4358:33;;-1:-1:-1;4438:3:1;4423:19;;4410:33;;-1:-1:-1;4490:3:1;4475:19;;4462:33;;-1:-1:-1;4542:3:1;4527:19;;;4514:33;;-1:-1:-1;3461:1092:1;-1:-1:-1;;;3461:1092:1:o;4747:794::-;4835:6;4843;4851;4859;4912:2;4900:9;4891:7;4887:23;4883:32;4880:52;;;4928:1;4925;4918:12;4880:52;4967:9;4954:23;4986:31;5011:5;4986:31;:::i;:::-;5036:5;-1:-1:-1;5088:2:1;5073:18;;5060:32;;-1:-1:-1;5143:2:1;5128:18;;5115:32;5166:18;5196:14;;;5193:34;;;5223:1;5220;5213:12;5193:34;5261:6;5250:9;5246:22;5236:32;;5306:7;5299:4;5295:2;5291:13;5287:27;5277:55;;5328:1;5325;5318:12;5277:55;5368:2;5355:16;5394:2;5386:6;5383:14;5380:34;;;5410:1;5407;5400:12;5380:34;5455:7;5450:2;5441:6;5437:2;5433:15;5429:24;5426:37;5423:57;;;5476:1;5473;5466:12;5423:57;4747:794;;;;-1:-1:-1;;5507:2:1;5499:11;;-1:-1:-1;;;4747:794:1:o;5546:247::-;5605:6;5658:2;5646:9;5637:7;5633:23;5629:32;5626:52;;;5674:1;5671;5664:12;5626:52;5713:9;5700:23;5732:31;5757:5;5732:31;:::i;5798:1145::-;5943:6;5951;5959;5967;5975;6028:3;6016:9;6007:7;6003:23;5999:33;5996:53;;;6045:1;6042;6035:12;5996:53;6085:9;6072:23;6114:18;6155:2;6147:6;6144:14;6141:34;;;6171:1;6168;6161:12;6141:34;6194:50;6236:7;6227:6;6216:9;6212:22;6194:50;:::i;:::-;6184:60;;6297:2;6286:9;6282:18;6269:32;6253:48;;6326:2;6316:8;6313:16;6310:36;;;6342:1;6339;6332:12;6310:36;6365:52;6409:7;6398:8;6387:9;6383:24;6365:52;:::i;:::-;6355:62;;6470:2;6459:9;6455:18;6442:32;6426:48;;6499:2;6489:8;6486:16;6483:36;;;6515:1;6512;6505:12;6483:36;6538:52;6582:7;6571:8;6560:9;6556:24;6538:52;:::i;:::-;6528:62;;6643:2;6632:9;6628:18;6615:32;6599:48;;6672:2;6662:8;6659:16;6656:36;;;6688:1;6685;6678:12;6656:36;6711:52;6755:7;6744:8;6733:9;6729:24;6711:52;:::i;:::-;6701:62;;6816:3;6805:9;6801:19;6788:33;6772:49;;6846:2;6836:8;6833:16;6830:36;;;6862:1;6859;6852:12;6830:36;;6885:52;6929:7;6918:8;6907:9;6903:24;6885:52;:::i;:::-;6875:62;;;5798:1145;;;;;;;;:::o;6948:388::-;7016:6;7024;7077:2;7065:9;7056:7;7052:23;7048:32;7045:52;;;7093:1;7090;7083:12;7045:52;7132:9;7119:23;7151:31;7176:5;7151:31;:::i;:::-;7201:5;-1:-1:-1;7258:2:1;7243:18;;7230:32;7271:33;7230:32;7271:33;:::i;:::-;7323:7;7313:17;;;6948:388;;;;;:::o;7675:380::-;7754:1;7750:12;;;;7797;;;7818:61;;7872:4;7864:6;7860:17;7850:27;;7818:61;7925:2;7917:6;7914:14;7894:18;7891:38;7888:161;;7971:10;7966:3;7962:20;7959:1;7952:31;8006:4;8003:1;7996:15;8034:4;8031:1;8024:15;8186:518;8288:2;8283:3;8280:11;8277:421;;;8324:5;8321:1;8314:16;8368:4;8365:1;8355:18;8438:2;8426:10;8422:19;8419:1;8415:27;8409:4;8405:38;8474:4;8462:10;8459:20;8456:47;;;-1:-1:-1;8497:4:1;8456:47;8552:2;8547:3;8543:12;8540:1;8536:20;8530:4;8526:31;8516:41;;8607:81;8625:2;8618:5;8615:13;8607:81;;;8684:1;8670:16;;8651:1;8640:13;8607:81;;8277:421;8186:518;;;:::o;8880:1345::-;9006:3;9000:10;9033:18;9025:6;9022:30;9019:56;;;9055:18;;:::i;:::-;9084:97;9174:6;9134:38;9166:4;9160:11;9134:38;:::i;:::-;9128:4;9084:97;:::i;:::-;9236:4;;9293:2;9282:14;;9310:1;9305:663;;;;10012:1;10029:6;10026:89;;;-1:-1:-1;10081:19:1;;;10075:26;10026:89;-1:-1:-1;;8837:1:1;8833:11;;;8829:24;8825:29;8815:40;8861:1;8857:11;;;8812:57;10128:81;;9275:944;;9305:663;8133:1;8126:14;;;8170:4;8157:18;;-1:-1:-1;;9341:20:1;;;9459:236;9473:7;9470:1;9467:14;9459:236;;;9562:19;;;9556:26;9541:42;;9654:27;;;;9622:1;9610:14;;;;9489:19;;9459:236;;;9463:3;9723:6;9714:7;9711:19;9708:201;;;9784:19;;;9778:26;-1:-1:-1;;9867:1:1;9863:14;;;9879:3;9859:24;9855:37;9851:42;9836:58;9821:74;;9708:201;-1:-1:-1;;;;;9955:1:1;9939:14;;;9935:22;9922:36;;-1:-1:-1;8880:1345:1:o;10230:127::-;10291:10;10286:3;10282:20;10279:1;10272:31;10322:4;10319:1;10312:15;10346:4;10343:1;10336:15;10362:127;10423:10;10418:3;10414:20;10411:1;10404:31;10454:4;10451:1;10444:15;10478:4;10475:1;10468:15;10494:120;10534:1;10560;10550:35;;10565:18;;:::i;:::-;-1:-1:-1;10599:9:1;;10494:120::o;10619:125::-;10684:9;;;10705:10;;;10702:36;;;10718:18;;:::i;10749:455::-;10981:3;11019:6;11013:13;11035:66;11094:6;11089:3;11082:4;11074:6;11070:17;11035:66;:::i;:::-;-1:-1:-1;;;11123:16:1;;11148:21;;;-1:-1:-1;11196:1:1;11185:13;;10749:455;-1:-1:-1;10749:455:1:o;11209:559::-;-1:-1:-1;;;;;11422:32:1;;11404:51;;11486:2;11471:18;;11464:34;;;11534:2;11529;11514:18;;11507:30;;;11553:18;;11546:34;;;11573:6;11623;11617:3;11602:19;;11589:49;11688:1;11658:22;;;11682:3;11654:32;;;11647:43;;;;11751:2;11730:15;;;-1:-1:-1;;11726:29:1;11711:45;11707:55;;11209:559;-1:-1:-1;;;11209:559:1:o;11773:277::-;11840:6;11893:2;11881:9;11872:7;11868:23;11864:32;11861:52;;;11909:1;11906;11899:12;11861:52;11941:9;11935:16;11994:5;11987:13;11980:21;11973:5;11970:32;11960:60;;12016:1;12013;12006:12;12055:251;12125:6;12178:2;12166:9;12157:7;12153:23;12149:32;12146:52;;;12194:1;12191;12184:12;12146:52;12226:9;12220:16;12245:31;12270:5;12245:31;:::i;12888:245::-;12967:6;12975;13028:2;13016:9;13007:7;13003:23;12999:32;12996:52;;;13044:1;13041;13034:12;12996:52;-1:-1:-1;;13067:16:1;;13123:2;13108:18;;;13102:25;13067:16;;13102:25;;-1:-1:-1;12888:245:1:o;13138:168::-;13211:9;;;13242;;13259:15;;;13253:22;;13239:37;13229:71;;13280:18;;:::i;13311:452::-;13543:3;13581:6;13575:13;13597:66;13656:6;13651:3;13644:4;13636:6;13632:17;13597:66;:::i;:::-;-1:-1:-1;;;13685:16:1;;13710:18;;;-1:-1:-1;13755:1:1;13744:13;;13311:452;-1:-1:-1;13311:452:1:o;14580:1223::-;14798:13;;-1:-1:-1;;;;;80:31:1;68:44;;14766:3;14751:19;;14870:4;14862:6;14858:17;14852:24;14885:54;14933:4;14922:9;14918:20;14904:12;-1:-1:-1;;;;;80:31:1;68:44;;14:104;14885:54;;14988:4;14980:6;14976:17;14970:24;15003:60;15057:4;15046:9;15042:20;15026:14;13849:8;13838:20;13826:33;;13768:97;15003:60;;15112:4;15104:6;15100:17;15094:24;15127:54;15175:4;15164:9;15160:20;15144:14;14559:1;14548:20;14536:33;;14484:91;15127:54;;15230:4;15222:6;15218:17;15212:24;15245:54;15293:4;15282:9;15278:20;15262:14;14559:1;14548:20;14536:33;;14484:91;15245:54;;15355:4;15347:6;15343:17;15337:24;15330:4;15319:9;15315:20;15308:54;15418:4;15410:6;15406:17;15400:24;15393:4;15382:9;15378:20;15371:54;15481:4;15473:6;15469:17;15463:24;15456:4;15445:9;15441:20;15434:54;15507:6;15567:2;15559:6;15555:15;15549:22;15544:2;15533:9;15529:18;15522:50;;15591:6;15646:2;15638:6;15634:15;15628:22;15659:54;15709:2;15698:9;15694:18;15678:14;-1:-1:-1;;;;;80:31:1;68:44;;14:104;15659:54;-1:-1:-1;;15732:6:1;15780:15;;;15774:22;15754:18;;;;15747:50;14580:1223;:::o;15808:489::-;15905:6;15913;15921;15929;15982:3;15970:9;15961:7;15957:23;15953:33;15950:53;;;15999:1;15996;15989:12;15950:53;16028:9;16022:16;16012:26;;16081:2;16070:9;16066:18;16060:25;-1:-1:-1;;;;;16118:5:1;16114:46;16107:5;16104:57;16094:85;;16175:1;16172;16165:12;16094:85;16243:2;16228:18;;16222:25;16287:2;16272:18;;;16266:25;15808:489;;16198:5;;-1:-1:-1;15808:489:1;-1:-1:-1;;;15808:489:1:o;17035:184::-;17105:6;17158:2;17146:9;17137:7;17133:23;17129:32;17126:52;;;17174:1;17171;17164:12;17126:52;-1:-1:-1;17197:16:1;;17035:184;-1:-1:-1;17035:184:1:o;17224:128::-;17291:9;;;17312:11;;;17309:37;;;17326:18;;:::i;17357:416::-;17446:1;17483:5;17446:1;17497:270;17518:7;17508:8;17505:21;17497:270;;;17577:4;17573:1;17569:6;17565:17;17559:4;17556:27;17553:53;;;17586:18;;:::i;:::-;17636:7;17626:8;17622:22;17619:55;;;17656:16;;;;17619:55;17735:22;;;;17695:15;;;;17497:270;;;17501:3;17357:416;;;;;:::o;17778:806::-;17827:5;17857:8;17847:80;;-1:-1:-1;17898:1:1;17912:5;;17847:80;17946:4;17936:76;;-1:-1:-1;17983:1:1;17997:5;;17936:76;18028:4;18046:1;18041:59;;;;18114:1;18109:130;;;;18021:218;;18041:59;18071:1;18062:10;;18085:5;;;18109:130;18146:3;18136:8;18133:17;18130:43;;;18153:18;;:::i;:::-;-1:-1:-1;;18209:1:1;18195:16;;18224:5;;18021:218;;18323:2;18313:8;18310:16;18304:3;18298:4;18295:13;18291:36;18285:2;18275:8;18272:16;18267:2;18261:4;18258:12;18254:35;18251:77;18248:159;;;-1:-1:-1;18360:19:1;;;18392:5;;18248:159;18439:34;18464:8;18458:4;18439:34;:::i;:::-;18509:6;18505:1;18501:6;18497:19;18488:7;18485:32;18482:58;;;18520:18;;:::i;:::-;18558:20;;17778:806;-1:-1:-1;;;17778:806:1:o;18589:131::-;18649:5;18678:36;18705:8;18699:4;18678:36;:::i;18725:135::-;18764:3;18785:17;;;18782:43;;18805:18;;:::i;:::-;-1:-1:-1;18852:1:1;18841:13;;18725:135::o;18865:112::-;18897:1;18923;18913:35;;18928:18;;:::i;:::-;-1:-1:-1;18962:9:1;;18865:112::o;18982:148::-;19070:4;19049:12;;;19063;;;19045:31;;19088:13;;19085:39;;;19104:18;;:::i;19135:127::-;19196:10;19191:3;19187:20;19184:1;19177:31;19227:4;19224:1;19217:15;19251:4;19248:1;19241:15;19267:496;19446:3;19484:6;19478:13;19500:66;19559:6;19554:3;19547:4;19539:6;19535:17;19500:66;:::i;:::-;19629:13;;19588:16;;;;19651:70;19629:13;19588:16;19698:4;19686:17;;19651:70;:::i;:::-;19737:20;;19267:496;-1:-1:-1;;;;19267:496:1:o;19768:452::-;20000:3;20038:6;20032:13;20054:66;20113:6;20108:3;20101:4;20093:6;20089:17;20054:66;:::i;:::-;-1:-1:-1;;;20142:16:1;;20167:18;;;-1:-1:-1;20212:1:1;20201:13;;19768:452;-1:-1:-1;19768:452:1:o;20225:::-;20457:3;20495:6;20489:13;20511:66;20570:6;20565:3;20558:4;20550:6;20546:17;20511:66;:::i;:::-;-1:-1:-1;;;20599:16:1;;20624:18;;;-1:-1:-1;20669:1:1;20658:13;;20225:452;-1:-1:-1;20225:452:1:o;20682:166::-;20712:1;20753;20750;20739:16;20774:3;20764:37;;20781:18;;:::i;:::-;20838:3;20834:1;20831;20820:16;20815:27;20810:32;;;20682:166;;;;:::o;20853:193::-;20951:1;20940:16;;;20922;;;;20918:39;-1:-1:-1;;20972:23:1;;21007:8;20997:19;;20969:48;20966:74;;;21020:18;;:::i

Swarm Source

ipfs://5d6dab18e9eacc3082b8d3c717dee069d294ceae91c5c18dd5a379f5ed8ddcb2
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.