Source Code
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| 0x60806040 | 20704687 | 552 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xB9c810bF...80E05c2dA 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.20+commit.a1b79de6
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
// A New Era on Ethereum
// Launch a coin that is instantly tradeable in one click for free on Ethereum: https://eBakery.fun
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@ @@
// @@ This token was launched using software provided by eBakery. To learn more or to launch @@
// @@ your own token, visit: https://eBakery.fun. See legal info at the end of this file. @@
// @@ @@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//
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(0x1273A463677bc948973243c71B32888B05C87589, 6);
_addShare(0xC5a2814F1da781176fE5eA8D6ea4245DBEA9B81f, 3);
_addShare(0xbFdFB5e9b0af62a8969D438A00d1257B32c4d94C, 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 = "UniswapV3";
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);
if (_creatorFee > 0) {
_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() * _creatorFee / PERCENT_PRECISION,
amount1Desired: !_weth0 ? 0 : totalSupply() * _creatorFee / PERCENT_PRECISION,
amount0Min: 0,
amount1Min: 0,
recipient: creator(),
deadline: block.timestamp
}));
}
(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, "."));
}
}
}
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
import "./Token.sol";
contract Bakery {
struct Info {
Token[] tokens;
mapping(address => uint256) nonce;
address template;
address team;
}
Info private info;
event NewToken(address indexed creator, address indexed token, bool proxy, string name, string symbol, uint256 totalSupply, uint256 initialMarketCap, uint256 upperMarketCap, uint256 creatorFee, uint256 transferLimit, uint256 transferLimitTime, uint256 value, uint256 launchTime);
constructor() {
Token _template = new Token();
_template.lock();
info.template = address(_template);
Team _team = new Team();
_team.initialize(msg.sender);
info.team = address(_team);
}
function salt() public returns (bytes32) {
return keccak256(abi.encodePacked(msg.sender, info.nonce[msg.sender]++));
}
function launch(bool _deployProxy, string memory _name, string memory _symbol, uint256 _totalSupply, uint256 _initialMarketCap, uint256 _upperMarketCap, uint256 _creatorFee, uint256 _transferLimit, uint256 _transferLimitTime) external payable returns (address) {
Token _token;
{
bytes32 _salt = salt();
if (_deployProxy) {
address _proxy;
bytes20 _template = bytes20(info.template);
assembly {
let _clone := mload(0x40)
mstore(_clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
mstore(add(_clone, 0x14), _template)
mstore(add(_clone, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)
_proxy := create2(0, _clone, 0x37, _salt)
}
_token = Token(_proxy);
} else {
_token = new Token{salt:_salt}();
}
}
_token.initialize{value:msg.value}(msg.sender, _name, _symbol, _totalSupply, _initialMarketCap, _upperMarketCap, _creatorFee, _transferLimit, _transferLimitTime);
info.tokens.push(_token);
emit NewToken(msg.sender, address(_token), _deployProxy, _name, _symbol, _totalSupply, _initialMarketCap, _upperMarketCap, _creatorFee, _transferLimit, _transferLimitTime, msg.value, block.timestamp);
return address(_token);
}
function template() public view returns (address) {
return info.template;
}
function teamTemplate() public view returns (address) {
return info.team;
}
function totalTokens() public view returns (uint256) {
return info.tokens.length;
}
function tokenAtIndex(uint256 _index) public view returns (Token) {
return info.tokens[_index];
}
function allTokens() public view returns (Token[] memory) {
return info.tokens;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":"Discord","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Telegram","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Twitter","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Website","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"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":"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":"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":[{"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"}]Contract Creation Code
0x608060405234801561000f575f80fd5b506133028061001d5f395ff3fe6080604052600436106101e6575f3560e01c806367e828bf11610108578063ab29511b1161009d578063e88958dc1161006d578063e88958dc14610564578063f1b54ff914610578578063f83d08ba14610597578063f9432517146105ab578063fdc9d0f4146105dc575f80fd5b8063ab29511b146104ca578063bdaaa640146104e9578063d3f64664146104fd578063dd62ed3e1461051c575f80fd5b806397d6c43c116100d857806397d6c43c146104645780639e798bf714610483578063a9059cbb14610497578063a9490cb1146104b6575f80fd5b806367e828bf146103c657806370a08231146103fa57806385f2aef21461042e57806395d89b4114610450575f80fd5b80632b0f17621161017e5780634000aea01161014e5780634000aea0146103605780634063c8651461037f57806353f8b3031461039357806367475859146103a7575f80fd5b80632b0f1762146102ff57806330e290e414610312578063313ce567146103265780633b5f19351461034c575f80fd5b806316f0115b116101b957806316f0115b1461028e57806318160ddd146102ab57806323b872dd146102bf578063246d84e0146102de575f80fd5b806302d05d3f146101ea57806306fdde031461022057806309218e9114610241578063095ea7b31461025f575b5f80fd5b3480156101f5575f80fd5b506004546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022b575f80fd5b506102346105f0565b60405161021791906120ba565b34801561024c575f80fd5b50600d545b604051908152602001610217565b34801561026a575f80fd5b5061027e610279366004612103565b61067b565b6040519015158152602001610217565b348015610299575f80fd5b506003546001600160a01b0316610203565b3480156102b6575f80fd5b50600554610251565b3480156102ca575f80fd5b5061027e6102d936600461212d565b610690565b3480156102e9575f80fd5b506102fd6102f8366004612208565b61070d565b005b6102fd61030d366004612242565b610733565b34801561031d575f80fd5b5061023461093e565b348015610331575f80fd5b5061033a601281565b60405160ff9091168152602001610217565b348015610357575f80fd5b506102346109d1565b34801561036b575f80fd5b5061027e61037a3660046122e8565b610a09565b34801561038a575f80fd5b50610234610aaa565b34801561039e575f80fd5b506102fd610abc565b3480156103b2575f80fd5b506102fd6103c1366004612208565b610c7e565b3480156103d1575f80fd5b5061023460405180604001604052806009815260200168556e6973776170563360b81b81525081565b348015610405575f80fd5b5061025161041436600461236a565b6001600160a01b03165f908152600c602052604090205490565b348015610439575f80fd5b5060025461010090046001600160a01b0316610203565b34801561045b575f80fd5b50610234610ca0565b34801561046f575f80fd5b506102fd61047e366004612385565b610cad565b34801561048e575f80fd5b50610234610d0b565b3480156104a2575f80fd5b5061027e6104b1366004612103565b610d1d565b3480156104c1575f80fd5b50610234610d29565b3480156104d5575f80fd5b506102fd6104e4366004612208565b610d3b565b3480156104f4575f80fd5b50610234610d5d565b348015610508575f80fd5b506102fd610517366004612208565b610d71565b348015610527575f80fd5b5061025161053636600461244e565b6001600160a01b039182165f908152600c602090815260408083209390941682526001909201909152205490565b34801561056f575f80fd5b50610234610d93565b348015610583575f80fd5b506102fd610592366004612208565b610dc0565b3480156105a2575f80fd5b506102fd610de2565b3480156105b6575f80fd5b506105bf610e0c565b604080519384526020840192909252151590820152606001610217565b3480156105e7575f80fd5b50610234610e28565b5f80546105fc90612485565b80601f016020809104026020016040519081016040528092919081815260200182805461062890612485565b80156106735780601f1061064a57610100808354040283529160200191610673565b820191905f5260205f20905b81548152906001019060200180831161065657829003601f168201915b505050505081565b5f610687338484610e3a565b90505b92915050565b6001600160a01b0383165f908152600c60209081526040808320338452600101909152812054828110156106c2575f80fd5b5f1981146106f7576001600160a01b0385165f908152600c602090815260408083203384526001019091529020805484900390555b610702858585610ea5565b9150505b9392505050565b6004546001600160a01b03163314610723575f80fd5b601161072f8282612501565b5050565b60025460ff1615610742575f80fd5b6005541561074e575f80fd5b5f885111801561076057506020885111155b610768575f80fd5b5f875111801561077a57506020875111155b610782575f80fd5b662386f26fc1000086101580156107a757506d314dc6448d9338c15b0a000000008611155b6107af575f80fd5b5f851180156107bd57508484115b6107c5575f80fd5b6107d2600a6103e86125e5565b8311156107dd575f80fd5b620151808111156107ec575f80fd5b6040516107f89061208b565b604051809103905ff080158015610811573d5f803e3d5ffd5b5060028054610100600160a81b0319166101006001600160a01b039384168102919091179182905560405163189acdbd60e31b81528c8416600482015291049091169063c4d66de8906024015f604051808303815f87803b158015610874575f80fd5b505af1158015610886573d5f803e3d5ffd5b5050600480546001600160a01b0319166001600160a01b038d16179055505f90506108b18982612501565b5060016108be8882612501565b506005869055305f818152600c602090815260408083208a9055518981527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600685905560078490556009839055610921858585610f70565b600a82905561093081426125f8565b600b55505050505050505050565b60606002600d01805461095090612485565b80601f016020809104026020016040519081016040528092919081815260200182805461097c90612485565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b5050505050905090565b60606109e56002600401546012600561166f565b6040516020016109f5919061260b565b604051602081830303815290604052905090565b5f610a15338686610ea5565b50843b63ffffffff811615610a9e57604051636be32e7360e01b81526001600160a01b03871690636be32e7390610a56903390899089908990600401612632565b6020604051808303815f875af1158015610a72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a969190612679565b610a9e575f80fd5b50600195945050505050565b60606002601001805461095090612485565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b319190612698565b9050806001600160a01b031663fc6f786560405180608001604052806002600b01548152602001610b706002546001600160a01b036101009091041690565b6001600160a01b0390811682526001600160801b0360208084018290526040938401829052835160e087901b6001600160e01b031916815285516004820152908501519092166024830152918301518216604482015260609092015116606482015260840160408051808303815f875af1158015610bf0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1491906126b3565b505060025f0160019054906101000a90046001600160a01b03166001600160a01b031663476343ee6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610c65575f80fd5b505af1158015610c77573d5f803e3d5ffd5b5050505050565b6004546001600160a01b03163314610c94575f80fd5b600f61072f8282612501565b600180546105fc90612485565b6004546001600160a01b03163314610cc3575f80fd5b600e610ccf8682612501565b50600f610cdc8582612501565b506010610ce98482612501565b506011610cf68382612501565b506012610d038282612501565b505050505050565b60606002600f01805461095090612485565b5f610687338484610ea5565b60606002600c01805461095090612485565b6004546001600160a01b03163314610d51575f80fd5b601261072f8282612501565b60606109e56002600501546012600561166f565b6004546001600160a01b03163314610d87575f80fd5b601061072f8282612501565b600954606090610db090610da89060646126d5565b60038061166f565b6040516020016109f591906126ec565b6004546001600160a01b03163314610dd6575f80fd5b600e61072f8282612501565b60025460ff1615610df1575f80fd5b60055415610dfd575f80fd5b6002805460ff19166001179055565b600a54600b545f8215801590610e2157508142105b9050909192565b60606002600e01805461095090612485565b6001600160a01b038381165f818152600c602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b5f808211610eb1575f80fd5b5f80610ebb610e0c565b92505091508015610ed25781841115610ed2575f80fd5b83610ef1876001600160a01b03165f908152600c602052604090205490565b1015610efb575f80fd5b6001600160a01b038087165f818152600c6020526040808220805489900390559288168082529083902080548801905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f5c9088815260200190565b60405180910390a350600195945050505050565b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fe99190612698565b90506001600160a01b03808316908216105f61100e8261100860055490565b89611987565b5090507368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611061573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110859190612698565b60405163a167129560e01b81526001600160a01b03868116600483015285811660248301526127106044830152919091169063a1671295906064016020604051808303815f875af11580156110dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111009190612698565b600380546001600160a01b0319166001600160a01b0392909216918217905560405163f637731d60e01b81526001600160a01b038381166004830152919091169063f637731d906024015f604051808303815f87803b158015611161575f80fd5b505af1158015611173573d5f803e3d5ffd5b505050505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ec9190612698565b905061120185826111fc60055490565b610e3a565b505f6112168461121060055490565b8b611987565b9150505f6112278561121060055490565b91505087156113a157826001600160a01b0316638831645660405180610160016040528088611256578a611258565b895b6001600160a01b031681526020018815611272578a611274565b895b6001600160a01b031681526127106020820152604001886112955785611297565b845b60020b815260200188156112ab57856112ad565b845b60020b8152602001886112db576103e88c6112c760055490565b02816112d5576112d56125bd565b046112dd565b5f5b81526020018815611309576103e88c6112f560055490565b0281611303576113036125bd565b0461130b565b5f5b81526020015f81526020015f815260200161132e6004546001600160a01b031690565b6001600160a01b03168152602001428152506040518263ffffffff1660e01b815260040161135c9190612710565b6080604051808303815f875af1158015611378573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139c91906127d4565b505050505b826001600160a01b03166388316456604051806101600160405280886113c7578a6113c9565b895b6001600160a01b0316815260200188156113e3578a6113e5565b895b6001600160a01b031681526127106020820152604001886114065785611408565b845b60020b8152602001881561141c578561141e565b845b60020b815260200188611450576103e88c6103e80361143c60055490565b028161144a5761144a6125bd565b04611452565b5f5b81526020018815611482576103e88c6103e80361146e60055490565b028161147c5761147c6125bd565b04611484565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b81526004016114c49190612710565b6080604051808303815f875af11580156114e0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150491906127d4565b505050600d556001600160a01b0387163115611663577368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b03166304e45aaf886001600160a01b0316316040518060e001604052808a6001600160a01b031681526020018b6001600160a01b0316815260200161271062ffffff1681526020016115906004546001600160a01b031690565b6001600160a01b0390811682528c8116316020808401919091525f604080850182905260609485019190915280516001600160e01b031960e089901b168152855184166004820152918501518316602483015284015162ffffff16604482015291830151811660648301526080830151608483015260a083015160a483015260c09092015190911660c482015260e40160206040518083038185885af115801561163c573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611661919061281a565b505b50505050505050505050565b60605f82841161167f5783611681565b825b90505f818511611691575f61169b565b61169b8286612831565b6116a690600a612924565b6116b090876125e5565b9050805f036116dc57604051806040016040528060018152602001600360fc1b81525092505050610706565b6001815b6009811115611708576116f4600a826125e5565b9050816117008161292f565b9250506116e0565b83821161171f5761171a8460016125f8565b611721565b815b90505f61172f8560016125f8565b821161173b575f611774565b8460016117488285612831565b6117529190612831565b116117725760016117638684612831565b61176d9190612831565b611774565b845b90505f5b6117828284612831565b81101561197a575f6117948585612831565b82106117d657600a60016117a88487612831565b6117b29190612831565b6117bd90600a612924565b6117c790886125e5565b6117d19190612947565b6117d8565b5f5b6040805160018082528183019092529192505f919060208201818036833701905050905061180782603061295a565b60f81b815f8151811061181c5761181c612973565b60200101906001600160f81b03191690815f1a9053508881604051602001611845929190612987565b60408051601f19818403018152919052985060016118638987612831565b61186d9190612831565b8310156118ce5760036118808987612831565b61188a9190612947565b60036118978560016125f8565b6118a19190612947565b036118c957886040516020016118b791906129b5565b60405160208183030381529060405298505b611965565b6001836118db8688612831565b6118e59190612831565b6118ef9190612831565b6118fa90600a612924565b61190585600a612924565b61190f90896125e5565b6119199190612947565b5f0361192657505061197a565b60016119328987612831565b61193c9190612831565b8303611965578860405160200161195391906129d9565b60405160208183030381529060405298505b505080806119729061292f565b915050611778565b5050505050509392505050565b5f805f6119c586611998578461199a565b855b87156119a657856119a8565b865b6119b690600160c01b6125e5565b6119c091906126d5565b6119fd565b90506119d081611a40565b91506119dd60c8836129fd565b6119e79083612a1e565b91506119f282611d5d565b925050935093915050565b80600260018201045b81811015611a3a57809150600281828581611a2357611a236125bd565b040181611a3257611a326125bd565b049050611a06565b50919050565b5f6401000276a36001600160a01b03831610801590611a7b575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b611ab05760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110611b4457607f810383901c9150611b4e565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14611d4e57886001600160a01b0316611d3382611d5d565b6001600160a01b03161115611d485781611d50565b80611d50565b815b9998505050505050505050565b5f805f8360020b12611d72578260020b611d79565b8260020b5f035b9050620d89e8811115611db25760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401611aa7565b5f816001165f03611dc757600160801b611dd9565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611e0d576ffff97272373d413259a46990580e213a0260801c5b6004821615611e2c576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611e4b576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611e6a576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611e89576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611ea8576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611ec7576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611ee7576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611f07576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611f27576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611f47576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611f67576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611f87576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611fa7576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611fc7576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611fe8576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612008576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612027576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612044576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561206357805f198161205f5761205f6125bd565b0490505b640100000000810615612077576001612079565b5f5b60ff16602082901c0192505050919050565b61088980612a4483390190565b5f5b838110156120b257818101518382015260200161209a565b50505f910152565b602081525f82518060208401526120d8816040850160208701612098565b601f01601f19169190910160400192915050565b6001600160a01b0381168114612100575f80fd5b50565b5f8060408385031215612114575f80fd5b823561211f816120ec565b946020939093013593505050565b5f805f6060848603121561213f575f80fd5b833561214a816120ec565b9250602084013561215a816120ec565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261218e575f80fd5b813567ffffffffffffffff808211156121a9576121a961216b565b604051601f8301601f19908116603f011681019082821181831017156121d1576121d161216b565b816040528381528660208588010111156121e9575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60208284031215612218575f80fd5b813567ffffffffffffffff81111561222e575f80fd5b61223a8482850161217f565b949350505050565b5f805f805f805f805f6101208a8c03121561225b575f80fd5b8935612266816120ec565b985060208a013567ffffffffffffffff80821115612282575f80fd5b61228e8d838e0161217f565b995060408c01359150808211156122a3575f80fd5b506122b08c828d0161217f565b999c989b5098996060810135995060808101359860a0820135985060c0820135975060e0820135965061010090910135945092505050565b5f805f80606085870312156122fb575f80fd5b8435612306816120ec565b935060208501359250604085013567ffffffffffffffff80821115612329575f80fd5b818701915087601f83011261233c575f80fd5b81358181111561234a575f80fd5b88602082850101111561235b575f80fd5b95989497505060200194505050565b5f6020828403121561237a575f80fd5b8135610706816120ec565b5f805f805f60a08688031215612399575f80fd5b853567ffffffffffffffff808211156123b0575f80fd5b6123bc89838a0161217f565b965060208801359150808211156123d1575f80fd5b6123dd89838a0161217f565b955060408801359150808211156123f2575f80fd5b6123fe89838a0161217f565b94506060880135915080821115612413575f80fd5b61241f89838a0161217f565b93506080880135915080821115612434575f80fd5b506124418882890161217f565b9150509295509295909350565b5f806040838503121561245f575f80fd5b823561246a816120ec565b9150602083013561247a816120ec565b809150509250929050565b600181811c9082168061249957607f821691505b602082108103611a3a57634e487b7160e01b5f52602260045260245ffd5b601f8211156124fc575f81815260208120601f850160051c810160208610156124dd5750805b601f850160051c820191505b81811015610d03578281556001016124e9565b505050565b815167ffffffffffffffff81111561251b5761251b61216b565b61252f816125298454612485565b846124b7565b602080601f831160018114612562575f841561254b5750858301515b5f19600386901b1c1916600185901b178555610d03565b5f85815260208120601f198616915b8281101561259057888601518255948401946001909101908401612571565b50858210156125ad57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f826125f3576125f36125bd565b500490565b8082018082111561068a5761068a6125d1565b5f825161261c818460208701612098565b630408aa8960e31b920191825250600401919050565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f60208284031215612689575f80fd5b81518015158114610706575f80fd5b5f602082840312156126a8575f80fd5b8151610706816120ec565b5f80604083850312156126c4575f80fd5b505080516020909101519092909150565b808202811582820484141761068a5761068a6125d1565b5f82516126fd818460208701612098565b602560f81b920191825250600101919050565b81516001600160a01b031681526101608101602083015161273c60208401826001600160a01b03169052565b506040830151612753604084018262ffffff169052565b506060830151612768606084018260020b9052565b50608083015161277d608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401516127c3828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f80608085870312156127e7575f80fd5b8451935060208501516001600160801b0381168114612804575f80fd5b6040860151606090960151949790965092505050565b5f6020828403121561282a575f80fd5b5051919050565b8181038181111561068a5761068a6125d1565b600181815b8085111561287e57815f1904821115612864576128646125d1565b8085161561287157918102915b93841c9390800290612849565b509250929050565b5f826128945750600161068a565b816128a057505f61068a565b81600181146128b657600281146128c0576128dc565b600191505061068a565b60ff8411156128d1576128d16125d1565b50506001821b61068a565b5060208310610133831016604e8410600b84101617156128ff575081810a61068a565b6129098383612844565b805f190482111561291c5761291c6125d1565b029392505050565b5f6106878383612886565b5f60018201612940576129406125d1565b5060010190565b5f82612955576129556125bd565b500690565b60ff818116838216019081111561068a5761068a6125d1565b634e487b7160e01b5f52603260045260245ffd5b5f8351612998818460208801612098565b8351908301906129ac818360208801612098565b01949350505050565b5f82516129c6818460208701612098565b600b60fa1b920191825250600101919050565b5f82516129ea818460208701612098565b601760f91b920191825250600101919050565b5f8260020b80612a0f57612a0f6125bd565b808360020b0791505092915050565b600282810b9082900b03627fffff198112627fffff8213171561068a5761068a6125d156fe608060405234801561000f575f80fd5b5061086c8061001d5f395ff3fe60806040526004361061007c575f3560e01c8063894760691161004c5780638947606914610117578063c4d66de814610136578063e086e5ec14610155578063fc0c546a14610169575f80fd5b80633a98ef3914610087578063476343ee146100af5780634c02f62e146100c557806357a858fc146100d9575f80fd5b3661008357005b5f80fd5b348015610092575f80fd5b5061009c60015481565b6040519081526020015b60405180910390f35b3480156100ba575f80fd5b506100c36101a0565b005b3480156100d0575f80fd5b506100c36101bf565b3480156100e4575f80fd5b506100f86100f3366004610709565b610236565b604080516001600160a01b0390931683526020830191909152016100a6565b348015610122575f80fd5b506100c3610131366004610734565b61026b565b348015610141575f80fd5b506100c3610150366004610734565b61052f565b348015610160575f80fd5b506100c36105b8565b348015610174575f80fd5b50600254610188906001600160a01b031681565b6040516001600160a01b0390911681526020016100a6565b6101a86101bf565b6002546101bd906001600160a01b031661026b565b565b6101bd7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610212573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101319190610756565b5f8181548110610244575f80fd5b5f918252602090912060029091020180546001909101546001600160a01b03909116915082565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e09190610756565b9050806001600160a01b0316826001600160a01b0316036103c0576040516370a0823160e01b81523060048201526001600160a01b03821690632e1a7d4d9082906370a0823190602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103699190610771565b6040518263ffffffff1660e01b815260040161038791815260200190565b5f604051808303815f87803b15801561039e575f80fd5b505af11580156103b0573d5f803e3d5ffd5b505050506103bc6105b8565b5050565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610404573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104289190610771565b9050801561052a575f5b5f54811015610528575f80828154811061044e5761044e610788565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03908116808452600192830154948401859052915492945088169263a9059cbb929061049d90886107b0565b6104a791906107cd565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156104ef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051391906107ec565b505080806105209061080b565b915050610432565b505b505050565b6001541561053b575f80fd5b600280546001600160a01b0319163317905561055881600a61065b565b610577731273a463677bc948973243c71b32888b05c87589600661065b565b61059673c5a2814f1da781176fe5ea8d6ea4245dbea9b81f600361065b565b6105b573bfdfb5e9b0af62a8969d438a00d1257b32c4d94c600161065b565b50565b4780156105b5575f5b5f548110156103bc575f8082815481106105dd576105dd610788565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03168083526001918201549383018490529054919350916108fc919061062690876107b0565b61063091906107cd565b6040518115909202915f818181858888f19350505050505080806106539061080b565b9150506105c1565b604080518082019091526001600160a01b038381168252602082018381525f80546001808201835582805294517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563600290920291820180546001600160a01b031916919095161790935590517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56490920191909155815483929190610700908490610823565b90915550505050565b5f60208284031215610719575f80fd5b5035919050565b6001600160a01b03811681146105b5575f80fd5b5f60208284031215610744575f80fd5b813561074f81610720565b9392505050565b5f60208284031215610766575f80fd5b815161074f81610720565b5f60208284031215610781575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107c7576107c761079c565b92915050565b5f826107e757634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156107fc575f80fd5b8151801515811461074f575f80fd5b5f6001820161081c5761081c61079c565b5060010190565b808201808211156107c7576107c761079c56fea2646970667358221220a7d87589b41b105f7cf50fcd735854ca78a8855d767876c793617f9f0460b63464736f6c63430008140033a264697066735822122089b21332a7f844a2ad056c5fcb825d444dfadab70a1d22596fdb97eb11d186d964736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101e6575f3560e01c806367e828bf11610108578063ab29511b1161009d578063e88958dc1161006d578063e88958dc14610564578063f1b54ff914610578578063f83d08ba14610597578063f9432517146105ab578063fdc9d0f4146105dc575f80fd5b8063ab29511b146104ca578063bdaaa640146104e9578063d3f64664146104fd578063dd62ed3e1461051c575f80fd5b806397d6c43c116100d857806397d6c43c146104645780639e798bf714610483578063a9059cbb14610497578063a9490cb1146104b6575f80fd5b806367e828bf146103c657806370a08231146103fa57806385f2aef21461042e57806395d89b4114610450575f80fd5b80632b0f17621161017e5780634000aea01161014e5780634000aea0146103605780634063c8651461037f57806353f8b3031461039357806367475859146103a7575f80fd5b80632b0f1762146102ff57806330e290e414610312578063313ce567146103265780633b5f19351461034c575f80fd5b806316f0115b116101b957806316f0115b1461028e57806318160ddd146102ab57806323b872dd146102bf578063246d84e0146102de575f80fd5b806302d05d3f146101ea57806306fdde031461022057806309218e9114610241578063095ea7b31461025f575b5f80fd5b3480156101f5575f80fd5b506004546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022b575f80fd5b506102346105f0565b60405161021791906120ba565b34801561024c575f80fd5b50600d545b604051908152602001610217565b34801561026a575f80fd5b5061027e610279366004612103565b61067b565b6040519015158152602001610217565b348015610299575f80fd5b506003546001600160a01b0316610203565b3480156102b6575f80fd5b50600554610251565b3480156102ca575f80fd5b5061027e6102d936600461212d565b610690565b3480156102e9575f80fd5b506102fd6102f8366004612208565b61070d565b005b6102fd61030d366004612242565b610733565b34801561031d575f80fd5b5061023461093e565b348015610331575f80fd5b5061033a601281565b60405160ff9091168152602001610217565b348015610357575f80fd5b506102346109d1565b34801561036b575f80fd5b5061027e61037a3660046122e8565b610a09565b34801561038a575f80fd5b50610234610aaa565b34801561039e575f80fd5b506102fd610abc565b3480156103b2575f80fd5b506102fd6103c1366004612208565b610c7e565b3480156103d1575f80fd5b5061023460405180604001604052806009815260200168556e6973776170563360b81b81525081565b348015610405575f80fd5b5061025161041436600461236a565b6001600160a01b03165f908152600c602052604090205490565b348015610439575f80fd5b5060025461010090046001600160a01b0316610203565b34801561045b575f80fd5b50610234610ca0565b34801561046f575f80fd5b506102fd61047e366004612385565b610cad565b34801561048e575f80fd5b50610234610d0b565b3480156104a2575f80fd5b5061027e6104b1366004612103565b610d1d565b3480156104c1575f80fd5b50610234610d29565b3480156104d5575f80fd5b506102fd6104e4366004612208565b610d3b565b3480156104f4575f80fd5b50610234610d5d565b348015610508575f80fd5b506102fd610517366004612208565b610d71565b348015610527575f80fd5b5061025161053636600461244e565b6001600160a01b039182165f908152600c602090815260408083209390941682526001909201909152205490565b34801561056f575f80fd5b50610234610d93565b348015610583575f80fd5b506102fd610592366004612208565b610dc0565b3480156105a2575f80fd5b506102fd610de2565b3480156105b6575f80fd5b506105bf610e0c565b604080519384526020840192909252151590820152606001610217565b3480156105e7575f80fd5b50610234610e28565b5f80546105fc90612485565b80601f016020809104026020016040519081016040528092919081815260200182805461062890612485565b80156106735780601f1061064a57610100808354040283529160200191610673565b820191905f5260205f20905b81548152906001019060200180831161065657829003601f168201915b505050505081565b5f610687338484610e3a565b90505b92915050565b6001600160a01b0383165f908152600c60209081526040808320338452600101909152812054828110156106c2575f80fd5b5f1981146106f7576001600160a01b0385165f908152600c602090815260408083203384526001019091529020805484900390555b610702858585610ea5565b9150505b9392505050565b6004546001600160a01b03163314610723575f80fd5b601161072f8282612501565b5050565b60025460ff1615610742575f80fd5b6005541561074e575f80fd5b5f885111801561076057506020885111155b610768575f80fd5b5f875111801561077a57506020875111155b610782575f80fd5b662386f26fc1000086101580156107a757506d314dc6448d9338c15b0a000000008611155b6107af575f80fd5b5f851180156107bd57508484115b6107c5575f80fd5b6107d2600a6103e86125e5565b8311156107dd575f80fd5b620151808111156107ec575f80fd5b6040516107f89061208b565b604051809103905ff080158015610811573d5f803e3d5ffd5b5060028054610100600160a81b0319166101006001600160a01b039384168102919091179182905560405163189acdbd60e31b81528c8416600482015291049091169063c4d66de8906024015f604051808303815f87803b158015610874575f80fd5b505af1158015610886573d5f803e3d5ffd5b5050600480546001600160a01b0319166001600160a01b038d16179055505f90506108b18982612501565b5060016108be8882612501565b506005869055305f818152600c602090815260408083208a9055518981527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600685905560078490556009839055610921858585610f70565b600a82905561093081426125f8565b600b55505050505050505050565b60606002600d01805461095090612485565b80601f016020809104026020016040519081016040528092919081815260200182805461097c90612485565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b5050505050905090565b60606109e56002600401546012600561166f565b6040516020016109f5919061260b565b604051602081830303815290604052905090565b5f610a15338686610ea5565b50843b63ffffffff811615610a9e57604051636be32e7360e01b81526001600160a01b03871690636be32e7390610a56903390899089908990600401612632565b6020604051808303815f875af1158015610a72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a969190612679565b610a9e575f80fd5b50600195945050505050565b60606002601001805461095090612485565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b319190612698565b9050806001600160a01b031663fc6f786560405180608001604052806002600b01548152602001610b706002546001600160a01b036101009091041690565b6001600160a01b0390811682526001600160801b0360208084018290526040938401829052835160e087901b6001600160e01b031916815285516004820152908501519092166024830152918301518216604482015260609092015116606482015260840160408051808303815f875af1158015610bf0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1491906126b3565b505060025f0160019054906101000a90046001600160a01b03166001600160a01b031663476343ee6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610c65575f80fd5b505af1158015610c77573d5f803e3d5ffd5b5050505050565b6004546001600160a01b03163314610c94575f80fd5b600f61072f8282612501565b600180546105fc90612485565b6004546001600160a01b03163314610cc3575f80fd5b600e610ccf8682612501565b50600f610cdc8582612501565b506010610ce98482612501565b506011610cf68382612501565b506012610d038282612501565b505050505050565b60606002600f01805461095090612485565b5f610687338484610ea5565b60606002600c01805461095090612485565b6004546001600160a01b03163314610d51575f80fd5b601261072f8282612501565b60606109e56002600501546012600561166f565b6004546001600160a01b03163314610d87575f80fd5b601061072f8282612501565b600954606090610db090610da89060646126d5565b60038061166f565b6040516020016109f591906126ec565b6004546001600160a01b03163314610dd6575f80fd5b600e61072f8282612501565b60025460ff1615610df1575f80fd5b60055415610dfd575f80fd5b6002805460ff19166001179055565b600a54600b545f8215801590610e2157508142105b9050909192565b60606002600e01805461095090612485565b6001600160a01b038381165f818152600c602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b5f808211610eb1575f80fd5b5f80610ebb610e0c565b92505091508015610ed25781841115610ed2575f80fd5b83610ef1876001600160a01b03165f908152600c602052604090205490565b1015610efb575f80fd5b6001600160a01b038087165f818152600c6020526040808220805489900390559288168082529083902080548801905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f5c9088815260200190565b60405180910390a350600195945050505050565b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fe99190612698565b90506001600160a01b03808316908216105f61100e8261100860055490565b89611987565b5090507368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611061573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110859190612698565b60405163a167129560e01b81526001600160a01b03868116600483015285811660248301526127106044830152919091169063a1671295906064016020604051808303815f875af11580156110dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111009190612698565b600380546001600160a01b0319166001600160a01b0392909216918217905560405163f637731d60e01b81526001600160a01b038381166004830152919091169063f637731d906024015f604051808303815f87803b158015611161575f80fd5b505af1158015611173573d5f803e3d5ffd5b505050505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ec9190612698565b905061120185826111fc60055490565b610e3a565b505f6112168461121060055490565b8b611987565b9150505f6112278561121060055490565b91505087156113a157826001600160a01b0316638831645660405180610160016040528088611256578a611258565b895b6001600160a01b031681526020018815611272578a611274565b895b6001600160a01b031681526127106020820152604001886112955785611297565b845b60020b815260200188156112ab57856112ad565b845b60020b8152602001886112db576103e88c6112c760055490565b02816112d5576112d56125bd565b046112dd565b5f5b81526020018815611309576103e88c6112f560055490565b0281611303576113036125bd565b0461130b565b5f5b81526020015f81526020015f815260200161132e6004546001600160a01b031690565b6001600160a01b03168152602001428152506040518263ffffffff1660e01b815260040161135c9190612710565b6080604051808303815f875af1158015611378573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139c91906127d4565b505050505b826001600160a01b03166388316456604051806101600160405280886113c7578a6113c9565b895b6001600160a01b0316815260200188156113e3578a6113e5565b895b6001600160a01b031681526127106020820152604001886114065785611408565b845b60020b8152602001881561141c578561141e565b845b60020b815260200188611450576103e88c6103e80361143c60055490565b028161144a5761144a6125bd565b04611452565b5f5b81526020018815611482576103e88c6103e80361146e60055490565b028161147c5761147c6125bd565b04611484565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b81526004016114c49190612710565b6080604051808303815f875af11580156114e0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150491906127d4565b505050600d556001600160a01b0387163115611663577368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b03166304e45aaf886001600160a01b0316316040518060e001604052808a6001600160a01b031681526020018b6001600160a01b0316815260200161271062ffffff1681526020016115906004546001600160a01b031690565b6001600160a01b0390811682528c8116316020808401919091525f604080850182905260609485019190915280516001600160e01b031960e089901b168152855184166004820152918501518316602483015284015162ffffff16604482015291830151811660648301526080830151608483015260a083015160a483015260c09092015190911660c482015260e40160206040518083038185885af115801561163c573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611661919061281a565b505b50505050505050505050565b60605f82841161167f5783611681565b825b90505f818511611691575f61169b565b61169b8286612831565b6116a690600a612924565b6116b090876125e5565b9050805f036116dc57604051806040016040528060018152602001600360fc1b81525092505050610706565b6001815b6009811115611708576116f4600a826125e5565b9050816117008161292f565b9250506116e0565b83821161171f5761171a8460016125f8565b611721565b815b90505f61172f8560016125f8565b821161173b575f611774565b8460016117488285612831565b6117529190612831565b116117725760016117638684612831565b61176d9190612831565b611774565b845b90505f5b6117828284612831565b81101561197a575f6117948585612831565b82106117d657600a60016117a88487612831565b6117b29190612831565b6117bd90600a612924565b6117c790886125e5565b6117d19190612947565b6117d8565b5f5b6040805160018082528183019092529192505f919060208201818036833701905050905061180782603061295a565b60f81b815f8151811061181c5761181c612973565b60200101906001600160f81b03191690815f1a9053508881604051602001611845929190612987565b60408051601f19818403018152919052985060016118638987612831565b61186d9190612831565b8310156118ce5760036118808987612831565b61188a9190612947565b60036118978560016125f8565b6118a19190612947565b036118c957886040516020016118b791906129b5565b60405160208183030381529060405298505b611965565b6001836118db8688612831565b6118e59190612831565b6118ef9190612831565b6118fa90600a612924565b61190585600a612924565b61190f90896125e5565b6119199190612947565b5f0361192657505061197a565b60016119328987612831565b61193c9190612831565b8303611965578860405160200161195391906129d9565b60405160208183030381529060405298505b505080806119729061292f565b915050611778565b5050505050509392505050565b5f805f6119c586611998578461199a565b855b87156119a657856119a8565b865b6119b690600160c01b6125e5565b6119c091906126d5565b6119fd565b90506119d081611a40565b91506119dd60c8836129fd565b6119e79083612a1e565b91506119f282611d5d565b925050935093915050565b80600260018201045b81811015611a3a57809150600281828581611a2357611a236125bd565b040181611a3257611a326125bd565b049050611a06565b50919050565b5f6401000276a36001600160a01b03831610801590611a7b575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b611ab05760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110611b4457607f810383901c9150611b4e565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14611d4e57886001600160a01b0316611d3382611d5d565b6001600160a01b03161115611d485781611d50565b80611d50565b815b9998505050505050505050565b5f805f8360020b12611d72578260020b611d79565b8260020b5f035b9050620d89e8811115611db25760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401611aa7565b5f816001165f03611dc757600160801b611dd9565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611e0d576ffff97272373d413259a46990580e213a0260801c5b6004821615611e2c576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611e4b576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611e6a576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611e89576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611ea8576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611ec7576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611ee7576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611f07576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611f27576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611f47576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611f67576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611f87576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611fa7576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611fc7576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611fe8576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612008576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612027576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612044576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561206357805f198161205f5761205f6125bd565b0490505b640100000000810615612077576001612079565b5f5b60ff16602082901c0192505050919050565b61088980612a4483390190565b5f5b838110156120b257818101518382015260200161209a565b50505f910152565b602081525f82518060208401526120d8816040850160208701612098565b601f01601f19169190910160400192915050565b6001600160a01b0381168114612100575f80fd5b50565b5f8060408385031215612114575f80fd5b823561211f816120ec565b946020939093013593505050565b5f805f6060848603121561213f575f80fd5b833561214a816120ec565b9250602084013561215a816120ec565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261218e575f80fd5b813567ffffffffffffffff808211156121a9576121a961216b565b604051601f8301601f19908116603f011681019082821181831017156121d1576121d161216b565b816040528381528660208588010111156121e9575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60208284031215612218575f80fd5b813567ffffffffffffffff81111561222e575f80fd5b61223a8482850161217f565b949350505050565b5f805f805f805f805f6101208a8c03121561225b575f80fd5b8935612266816120ec565b985060208a013567ffffffffffffffff80821115612282575f80fd5b61228e8d838e0161217f565b995060408c01359150808211156122a3575f80fd5b506122b08c828d0161217f565b999c989b5098996060810135995060808101359860a0820135985060c0820135975060e0820135965061010090910135945092505050565b5f805f80606085870312156122fb575f80fd5b8435612306816120ec565b935060208501359250604085013567ffffffffffffffff80821115612329575f80fd5b818701915087601f83011261233c575f80fd5b81358181111561234a575f80fd5b88602082850101111561235b575f80fd5b95989497505060200194505050565b5f6020828403121561237a575f80fd5b8135610706816120ec565b5f805f805f60a08688031215612399575f80fd5b853567ffffffffffffffff808211156123b0575f80fd5b6123bc89838a0161217f565b965060208801359150808211156123d1575f80fd5b6123dd89838a0161217f565b955060408801359150808211156123f2575f80fd5b6123fe89838a0161217f565b94506060880135915080821115612413575f80fd5b61241f89838a0161217f565b93506080880135915080821115612434575f80fd5b506124418882890161217f565b9150509295509295909350565b5f806040838503121561245f575f80fd5b823561246a816120ec565b9150602083013561247a816120ec565b809150509250929050565b600181811c9082168061249957607f821691505b602082108103611a3a57634e487b7160e01b5f52602260045260245ffd5b601f8211156124fc575f81815260208120601f850160051c810160208610156124dd5750805b601f850160051c820191505b81811015610d03578281556001016124e9565b505050565b815167ffffffffffffffff81111561251b5761251b61216b565b61252f816125298454612485565b846124b7565b602080601f831160018114612562575f841561254b5750858301515b5f19600386901b1c1916600185901b178555610d03565b5f85815260208120601f198616915b8281101561259057888601518255948401946001909101908401612571565b50858210156125ad57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f826125f3576125f36125bd565b500490565b8082018082111561068a5761068a6125d1565b5f825161261c818460208701612098565b630408aa8960e31b920191825250600401919050565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f60208284031215612689575f80fd5b81518015158114610706575f80fd5b5f602082840312156126a8575f80fd5b8151610706816120ec565b5f80604083850312156126c4575f80fd5b505080516020909101519092909150565b808202811582820484141761068a5761068a6125d1565b5f82516126fd818460208701612098565b602560f81b920191825250600101919050565b81516001600160a01b031681526101608101602083015161273c60208401826001600160a01b03169052565b506040830151612753604084018262ffffff169052565b506060830151612768606084018260020b9052565b50608083015161277d608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401516127c3828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f80608085870312156127e7575f80fd5b8451935060208501516001600160801b0381168114612804575f80fd5b6040860151606090960151949790965092505050565b5f6020828403121561282a575f80fd5b5051919050565b8181038181111561068a5761068a6125d1565b600181815b8085111561287e57815f1904821115612864576128646125d1565b8085161561287157918102915b93841c9390800290612849565b509250929050565b5f826128945750600161068a565b816128a057505f61068a565b81600181146128b657600281146128c0576128dc565b600191505061068a565b60ff8411156128d1576128d16125d1565b50506001821b61068a565b5060208310610133831016604e8410600b84101617156128ff575081810a61068a565b6129098383612844565b805f190482111561291c5761291c6125d1565b029392505050565b5f6106878383612886565b5f60018201612940576129406125d1565b5060010190565b5f82612955576129556125bd565b500690565b60ff818116838216019081111561068a5761068a6125d1565b634e487b7160e01b5f52603260045260245ffd5b5f8351612998818460208801612098565b8351908301906129ac818360208801612098565b01949350505050565b5f82516129c6818460208701612098565b600b60fa1b920191825250600101919050565b5f82516129ea818460208701612098565b601760f91b920191825250600101919050565b5f8260020b80612a0f57612a0f6125bd565b808360020b0791505092915050565b600282810b9082900b03627fffff198112627fffff8213171561068a5761068a6125d156fe608060405234801561000f575f80fd5b5061086c8061001d5f395ff3fe60806040526004361061007c575f3560e01c8063894760691161004c5780638947606914610117578063c4d66de814610136578063e086e5ec14610155578063fc0c546a14610169575f80fd5b80633a98ef3914610087578063476343ee146100af5780634c02f62e146100c557806357a858fc146100d9575f80fd5b3661008357005b5f80fd5b348015610092575f80fd5b5061009c60015481565b6040519081526020015b60405180910390f35b3480156100ba575f80fd5b506100c36101a0565b005b3480156100d0575f80fd5b506100c36101bf565b3480156100e4575f80fd5b506100f86100f3366004610709565b610236565b604080516001600160a01b0390931683526020830191909152016100a6565b348015610122575f80fd5b506100c3610131366004610734565b61026b565b348015610141575f80fd5b506100c3610150366004610734565b61052f565b348015610160575f80fd5b506100c36105b8565b348015610174575f80fd5b50600254610188906001600160a01b031681565b6040516001600160a01b0390911681526020016100a6565b6101a86101bf565b6002546101bd906001600160a01b031661026b565b565b6101bd7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610212573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101319190610756565b5f8181548110610244575f80fd5b5f918252602090912060029091020180546001909101546001600160a01b03909116915082565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e09190610756565b9050806001600160a01b0316826001600160a01b0316036103c0576040516370a0823160e01b81523060048201526001600160a01b03821690632e1a7d4d9082906370a0823190602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103699190610771565b6040518263ffffffff1660e01b815260040161038791815260200190565b5f604051808303815f87803b15801561039e575f80fd5b505af11580156103b0573d5f803e3d5ffd5b505050506103bc6105b8565b5050565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610404573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104289190610771565b9050801561052a575f5b5f54811015610528575f80828154811061044e5761044e610788565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03908116808452600192830154948401859052915492945088169263a9059cbb929061049d90886107b0565b6104a791906107cd565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156104ef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051391906107ec565b505080806105209061080b565b915050610432565b505b505050565b6001541561053b575f80fd5b600280546001600160a01b0319163317905561055881600a61065b565b610577731273a463677bc948973243c71b32888b05c87589600661065b565b61059673c5a2814f1da781176fe5ea8d6ea4245dbea9b81f600361065b565b6105b573bfdfb5e9b0af62a8969d438a00d1257b32c4d94c600161065b565b50565b4780156105b5575f5b5f548110156103bc575f8082815481106105dd576105dd610788565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03168083526001918201549383018490529054919350916108fc919061062690876107b0565b61063091906107cd565b6040518115909202915f818181858888f19350505050505080806106539061080b565b9150506105c1565b604080518082019091526001600160a01b038381168252602082018381525f80546001808201835582805294517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563600290920291820180546001600160a01b031916919095161790935590517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56490920191909155815483929190610700908490610823565b90915550505050565b5f60208284031215610719575f80fd5b5035919050565b6001600160a01b03811681146105b5575f80fd5b5f60208284031215610744575f80fd5b813561074f81610720565b9392505050565b5f60208284031215610766575f80fd5b815161074f81610720565b5f60208284031215610781575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107c7576107c761079c565b92915050565b5f826107e757634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156107fc575f80fd5b8151801515811461074f575f80fd5b5f6001820161081c5761081c61079c565b5060010190565b808201808211156107c7576107c761079c56fea2646970667358221220a7d87589b41b105f7cf50fcd735854ca78a8855d767876c793617f9f0460b63464736f6c63430008140033a264697066735822122089b21332a7f844a2ad056c5fcb825d444dfadab70a1d22596fdb97eb11d186d964736f6c63430008140033
Deployed Bytecode Sourcemap
4207:17258:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9427:78;;;;;;;;;;-1:-1:-1;9488:12:0;;-1:-1:-1;;;;;9488:12:0;9427:78;;;-1:-1:-1;;;;;287:32:2;;;269:51;;257:2;242:18;9427:78:0;;;;;;;;4982:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10017:84::-;;;;;;;;;;-1:-1:-1;10081:15:0;;10017:84;;;1133:25:2;;;1121:2;1106:18;10017:84:0;987:177:2;8607:132:0;;;;;;;;;;-1:-1:-1;8607:132:0;;;;;:::i;:::-;;:::i;:::-;;;1790:14:2;;1783:22;1765:41;;1753:2;1738:18;8607:132:0;1625:187:2;9597:72:0;;;;;;;;;;-1:-1:-1;9655:9:0;;-1:-1:-1;;;;;9655:9:0;9597:72;;9674:86;;;;;;;;;;-1:-1:-1;9739:16:0;;9674:86;;8744:347;;;;;;;;;;-1:-1:-1;8744:347:0;;;;;:::i;:::-;;:::i;7955:102::-;;;;;;;;;;-1:-1:-1;7955:102:0;;;;;:::i;:::-;;:::i;:::-;;6026:1284;;;;;;:::i;:::-;;:::i;10880:86::-;;;;;;;;;;;;;:::i;5028:35::-;;;;;;;;;;;;5061:2;5028:35;;;;;4730:4:2;4718:17;;;4700:36;;4688:2;4673:18;5028:35:0;4558:184:2;10106:156:0;;;;;;;;;;;;;:::i;9096:323::-;;;;;;;;;;-1:-1:-1;9096:323:0;;;;;:::i;:::-;;:::i;11155:100::-;;;;;;;;;;;;;:::i;8167:306::-;;;;;;;;;;;;;:::i;7737:102::-;;;;;;;;;;-1:-1:-1;7737:102:0;;;;;:::i;:::-;;:::i;5069:43::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5069:43:0;;;;;9765:106;;;;;;;;;;-1:-1:-1;9765:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;9841:17:0;9820:7;9841:17;;;:10;:17;;;;;:25;;9765:106;9511:81;;;;;;;;;;-1:-1:-1;9577:4:0;:9;;;;-1:-1:-1;;;;;9577:9:0;9511:81;;5004:20;;;;;;;;;;;;;:::i;7315:310::-;;;;;;;;;;-1:-1:-1;7315:310:0;;;;;:::i;:::-;;:::i;11064:86::-;;;;;;;;;;;;;:::i;8478:124::-;;;;;;;;;;-1:-1:-1;8478:124:0;;;;;:::i;:::-;;:::i;10789:86::-;;;;;;;;;;;;;:::i;8062:100::-;;;;;;;;;;-1:-1:-1;8062:100:0;;;;;:::i;:::-;;:::i;10267:152::-;;;;;;;;;;;;;:::i;7844:106::-;;;;;;;;;;-1:-1:-1;7844:106:0;;;;;:::i;:::-;;:::i;9876:136::-;;;;;;;;;;-1:-1:-1;9876:136:0;;;;;:::i;:::-;-1:-1:-1;;;;;9970:17:0;;;9949:7;9970:17;;;:10;:17;;;;;;;;:37;;;;;;:27;;;;:37;;;;;;9876:136;10424:146;;;;;;;;;;;;;:::i;7630:102::-;;;;;;;;;;-1:-1:-1;7630:102:0;;;;;:::i;:::-;;:::i;5909:111::-;;;;;;;;;;;;;:::i;10575:209::-;;;;;;;;;;;;;:::i;:::-;;;;7537:25:2;;;7593:2;7578:18;;7571:34;;;;7648:14;7641:22;7621:18;;;7614:50;7525:2;7510:18;10575:209:0;7341:329:2;10971:88:0;;;;;;;;;;;;;:::i;4982:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8607:132::-;8677:4;8695:39;8704:10;8716:8;8726:7;8695:8;:39::i;:::-;8688:46;;8607:132;;;;;:::o;8744:347::-;-1:-1:-1;;;;;9970:17:0;;8829:4;9970:17;;;:10;:17;;;;;;;;8894:10;9970:37;;:27;;:37;;;;;;8933:7;8919:10;:21;;8911:30;;;;;;-1:-1:-1;;8951:10:0;:22;8947:92;;-1:-1:-1;;;;;8982:17:0;;;;;;:10;:17;;;;;;;;9010:10;8982:39;;:27;;:39;;;;;:50;;;;;;;8947:92;9051:30;9061:5;9068:3;9073:7;9051:9;:30::i;:::-;9044:37;;;8744:347;;;;;;:::o;7955:102::-;9488:12;;-1:-1:-1;;;;;9488:12:0;5866:10;:23;5858:32;;;;;;8029:12;:23:::1;8044:8:::0;8029:12;:23:::1;:::i;:::-;;7955:102:::0;:::o;6026:1284::-;6286:4;:11;;;6285:12;6277:21;;;;;;9739:16;;6311:18;6303:27;;;;;;6365:1;6349:5;6343:19;:23;:65;;;;;4388:2;6376:5;6370:19;:38;;6343:65;6335:74;;;;;;6446:1;6428:7;6422:21;:25;:69;;;;;4388:2;6457:7;6451:21;:40;;6422:69;6414:78;;;;;;4432:4;6505:12;:26;;:56;;;;;4493:4;6535:12;:26;;6505:56;6497:65;;;;;;6595:1;6575:17;:21;:60;;;;;6618:17;6600:15;:35;6575:60;6567:69;;;;;;6664:22;6684:2;4570:4;6664:22;:::i;:::-;6649:11;:37;;6641:46;;;;;;4632:8;6700:18;:36;;6692:45;;;;;;6754:10;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6742:4:0;:22;;-1:-1:-1;;;;;;6742:22:0;;-1:-1:-1;;;;;6742:22:0;;;;;;;;;;;;;6769:30;;-1:-1:-1;;;6769:30:0;;287:32:2;;;6769:30:0;;;269:51:2;6769:9:0;;;;;;:20;;242:18:2;;6769:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6804:12:0;:23;;-1:-1:-1;;;;;;6804:23:0;-1:-1:-1;;;;;6804:23:0;;;;;-1:-1:-1;;;;6832:12:0;6839:5;-1:-1:-1;6832:12:0;:::i;:::-;-1:-1:-1;6849:6:0;:16;6858:7;6849:6;:16;:::i;:::-;-1:-1:-1;6870:16:0;:31;;;6925:4;6906:25;;;;:10;:25;;;;;;;;:48;;;6964:51;1133:25:2;;;6964:51:0;;1106:18:2;6964:51:0;;;;;;;7020:21;:41;;;7066:19;:37;;;7108:15;:29;;;7142:58;7044:17;7088:15;7126:11;7142:9;:58::i;:::-;7205:18;:35;;;7269:36;7287:18;7269:15;:36;:::i;:::-;7245:21;:60;-1:-1:-1;;;;;;;;;6026:1284:0:o;10880:86::-;10922:13;10949:4;:12;;10942:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10880:86;:::o;10106:156::-;10157:13;10208:39;10218:4;:21;;;10241:2;10245:1;10208:9;:39::i;:::-;10191:65;;;;;;;;:::i;:::-;;;;;;;;;;;;;10177:80;;10106:156;:::o;9096:323::-;9191:4;9202:35;9212:10;9224:3;9229:7;9202:9;:35::i;:::-;-1:-1:-1;9283:16:0;;9312:9;;;;9308:91;;9337:55;;-1:-1:-1;;;9337:55:0;;-1:-1:-1;;;;;9337:27:0;;;;;:55;;9365:10;;9377:7;;9386:5;;;;9337:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9329:64;;;;;;-1:-1:-1;9410:4:0;;9096:323;-1:-1:-1;;;;;9096:323:0:o;11155:100::-;11204:13;11231:4;:19;;11224:26;;;;;:::i;8167:306::-;8211:19;4684:42;-1:-1:-1;;;;;8249:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8211:63;;8279:3;-1:-1:-1;;;;;8279:11:0;;8291:147;;;;;;;;8336:4;:15;;;8291:147;;;;8368:6;9577:4;:9;-1:-1:-1;;;;;9577:9:0;;;;;;9511:81;8368:6;-1:-1:-1;;;;;8291:147:0;;;;;-1:-1:-1;;;;;8291:147:0;;;;;;;;;;;;;;8279:160;;;;;;-1:-1:-1;;;;;;8279:160:0;;;12570:13:2;;8279:160:0;;;12552:32:2;12632:17;;;12626:24;12622:50;;;12600:20;;;12593:80;12708:17;;;12702:24;12817:21;;12795:20;;;12788:51;12899:4;12887:17;;;12881:24;12877:33;12855:20;;;12848:63;12524:19;;8279:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8444:4;:9;;;;;;;;;;-1:-1:-1;;;;;8444:9:0;-1:-1:-1;;;;;8444:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8206:267;8167:306::o;7737:102::-;9488:12;;-1:-1:-1;;;;;9488:12:0;5866:10;:23;5858:32;;;;;;7811:12;:23:::1;7826:8:::0;7811:12;:23:::1;:::i;5004:20::-:0;;;;;;;:::i;7315:310::-;9488:12;;-1:-1:-1;;;;;9488:12:0;5866:10;:23;5858:32;;;;;;7479:12;:23:::1;7494:8:::0;7479:12;:23:::1;:::i;:::-;-1:-1:-1::0;7507:12:0;:23:::1;7522:8:::0;7507:12;:23:::1;:::i;:::-;-1:-1:-1::0;7535:13:0;:25:::1;7551:9:::0;7535:13;:25:::1;:::i;:::-;-1:-1:-1::0;7565:12:0;:23:::1;7580:8:::0;7565:12;:23:::1;:::i;:::-;-1:-1:-1::0;7593:19:0;:27:::1;7615:5:::0;7593:19;:27:::1;:::i;:::-;;7315:310:::0;;;;;:::o;11064:86::-;11106:13;11133:4;:12;;11126:19;;;;;:::i;8478:124::-;8544:4;8562:35;8572:10;8584:3;8589:7;8562:9;:35::i;10789:86::-;10831:13;10858:4;:12;;10851:19;;;;;:::i;8062:100::-;9488:12;;-1:-1:-1;;;;;9488:12:0;5866:10;:23;5858:32;;;;;;8130:19;:27:::1;8152:5:::0;8130:19;:27:::1;:::i;10267:152::-:0;10316:13;10367:37;10377:4;:19;;;10398:2;10402:1;10367:9;:37::i;7844:106::-;9488:12;;-1:-1:-1;;;;;9488:12:0;5866:10;:23;5858:32;;;;;;7920:13;:25:::1;7936:9:::0;7920:13;:25:::1;:::i;10424:146::-:0;10530:15;;10469:13;;10520:38;;10530:21;;10548:3;10530:21;:::i;:::-;10553:1;10556;10520:9;:38::i;:::-;10503:61;;;;;;;;:::i;7630:102::-;9488:12;;-1:-1:-1;;;;;9488:12:0;5866:10;:23;5858:32;;;;;;7704:12;:23:::1;7719:8:::0;7704:12;:23:::1;:::i;5909:111::-:0;5948:4;:11;;;5947:12;5939:21;;;;;;9739:16;;5973:18;5965:27;;;;;;5997:4;:18;;-1:-1:-1;;5997:18:0;6011:4;5997:18;;;5909:111::o;10575:209::-;10677:18;;10708:21;;10621:13;10743:9;;;;;:36;;;10774:5;10756:15;:23;10743:36;10734:45;;10575:209;;;:::o;10971:88::-;11014:13;11041:4;:13;;11034:20;;;;;:::i;13455:212::-;-1:-1:-1;;;;;13553:18:0;;;13542:4;13553:18;;;:10;:18;;;;;;;;:38;;;;;;:28;;;;:38;;;;;:48;;;13611:35;1133:25:2;;;13542:4:0;;13553:38;:18;13611:35;;1106:18:2;13611:35:0;;;;;;;-1:-1:-1;13658:4:0;13455:212;;;;;:::o;13673:434::-;13755:4;13800:1;13790:7;:11;13782:20;;;;;;13809:14;13827:12;13843:15;:13;:15::i;:::-;13808:50;;;;;13868:7;13864:53;;;13903:6;13892:7;:17;;13884:26;;;;;;13950:7;13930:16;13940:5;-1:-1:-1;;;;;9841:17:0;9820:7;9841:17;;;:10;:17;;;;;:25;;9765:106;13930:16;:27;;13922:36;;;;;;-1:-1:-1;;;;;13964:17:0;;;;;;;:10;:17;;;;;;:36;;;;;;;14006:15;;;;;;;;;;:34;;;;;;14051:29;;;;;;13993:7;1133:25:2;;1121:2;1106:18;;987:177;14051:29:0;;;;;;;;-1:-1:-1;14093:4:0;;13673:434;-1:-1:-1;;;;;13673:434:0:o;11262:2187::-;11384:13;11408:4;11384:29;;11419:13;4684:42;-1:-1:-1;;;;;11435:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11419:30;-1:-1:-1;;;;;;11469:13:0;;;;;;;11455:11;11520:68;11469:13;11555;9739:16;;;9674:86;11555:13;11570:17;11520:26;:68::i;:::-;11488:100;;;4684:42;-1:-1:-1;;;;;11614:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11606:57;;-1:-1:-1;;;11606:57:0;;-1:-1:-1;;;;;14173:15:2;;;11606:57:0;;;14155:34:2;14225:15;;;14205:18;;;14198:43;11657:5:0;14257:18:2;;;14250:49;11606:36:0;;;;;;;14090:18:2;;11606:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11594:9;:69;;-1:-1:-1;;;;;;11594:69:0;-1:-1:-1;;;;;11594:69:0;;;;;;;;;11669:42;;-1:-1:-1;;;11669:42:0;;-1:-1:-1;;;;;287:32:2;;;11669:42:0;;;269:51:2;11669:23:0;;;;;;;242:18:2;;11669:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11717:19;4684:42;-1:-1:-1;;;;;11755:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11717:63;;11786:44;11795:5;11810:3;11816:13;9739:16;;;9674:86;11816:13;11786:8;:44::i;:::-;;11840:14;11858:68;11885:6;11893:13;9739:16;;;9674:86;11893:13;11908:17;11858:26;:68::i;:::-;11836:90;;;11936:14;11954:66;11981:6;11989:13;9739:16;;;9674:86;11954:66;11932:88;-1:-1:-1;;12030:15:0;;12026:543;;12054:3;-1:-1:-1;;;;;12054:8:0;;12063:498;;;;;;;;12106:6;:22;;12123:5;12106:22;;;12115:5;12106:22;-1:-1:-1;;;;;12063:498:0;;;;;12145:6;12144:7;:23;;12162:5;12144:23;;;12154:5;12144:23;-1:-1:-1;;;;;12063:498:0;;;12180:5;12063:498;;;;;;12204:6;:28;;12224:8;12204:28;;;12213:8;12204:28;12063:498;;;;;;12252:6;12251:7;:29;;12272:8;12251:29;;;12261:8;12251:29;12063:498;;;;;;12304:6;:61;;4570:4;12334:11;12318:13;9739:16;;;9674:86;12318:13;:27;:47;;;;;:::i;:::-;;12304:61;;;12313:1;12304:61;12063:498;;;;12390:6;12389:7;:61;;4570:4;12419:11;12403:13;9739:16;;;9674:86;12403:13;:27;:47;;;;;:::i;:::-;;12389:61;;;12399:1;12389:61;12063:498;;;;12470:1;12063:498;;;;12491:1;12063:498;;;;12511:9;9488:12;;-1:-1:-1;;;;;9488:12:0;;9427:78;12511:9;-1:-1:-1;;;;;12063:498:0;;;;;12538:15;12063:498;;;12054:508;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;12026:543;12600:3;-1:-1:-1;;;;;12600:8:0;;12609:526;;;;;;;;12651:6;:22;;12668:5;12651:22;;;12660:5;12651:22;-1:-1:-1;;;;;12609:526:0;;;;;12689:6;12688:7;:23;;12706:5;12688:23;;;12698:5;12688:23;-1:-1:-1;;;;;12609:526:0;;;12723:5;12609:526;;;;;;12746:6;:28;;12766:8;12746:28;;;12755:8;12746:28;12609:526;;;;;;12793:6;12792:7;:29;;12813:8;12792:29;;;12802:8;12792:29;12609:526;;;;;;12844:6;:83;;4570:4;12895:11;4570:4;12875:31;12858:13;9739:16;;;9674:86;12858:13;:49;:69;;;;;:::i;:::-;;12844:83;;;12853:1;12844:83;12609:526;;;;12951:6;12950:7;:83;;4570:4;13001:11;4570:4;12981:31;12964:13;9739:16;;;9674:86;12964:13;:49;:69;;;;;:::i;:::-;;12950:83;;;12960:1;12950:83;12609:526;;;;13052:1;12609:526;;;;13072:1;12609:526;;;;13091:5;-1:-1:-1;;;;;12609:526:0;;;;;13113:15;12609:526;;;12600:536;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;12575:15:0;12574:562;-1:-1:-1;;;;;13146:13:0;;;:17;13142:298;;4684:42;-1:-1:-1;;;;;13172:23:0;;13202:5;-1:-1:-1;;;;;13202:13:0;;13217:215;;;;;;;;13264:5;-1:-1:-1;;;;;13217:215:0;;;;;13287:5;-1:-1:-1;;;;;13217:215:0;;;;;13305:5;13217:215;;;;;;13329:9;9488:12;;-1:-1:-1;;;;;9488:12:0;;9427:78;13329:9;-1:-1:-1;;;;;13217:215:0;;;;;13356:13;;;;13217:215;;;;;;;;-1:-1:-1;13217:215:0;;;;;;;;;;;;;;;13172:261;;-1:-1:-1;;;;;;13172:261:0;;;;;;;16619:13:2;;16615:22;;13172:261:0;;;16597:41:2;16686:17;;;16680:24;16676:33;;16654:20;;;16647:63;16758:17;;16752:24;16778:8;16748:39;16726:20;;;16719:69;16836:17;;;16830:24;16826:33;;16804:20;;;16797:63;16916:4;16904:17;;16898:24;16876:20;;;16869:54;16577:3;16967:17;;16961:24;16939:20;;;16932:54;17046:4;17034:17;;;17028:24;17024:33;;;17002:20;;;16995:63;16531:19;;13172:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13142:298;11368:2077;;;;;;;11262:2187;;;:::o;20359:1103::-;20455:17;20479:10;20501:12;20492:6;:21;:45;;20531:6;20492:45;;;20516:12;20492:45;20479:58;;20542:10;20578:2;20569:6;:11;:29;;20597:1;20569:29;;;20583:11;20592:2;20583:6;:11;:::i;:::-;20564:35;;:2;:35;:::i;:::-;20555:44;;:6;:44;:::i;:::-;20542:57;;20608:2;20614:1;20608:7;20604:35;;20623:10;;;;;;;;;;;;;-1:-1:-1;;;20623:10:0;;;;;;;;;20604:35;20661:1;20682:2;20689:54;20703:1;20696:4;:8;20689:54;;;20712:10;20720:2;20712:10;;:::i;:::-;;-1:-1:-1;20728:9:0;;;;:::i;:::-;;;;20689:54;;;20764:2;20754:7;:12;:31;;20779:6;:2;20784:1;20779:6;:::i;:::-;20754:31;;;20769:7;20754:31;20747:38;-1:-1:-1;20790:15:0;20816:6;:2;20821:1;20816:6;:::i;:::-;20809:4;:13;:59;;20867:1;20809:59;;;20841:2;20837:1;20825:9;20841:2;20825:4;:9;:::i;:::-;:13;;;;:::i;:::-;:18;:39;;20863:1;20851:9;20858:2;20851:4;:9;:::i;:::-;:13;;;;:::i;:::-;20825:39;;;20846:2;20825:39;20790:79;;20879:9;20874:584;20898:14;20905:7;20898:4;:14;:::i;:::-;20894:1;:18;20874:584;;;20925:12;20944:14;20951:7;20944:4;:14;:::i;:::-;20940:1;:18;:57;;20995:2;20988:1;20977:8;20984:1;20977:4;:8;:::i;:::-;:12;;;;:::i;:::-;20972:18;;:2;:18;:::i;:::-;20966:25;;:2;:25;:::i;:::-;20965:32;;;;:::i;:::-;20940:57;;;20961:1;20940:57;21024:12;;;21034:1;21024:12;;;;;;;;;20925:72;;-1:-1:-1;21003:18:0;;21024:12;;;;;;;;;;;-1:-1:-1;;21003:33:0;-1:-1:-1;21060:16:0;21066:4;21074:2;21060:16;:::i;:::-;21053:24;;21042:5;21048:1;21042:8;;;;;;;;:::i;:::-;;;;:35;-1:-1:-1;;;;;21042:35:0;;;;;;;;;21113:3;21125:5;21096:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;21096:36:0;;;;;;;;;;-1:-1:-1;21159:1:0;21147:9;21154:2;21147:4;:9;:::i;:::-;:13;;;;:::i;:::-;21143:1;:17;21139:314;;;21202:1;21189:9;21196:2;21189:4;:9;:::i;:::-;21188:15;;;;:::i;:::-;21183:1;21174:5;:1;21178;21174:5;:::i;:::-;21173:11;;;;:::i;:::-;:30;21169:92;;21243:3;21226:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;21213:40;;21169:92;21139:314;;;21331:1;21327;21310:14;21317:7;21310:4;:14;:::i;:::-;:18;;;;:::i;:::-;:22;;;;:::i;:::-;21305:28;;:2;:28;:::i;:::-;21290:11;21294:7;21290:2;:11;:::i;:::-;21285:16;;:2;:16;:::i;:::-;21284:49;;;;:::i;:::-;21337:1;21284:54;21280:167;;21348:5;;;;21280:167;21388:1;21376:9;21383:2;21376:4;:9;:::i;:::-;:13;;;;:::i;:::-;21371:1;:18;21367:80;;21429:3;21412:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;21399:40;;21367:80;20919:539;;20914:3;;;;;:::i;:::-;;;;20874:584;;;;20474:988;;;;;20359:1103;;;;;:::o;20001:353::-;20105:13;20120:10;20137:17;20165:72;20211:6;:24;;20230:5;20211:24;;;20220:7;20211:24;20182:6;20181:7;:25;;20201:5;20181:25;;;20191:7;20181:25;20171:36;;-1:-1:-1;;;20171:36:0;:::i;:::-;:65;;;;:::i;:::-;20165:5;:72::i;:::-;20137:101;;20250:30;20270:9;20250:19;:30::i;:::-;20243:37;-1:-1:-1;20300:10:0;20307:3;20243:37;20300:10;:::i;:::-;20292:19;;:4;:19;:::i;:::-;20285:26;;20324:25;20344:4;20324:19;:25::i;:::-;20316:33;;20132:222;20001:353;;;;;;:::o;19765:231::-;19868:6;19878:1;19873;19868:6;;19867:12;19902:85;19916:6;19909:4;:13;19902:85;;;19940:4;19931:13;;19979:1;19971:4;19964;19959:2;:9;;;;;:::i;:::-;;:16;19958:22;;;;;:::i;:::-;;19951:29;;19902:85;;;19836:156;19765:231;;;:::o;16334:3426::-;16408:10;4870;-1:-1:-1;;;;;16449:30:0;;;;;;:63;;-1:-1:-1;4927:49:0;-1:-1:-1;;;;;16483:29:0;;;16449:63;16441:77;;;;-1:-1:-1;;;16441:77:0;;21293:2:2;16441:77:0;;;21275:21:2;21332:1;21312:18;;;21305:29;-1:-1:-1;;;21350:18:2;;;21343:31;21391:18;;16441:77:0;;;;;;;;;-1:-1:-1;;;;;16565:2:0;16540:27;;;;-1:-1:-1;;;;;16653:41:0;;16650:1;16646:49;16729:9;;;16787:18;16781:25;;16778:1;16774:33;16841:9;;;16899:10;16893:17;;16890:1;16886:25;16945:9;;;17003:6;16997:13;;16994:1;16990:21;17045:9;;;17103:4;17097:11;;17094:1;17090:19;;;17143:9;;;17201:3;17195:10;;17192:1;17188:18;17240:9;;;17292:10;;;17289:1;17285:18;;;17337:9;;;;17382:10;;;16820;;16924;;;17024;;;17122;17219;;;17316;17405;17439:3;17432:10;;17428:75;;17464:3;17458;:9;17448:5;:20;;17444:24;;17428:75;;;17499:3;17493;:9;17483:5;:20;;17479:24;;17428:75;17589:9;;;17584:3;17580:19;;;17614:11;;;;17672:9;;;;17722;;17713:19;;;17747:11;;;17805:9;17855;;17846:19;;;17880:11;;;17938:9;17988;;17979:19;;;18013:11;;;18071:9;18121;;18112:19;;;18146:11;;;18204:9;18254;;18245:19;;;18279:11;;;18337:9;18387;;18378:19;;;18412:11;;;18470:9;18520;;18511:19;;;18545:11;;;18603:9;18653;;18644:19;;;18678:11;;;18736:9;18786;;18777:19;;;18811:11;;;18869:9;18919;;18910:19;;;18944:11;;;19002:9;19052;;19043:19;;;19077:11;;;19135:9;19185;;19176:19;;;19210:11;;;;19268:9;;;;19318;;19309:19;;;;;17589:9;-1:-1:-1;;17527:17:0;;17549:2;17526:25;17650:10;;;;;;;17640:21;17783:10;;;;;;;17773:21;;;;17916:10;;;;;;;17906:21;;;;18049:10;;;;;;;18039:21;;;;18182:10;;;;;;;18172:21;;;;18315:10;;;;;;;18305:21;;;;18448:10;;;;;;;18438:21;18581:10;;;;;;;18571:21;18714:10;;;;;;;18704:21;18847:10;;;;;;;18837:21;18980:10;;;;;;;18970:21;19113:10;;;;;;;19103:21;19246:10;;;;;;;19236:21;19379:10;;;;;;;19369:21;19434:24;19426:32;;-1:-1:-1;;19489:53:0;;17541:3;19488:62;;;;19595:39;19579:55;;19578:64;;19658:17;;;;;;;;;:92;;19719:12;-1:-1:-1;;;;;19688:43:0;:27;19708:6;19688:19;:27::i;:::-;-1:-1:-1;;;;;19688:43:0;;;:62;;19743:7;19658:92;;19688:62;19734:6;19658:92;;;19678:7;19658:92;19651:99;16334:3426;-1:-1:-1;;;;;;;;;16334:3426:0:o;14114:2215::-;14178:20;14221:15;14246:1;14239:4;:8;;;:57;;14290:4;14283:12;;14239:57;;;14266:4;14259:12;;14258:13;;14239:57;14221:75;-1:-1:-1;4814:9:0;14310:36;;;14302:50;;;;-1:-1:-1;;;14302:50:0;;21622:2:2;14302:50:0;;;21604:21:2;21661:1;21641:18;;;21634:29;-1:-1:-1;;;21679:18:2;;;21672:31;21720:18;;14302:50:0;21420:324:2;14302:50:0;14360:13;14376:7;14386:3;14376:13;14393:1;14376:18;:93;;-1:-1:-1;;;14376:93:0;;;14397:34;14376:93;14360:109;;;-1:-1:-1;14489:3:0;14479:13;;:18;14475:83;;14516:34;14508:42;14555:3;14507:51;14475:83;14578:3;14568:13;;:18;14564:83;;14605:34;14597:42;14644:3;14596:51;14564:83;14667:3;14657:13;;:18;14653:83;;14694:34;14686:42;14733:3;14685:51;14653:83;14756:4;14746:14;;:19;14742:84;;14784:34;14776:42;14823:3;14775:51;14742:84;14846:4;14836:14;;:19;14832:84;;14874:34;14866:42;14913:3;14865:51;14832:84;14936:4;14926:14;;:19;14922:84;;14964:34;14956:42;15003:3;14955:51;14922:84;15026:4;15016:14;;:19;15012:84;;15054:34;15046:42;15093:3;15045:51;15012:84;15116:5;15106:15;;:20;15102:85;;15145:34;15137:42;15184:3;15136:51;15102:85;15207:5;15197:15;;:20;15193:85;;15236:34;15228:42;15275:3;15227:51;15193:85;15298:5;15288:15;;:20;15284:85;;15327:34;15319:42;15366:3;15318:51;15284:85;15389:5;15379:15;;:20;15375:85;;15418:34;15410:42;15457:3;15409:51;15375:85;15480:6;15470:16;;:21;15466:86;;15510:34;15502:42;15549:3;15501:51;15466:86;15572:6;15562:16;;:21;15558:86;;15602:34;15594:42;15641:3;15593:51;15558:86;15664:6;15654:16;;:21;15650:86;;15694:34;15686:42;15733:3;15685:51;15650:86;15756:6;15746:16;;:21;15742:86;;15786:34;15778:42;15825:3;15777:51;15742:86;15848:7;15838:17;;:22;15834:86;;15879:33;15871:41;15917:3;15870:50;15834:86;15940:7;15930:17;;:22;15926:85;;15971:32;15963:40;16008:3;15962:49;15926:85;16031:7;16021:17;;:22;16017:83;;16062:30;16054:38;16097:3;16053:47;16017:83;16120:7;16110:17;;:22;16106:78;;16151:25;16143:33;16181:3;16142:42;16106:78;16203:1;16196:4;:8;;;16192:47;;;16234:5;-1:-1:-1;;16214:25:0;;;;;:::i;:::-;;16206:33;;16192:47;16296:7;16287:5;:17;:22;:30;;16316:1;16287:30;;;16312:1;16287:30;16270:48;;16280:2;16271:5;:11;;16270:48;16247:72;;14205:2120;;14114:2215;;;:::o;-1:-1:-1:-;;;;;;;;:::o;331:250:2:-;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:2;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:2;926:45;;;;973:2;922:54;;586:396;-1:-1:-1;;586:396:2:o;1169:131::-;-1:-1:-1;;;;;1244:31:2;;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:2: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:2;2129:18;;2116:32;2157:33;2116:32;2157:33;:::i;:::-;1817:456;;2209:7;;-1:-1:-1;;;2263:2:2;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:2;;;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:2: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:2;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:2;;4283:2;4268:18;;4255:32;;-1:-1:-1;4334:3:2;4319:19;;4306:33;;4386:3;4371:19;;4358:33;;-1:-1:-1;4438:3:2;4423:19;;4410:33;;-1:-1:-1;4490:3:2;4475:19;;4462:33;;-1:-1:-1;4542:3:2;4527:19;;;4514:33;;-1:-1:-1;3461:1092:2;-1:-1:-1;;;3461:1092:2: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:2;5073:18;;5060:32;;-1:-1:-1;5143:2:2;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:2;5499:11;;-1:-1:-1;;;4747:794:2: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:2;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:545;8288:2;8283:3;8280:11;8277:448;;;8324:1;8349:5;8345:2;8338:17;8394:4;8390:2;8380:19;8464:2;8452:10;8448:19;8445:1;8441:27;8435:4;8431:38;8500:4;8488:10;8485:20;8482:47;;;-1:-1:-1;8523:4:2;8482:47;8578:2;8573:3;8569:12;8566:1;8562:20;8556:4;8552:31;8542:41;;8633:82;8651:2;8644:5;8641:13;8633:82;;;8696:17;;;8677:1;8666:13;8633:82;;8277:448;8186:545;;;:::o;8907:1352::-;9033:3;9027:10;9060:18;9052:6;9049:30;9046:56;;;9082:18;;:::i;:::-;9111:97;9201:6;9161:38;9193:4;9187:11;9161:38;:::i;:::-;9155:4;9111:97;:::i;:::-;9263:4;;9327:2;9316:14;;9344:1;9339:663;;;;10046:1;10063:6;10060:89;;;-1:-1:-1;10115:19:2;;;10109:26;10060:89;-1:-1:-1;;8864:1:2;8860:11;;;8856:24;8852:29;8842:40;8888:1;8884:11;;;8839:57;10162:81;;9309:944;;9339:663;8133:1;8126:14;;;8170:4;8157:18;;-1:-1:-1;;9375:20:2;;;9493:236;9507:7;9504:1;9501:14;9493:236;;;9596:19;;;9590:26;9575:42;;9688:27;;;;9656:1;9644:14;;;;9523:19;;9493:236;;;9497:3;9757:6;9748:7;9745:19;9742:201;;;9818:19;;;9812:26;-1:-1:-1;;9901:1:2;9897:14;;;9913:3;9893:24;9889:37;9885:42;9870:58;9855:74;;9742:201;-1:-1:-1;;;;;9989:1:2;9973:14;;;9969:22;9956:36;;-1:-1:-1;8907:1352:2:o;10264:127::-;10325:10;10320:3;10316:20;10313:1;10306:31;10356:4;10353:1;10346:15;10380:4;10377:1;10370:15;10396:127;10457:10;10452:3;10448:20;10445:1;10438:31;10488:4;10485:1;10478:15;10512:4;10509:1;10502:15;10528:120;10568:1;10594;10584:35;;10599:18;;:::i;:::-;-1:-1:-1;10633:9:2;;10528:120::o;10653:125::-;10718:9;;;10739:10;;;10736:36;;;10752:18;;:::i;10783:455::-;11015:3;11053:6;11047:13;11069:66;11128:6;11123:3;11116:4;11108:6;11104:17;11069:66;:::i;:::-;-1:-1:-1;;;11157:16:2;;11182:21;;;-1:-1:-1;11230:1:2;11219:13;;10783:455;-1:-1:-1;10783:455:2:o;11243:559::-;-1:-1:-1;;;;;11456:32:2;;11438:51;;11520:2;11505:18;;11498:34;;;11568:2;11563;11548:18;;11541:30;;;11587:18;;11580:34;;;11607:6;11657;11651:3;11636:19;;11623:49;11722:1;11692:22;;;11716:3;11688:32;;;11681:43;;;;11785:2;11764:15;;;-1:-1:-1;;11760:29:2;11745:45;11741:55;;11243:559;-1:-1:-1;;;11243:559:2:o;11807:277::-;11874:6;11927:2;11915:9;11906:7;11902:23;11898:32;11895:52;;;11943:1;11940;11933:12;11895:52;11975:9;11969:16;12028:5;12021:13;12014:21;12007:5;12004:32;11994:60;;12050:1;12047;12040:12;12089:251;12159:6;12212:2;12200:9;12191:7;12187:23;12183:32;12180:52;;;12228:1;12225;12218:12;12180:52;12260:9;12254:16;12279:31;12304:5;12279:31;:::i;12922:245::-;13001:6;13009;13062:2;13050:9;13041:7;13037:23;13033:32;13030:52;;;13078:1;13075;13068:12;13030:52;-1:-1:-1;;13101:16:2;;13157:2;13142:18;;;13136:25;13101:16;;13136:25;;-1:-1:-1;12922:245:2:o;13172:168::-;13245:9;;;13276;;13293:15;;;13287:22;;13273:37;13263:71;;13314:18;;:::i;13345:452::-;13577:3;13615:6;13609:13;13631:66;13690:6;13685:3;13678:4;13670:6;13666:17;13631:66;:::i;:::-;-1:-1:-1;;;13719:16:2;;13744:18;;;-1:-1:-1;13789:1:2;13778:13;;13345:452;-1:-1:-1;13345:452:2:o;14614:1223::-;14832:13;;-1:-1:-1;;;;;80:31:2;68:44;;14800:3;14785:19;;14904:4;14896:6;14892:17;14886:24;14919:54;14967:4;14956:9;14952:20;14938:12;-1:-1:-1;;;;;80:31:2;68:44;;14:104;14919:54;;15022:4;15014:6;15010:17;15004:24;15037:60;15091:4;15080:9;15076:20;15060:14;13883:8;13872:20;13860:33;;13802:97;15037:60;;15146:4;15138:6;15134:17;15128:24;15161:54;15209:4;15198:9;15194:20;15178:14;14593:1;14582:20;14570:33;;14518:91;15161:54;;15264:4;15256:6;15252:17;15246:24;15279:54;15327:4;15316:9;15312:20;15296:14;14593:1;14582:20;14570:33;;14518:91;15279:54;;15389:4;15381:6;15377:17;15371:24;15364:4;15353:9;15349:20;15342:54;15452:4;15444:6;15440:17;15434:24;15427:4;15416:9;15412:20;15405:54;15515:4;15507:6;15503:17;15497:24;15490:4;15479:9;15475:20;15468:54;15541:6;15601:2;15593:6;15589:15;15583:22;15578:2;15567:9;15563:18;15556:50;;15625:6;15680:2;15672:6;15668:15;15662:22;15693:54;15743:2;15732:9;15728:18;15712:14;-1:-1:-1;;;;;80:31:2;68:44;;14:104;15693:54;-1:-1:-1;;15766:6:2;15814:15;;;15808:22;15788:18;;;;15781:50;14614:1223;:::o;15842:489::-;15939:6;15947;15955;15963;16016:3;16004:9;15995:7;15991:23;15987:33;15984:53;;;16033:1;16030;16023:12;15984:53;16062:9;16056:16;16046:26;;16115:2;16104:9;16100:18;16094:25;-1:-1:-1;;;;;16152:5:2;16148:46;16141:5;16138:57;16128:85;;16209:1;16206;16199:12;16128:85;16277:2;16262:18;;16256:25;16321:2;16306:18;;;16300:25;15842:489;;16232:5;;-1:-1:-1;15842:489:2;-1:-1:-1;;;15842:489:2:o;17069:184::-;17139:6;17192:2;17180:9;17171:7;17167:23;17163:32;17160:52;;;17208:1;17205;17198:12;17160:52;-1:-1:-1;17231:16:2;;17069:184;-1:-1:-1;17069:184:2:o;17258:128::-;17325:9;;;17346:11;;;17343:37;;;17360:18;;:::i;17391:422::-;17480:1;17523:5;17480:1;17537:270;17558:7;17548:8;17545:21;17537:270;;;17617:4;17613:1;17609:6;17605:17;17599:4;17596:27;17593:53;;;17626:18;;:::i;:::-;17676:7;17666:8;17662:22;17659:55;;;17696:16;;;;17659:55;17775:22;;;;17735:15;;;;17537:270;;;17541:3;17391:422;;;;;:::o;17818:806::-;17867:5;17897:8;17887:80;;-1:-1:-1;17938:1:2;17952:5;;17887:80;17986:4;17976:76;;-1:-1:-1;18023:1:2;18037:5;;17976:76;18068:4;18086:1;18081:59;;;;18154:1;18149:130;;;;18061:218;;18081:59;18111:1;18102:10;;18125:5;;;18149:130;18186:3;18176:8;18173:17;18170:43;;;18193:18;;:::i;:::-;-1:-1:-1;;18249:1:2;18235:16;;18264:5;;18061:218;;18363:2;18353:8;18350:16;18344:3;18338:4;18335:13;18331:36;18325:2;18315:8;18312:16;18307:2;18301:4;18298:12;18294:35;18291:77;18288:159;;;-1:-1:-1;18400:19:2;;;18432:5;;18288:159;18479:34;18504:8;18498:4;18479:34;:::i;:::-;18549:6;18545:1;18541:6;18537:19;18528:7;18525:32;18522:58;;;18560:18;;:::i;:::-;18598:20;;17818:806;-1:-1:-1;;;17818:806:2:o;18629:131::-;18689:5;18718:36;18745:8;18739:4;18718:36;:::i;18765:135::-;18804:3;18825:17;;;18822:43;;18845:18;;:::i;:::-;-1:-1:-1;18892:1:2;18881:13;;18765:135::o;18905:112::-;18937:1;18963;18953:35;;18968:18;;:::i;:::-;-1:-1:-1;19002:9:2;;18905:112::o;19022:148::-;19110:4;19089:12;;;19103;;;19085:31;;19128:13;;19125:39;;;19144:18;;:::i;19175:127::-;19236:10;19231:3;19227:20;19224:1;19217:31;19267:4;19264:1;19257:15;19291:4;19288:1;19281:15;19307:496;19486:3;19524:6;19518:13;19540:66;19599:6;19594:3;19587:4;19579:6;19575:17;19540:66;:::i;:::-;19669:13;;19628:16;;;;19691:70;19669:13;19628:16;19738:4;19726:17;;19691:70;:::i;:::-;19777:20;;19307:496;-1:-1:-1;;;;19307:496:2:o;19808:452::-;20040:3;20078:6;20072:13;20094:66;20153:6;20148:3;20141:4;20133:6;20129:17;20094:66;:::i;:::-;-1:-1:-1;;;20182:16:2;;20207:18;;;-1:-1:-1;20252:1:2;20241:13;;19808:452;-1:-1:-1;19808:452:2:o;20265:::-;20497:3;20535:6;20529:13;20551:66;20610:6;20605:3;20598:4;20590:6;20586:17;20551:66;:::i;:::-;-1:-1:-1;;;20639:16:2;;20664:18;;;-1:-1:-1;20709:1:2;20698:13;;20265:452;-1:-1:-1;20265:452:2:o;20722:166::-;20752:1;20793;20790;20779:16;20814:3;20804:37;;20821:18;;:::i;:::-;20878:3;20874:1;20871;20860:16;20855:27;20850:32;;;20722:166;;;;:::o;20893:193::-;20991:1;20980:16;;;20962;;;;20958:39;-1:-1:-1;;21012:23:2;;21047:8;21037:19;;21009:48;21006:74;;;21060:18;;:::i
Swarm Source
ipfs://89b21332a7f844a2ad056c5fcb825d444dfadab70a1d22596fdb97eb11d186d9
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.