// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import {LemonToken} from "./LemonToken.sol";
import {BondingCurve} from "./BondingCurve.sol";
import {IUniswapV3Factory, INonfungiblePositionManager, IWETH} from "./interfaces/IUniswap.sol";
/// @notice Factory that deploys a LemonToken + BondingCurve pair. The curve
/// receives the full token supply at construction and handles pump.fun-style
/// bonding trades until graduation, at which point it seeds a Uniswap V3 or
/// Sushi V3 pool with the raised WETH + remaining tokens.
contract LemonCurveFactory {
IWETH public immutable weth;
address public immutable platformFeeReceiver;
struct Launched {
address token;
address curve;
address deployer;
uint256 graduationThreshold;
uint16 creatorFeeBps;
uint8 dexKind; // 0 = Uniswap, 1 = Sushi
}
mapping(address token => Launched) public launches;
event CurveLaunched(
address indexed token,
address indexed curve,
address indexed deployer,
address dexFactory,
address positionManager,
uint8 dexKind,
uint256 graduationThreshold,
uint16 creatorFeeBps,
string name,
string symbol,
string tokenURI,
uint256 timestamp,
uint256 virtualTokenReserve,
uint256 virtualEthReserve,
uint256 totalSupply,
uint256 initialTokenReserve
);
constructor(IWETH _weth, address _platformFeeReceiver) {
weth = _weth;
platformFeeReceiver = _platformFeeReceiver;
}
struct LaunchParams {
string name;
string symbol;
string tokenURI;
address dexFactory; // Uniswap or Sushi V3 factory
address positionManager; // Matching NonfungiblePositionManager
uint8 dexKind; // 0 uni, 1 sushi (metadata for indexers)
uint256 graduationThreshold; // WETH raised trigger (wei)
uint256 virtualTokenReserve; // h (see BondingCurve)
uint256 virtualEthReserve; // r
uint16 creatorFeeBps; // 0..1000
address creatorFeeReceiver; // 0 → defaults to msg.sender
}
function launch(LaunchParams calldata p) external returns (address token, address curve) {
require(bytes(p.name).length > 0 && bytes(p.symbol).length > 0, "meta");
require(p.dexFactory != address(0) && p.positionManager != address(0), "dex");
require(p.graduationThreshold > 0, "threshold=0");
require(p.virtualEthReserve > 0 && p.virtualTokenReserve > 0, "vreserves");
require(p.creatorFeeBps <= 1000, "creatorFee>10%");
require(p.dexKind <= 1, "dexKind");
// 1) Deploy token — mint entire supply to the yet-to-exist curve address is
// a chicken-and-egg problem, so we mint to `this`, then transfer to the
// curve immediately after construction.
LemonToken tok = new LemonToken(p.name, p.symbol, p.tokenURI, msg.sender, address(this));
token = address(tok);
// 2) Deploy curve
BondingCurve c = new BondingCurve(
tok,
weth,
IUniswapV3Factory(p.dexFactory),
INonfungiblePositionManager(p.positionManager),
msg.sender,
p.creatorFeeReceiver == address(0) ? msg.sender : p.creatorFeeReceiver,
platformFeeReceiver,
p.creatorFeeBps,
p.graduationThreshold,
p.virtualTokenReserve,
p.virtualEthReserve
);
curve = address(c);
// 3) Move full supply into the curve
uint256 supply = tok.totalSupply();
require(tok.transfer(curve, supply), "seed");
launches[token] = Launched({
token: token,
curve: curve,
deployer: msg.sender,
graduationThreshold: p.graduationThreshold,
creatorFeeBps: p.creatorFeeBps,
dexKind: p.dexKind
});
// Enriched event carries curve config + initial reserves so terminals
// (DEX Screener launchpad module, GeckoTerminal, GMGN, etc.) can
// bootstrap a chart from ONE event, without a follow-up eth_call —
// mirrors pump.fun's createEvent shape.
emit CurveLaunched(
token, curve, msg.sender,
p.dexFactory, p.positionManager, p.dexKind,
p.graduationThreshold, p.creatorFeeBps,
p.name, p.symbol, p.tokenURI,
block.timestamp,
p.virtualTokenReserve, p.virtualEthReserve,
supply, supply
);
}
// --- Terminal-friendly views ------------------------------------------
struct TokenInfo {
address token;
address curve;
address deployer;
uint256 graduationThreshold;
uint16 creatorFeeBps;
uint8 dexKind;
bool graduated;
address poolAfterGraduation;
address lpLocker;
uint256 tokenReserve;
uint256 ethReserve;
uint256 virtualTokenReserve;
uint256 virtualEthReserve;
}
/// @notice One-call snapshot of a launched token — Flap's getTokenV2 equivalent.
function getTokenInfo(address token) external view returns (TokenInfo memory info) {
Launched memory L = launches[token];
info.token = L.token;
info.curve = L.curve;
info.deployer = L.deployer;
info.graduationThreshold = L.graduationThreshold;
info.creatorFeeBps = L.creatorFeeBps;
info.dexKind = L.dexKind;
if (L.curve == address(0)) return info;
BondingCurve c = BondingCurve(payable(L.curve));
info.graduated = c.graduated();
info.poolAfterGraduation = c.poolAfterGraduation();
info.lpLocker = c.lpLockerAddress();
info.tokenReserve = c.tokenReserve();
info.ethReserve = c.ethReserve();
info.virtualTokenReserve = c.virtualTokenReserve();
info.virtualEthReserve = c.virtualEthReserve();
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "_weth",
"type": "address",
"internalType": "contract IWETH"
},
{
"name": "_platformFeeReceiver",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "CurveLaunched",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "curve",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "deployer",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "dexFactory",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "positionManager",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "dexKind",
"type": "uint8",
"indexed": false,
"internalType": "uint8"
},
{
"name": "graduationThreshold",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "creatorFeeBps",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
},
{
"name": "name",
"type": "string",
"indexed": false,
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"indexed": false,
"internalType": "string"
},
{
"name": "tokenURI",
"type": "string",
"indexed": false,
"internalType": "string"
},
{
"name": "timestamp",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "virtualTokenReserve",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "virtualEthReserve",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "totalSupply",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "initialTokenReserve",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "getTokenInfo",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "info",
"type": "tuple",
"components": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "curve",
"type": "address",
"internalType": "address"
},
{
"name": "deployer",
"type": "address",
"internalType": "address"
},
{
"name": "graduationThreshold",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "creatorFeeBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "dexKind",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "graduated",
"type": "bool",
"internalType": "bool"
},
{
"name": "poolAfterGraduation",
"type": "address",
"internalType": "address"
},
{
"name": "lpLocker",
"type": "address",
"internalType": "address"
},
{
"name": "tokenReserve",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "ethReserve",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "virtualTokenReserve",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "virtualEthReserve",
"type": "uint256",
"internalType": "uint256"
}
],
"internalType": "struct LemonCurveFactory.TokenInfo"
}
],
"stateMutability": "view"
},
{
"name": "launch",
"type": "function",
"inputs": [
{
"name": "p",
"type": "tuple",
"components": [
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"internalType": "string"
},
{
"name": "tokenURI",
"type": "string",
"internalType": "string"
},
{
"name": "dexFactory",
"type": "address",
"internalType": "address"
},
{
"name": "positionManager",
"type": "address",
"internalType": "address"
},
{
"name": "dexKind",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "graduationThreshold",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "virtualTokenReserve",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "virtualEthReserve",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "creatorFeeBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "creatorFeeReceiver",
"type": "address",
"internalType": "address"
}
],
"internalType": "struct LemonCurveFactory.LaunchParams"
}
],
"outputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "curve",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "launches",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "curve",
"type": "address",
"internalType": "address"
},
{
"name": "deployer",
"type": "address",
"internalType": "address"
},
{
"name": "graduationThreshold",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "creatorFeeBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "dexKind",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "platformFeeReceiver",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "weth",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IWETH"
}
],
"stateMutability": "view"
}
]0x60c03461009157601f614f6e38819003918201601f19168301916001600160401b038311848410176100955780849260409485528339810103126100915780516001600160a01b03918282168203610091576020015191821682036100915760805260a052604051614ec490816100aa82396080518181816070015261049a015260a05181818160ba01526104e00152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608080604052600436101562000013575f80fd5b5f3560e01c90816319f8fe9d146200023b575080631f2d855014620001b95780631f69565f14620000e95780632d656ad714620000a357633fc8cef31462000059575f80fd5b346200009f575f3660031901126200009f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b346200009f575f3660031901126200009f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346200009f5760203660031901126200009f576004356001600160a01b0380821682036200009f576200011f6101a09262000b8d565b604051918082511683528060208301511660208401528060408301511660408401526060820151606084015261ffff608083015116608084015260ff60a08301511660a084015260c0820151151560c08401528060e08301511660e0840152610100908183015116908301526101208082015190830152610140808201519083015261016080820151908301526101808091015190820152f35b346200009f5760203660031901126200009f576004356001600160a01b03818116918290036200009f5760c0915f525f60205260ff60405f209180835416928160018201541691600282015416600460038301549201549260405195865260208601526040850152606084015261ffff8116608084015260101c1660a0820152f35b346200009f576003196020368201126200009f5767ffffffffffffffff600435116200009f5761016090600435360301126200009f576200028160048035018062000a88565b905015158062000a67575b1562000a3e576001600160a01b03620002aa60043560640162000abe565b1615158062000a1c575b15620009f15760c4600435013515620009be576101046004350135151580620009ae575b156200097d576103e861ffff620002f56101246004350162000ad3565b16116200094757600160ff6200031060a46004350162000ae3565b161162000918576200032760048035018062000a88565b6200033d60246004350160043560040162000a88565b9190926200035660446004350160043560040162000a88565b90916040519586610cd381011067ffffffffffffffff610cd389011117620008f3578695620003a3620003ba93620003d197610cd3620041bc8b3960a0610cd38b01818152019162000af2565b91610cd3880183036020610cd38a01015262000af2565b91610cd3850183036040610cd38701015262000af2565b336060610cd384010152306080610cd38401015203905ff08015620008b0576001600160a01b036200040860043560640162000abe565b166001600160a01b036200042160043560840162000abe565b1690600435610144016001600160a01b036200043d8262000abe565b16620009075750335b620004576101246004350162000ad3565b90604051938461323381011067ffffffffffffffff61323387011117620008f35761ffff9361323362000f8987396001600160a01b0387811661323388019081527f0000000000000000000000000000000000000000000000000000000000000000821660208201526040810192909252606082019290925233608082015291811660a08301527f00000000000000000000000000000000000000000000000000000000000000001660c0820152911660e082015260043560c481013561010083015260e4810135610120830152610104013561014082015281900361016001905ff08015620008b0576040516318160ddd60e01b81526020816004816001600160a01b0387165afa908115620008b0575f91620008bb575b5060405163a9059cbb60e01b81526001600160a01b03838116600483015260248201839052602090829060449082905f9089165af1908115620008b0575f916200087a575b50156200084f57620005cd6101246004350162000ad3565b620005dd60a46004350162000ae3565b604051620005eb8162000b12565b600160a01b600190038616815260208101600160a01b600190038616815260408201338152606083019160043560c401358352608084019561ffff16865260a084019460ff168552600160a01b6001900389165f525f60205260405f2093600160a01b60019003905116906bffffffffffffffffffffffff60a01b91828654161785556001850190600160a01b60019003905116828254161790556002840191600160a01b6001900390511690825416179055516003820155600401915161ffff168254915160101b62ff0000169162ffffff191617179055600435606401620006d59062000abe565b620006e560846004350162000abe565b90620006f660a46004350162000ae3565b90620007086101246004350162000ad3565b906200071960048035018062000a88565b906200072e6004803560248101910162000a88565b92909360043560440160043560040190620007499162000a88565b969097604051996101a093600160a01b60019003168b52600160a01b600190031660208b015260ff1660408a015260043560c4013560608a015261ffff1660808901528060a0890152870190620007a09262000af2565b9085820360c0870152620007b49262000af2565b9083820360e0850152620007c89262000af2565b4261010083015260043560e48101356101208401526101040135610140830152610160820183905261018082019290925233916001600160a01b0384811692908616917fff5da9ce2bb3d2da6a0f34bdf304cbc0288dbc04a29bfeeeea53e3e63db8fc0b919081900390a4604080516001600160a01b039384168152919092166020820152f35b606460405162461bcd60e51b81526020600482015260046024820152631cd9595960e21b6044820152fd5b620008a1915060203d602011620008a8575b62000898818362000b2f565b81019062000b52565b84620005b5565b503d6200088c565b6040513d5f823e3d90fd5b90506020813d602011620008ea575b81620008d96020938362000b2f565b810103126200009f57518362000570565b3d9150620008ca565b634e487b7160e01b5f52604160045260245ffd5b620009129062000abe565b62000446565b60405162461bcd60e51b815260206004820152600760248201526619195e12da5b9960ca1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d63726561746f724665653e31302560901b6044820152606490fd5b60405162461bcd60e51b815260206004820152600960248201526876726573657276657360b81b6044820152606490fd5b5060e460043501351515620002d8565b60405162461bcd60e51b815260206004820152600b60248201526a07468726573686f6c643d360ac1b6044820152606490fd5b60405162461bcd60e51b81526020600482015260036024820152620c8caf60eb1b6044820152606490fd5b506001600160a01b0362000a3560043560840162000abe565b161515620002b4565b60649062461bcd60e51b81526020600482015260046024820152636d65746160e01b6044820152fd5b5062000a7e60246004350160043560040162000a88565b905015156200028c565b903590601e19813603018212156200009f570180359067ffffffffffffffff82116200009f576020019181360383136200009f57565b356001600160a01b03811681036200009f5790565b3561ffff811681036200009f5790565b3560ff811681036200009f5790565b908060209392818452848401375f828201840152601f01601f1916010190565b60c0810190811067ffffffffffffffff821117620008f357604052565b90601f8019910116810190811067ffffffffffffffff821117620008f357604052565b908160209103126200009f575180151581036200009f5790565b908160209103126200009f57516001600160a01b03811681036200009f5790565b906040516101a0810181811067ffffffffffffffff821117620008f3576040525f81525f60208201525f60408201525f60608201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f6101408201525f6101608201525f610180820152809260018060a01b03165f525f60205260405f2060ff6040519162000c228362000b12565b600460018060a01b038254169182855260018060a01b03600182015416602086015260018060a01b0360028201541660408601526003810154606086015201549061ffff90608085019082841682528460a087019460101c168452865260018060a01b03602086015116602087015260018060a01b0360408601511660408701526060850151606087015251166080850152511660a0830152602060018060a01b039101511690811562000f8357506040516373e15bb960e11b8152602081600481855afa908115620008b0575f9162000f5f575b50151560c084015260405163a8185ba560e01b8152602081600481855afa908115620008b0575f9162000f3b575b506001600160a01b031660e084015260405163044eed3560e51b8152602081600481855afa908115620008b0575f9162000f05575b506001600160a01b031661010084015260405163cbcb317160e01b8152602081600481855afa908115620008b0575f9162000ecd575b5061012084015260405163d62ccb3f60e01b8152602081600481855afa908115620008b0575f9162000e95575b5061014084015260405163343ee3b760e01b8152602081600481855afa908115620008b0575f9162000e5c575b506101608401526040516352b86d2b60e01b815290602090829060049082905afa908115620008b0575f9162000e24575b50610180830152565b90506020813d60201162000e53575b8162000e426020938362000b2f565b810103126200009f57515f62000e1b565b3d915062000e33565b90506020813d60201162000e8c575b8162000e7a6020938362000b2f565b810103126200009f5751600462000dea565b3d915062000e6b565b90506020813d60201162000ec4575b8162000eb36020938362000b2f565b810103126200009f57515f62000dbd565b3d915062000ea4565b90506020813d60201162000efc575b8162000eeb6020938362000b2f565b810103126200009f57515f62000d90565b3d915062000edc565b62000f2c915060203d60201162000f33575b62000f23818362000b2f565b81019062000b6c565b5f62000d5a565b503d62000f17565b62000f58915060203d60201162000f335762000f23818362000b2f565b5f62000d25565b62000f7c915060203d602011620008a85762000898818362000b2f565b5f62000cf7565b92505056fe61020060405234620003a55761016062003233803803809162000025826102006200042e565b6102003912620003a557610200516001600160a01b0381168103620003a557610220516001600160a01b0381168103620003a55761024051906001600160a01b0382168203620003a55761026051926001600160a01b0384168403620003a5576200009261028062000466565b6200009f6102a062000466565b90620000ad6102c062000466565b9060e061020001519261ffff84168403620003a5576101006102000151976101206102000151976101406102000151976103e861ffff881611620003f8578a15620003c557608088905260a05260c05260e0526101008290526001600160a01b038116620003bd57505b6101205261014052610160526101809384526101a08381526101c08381526040516318160ddd60e01b815291949092602090839060049082906001600160a01b03165afa918215620003b2575f9262000374575b50815f558101809111620003605782810292818404149015171562000360576101e091825260405192612db794856200047c86396080518581816101a5015281816102ed01528181610481015281816104b6015281816106890152818161097f01528181610b2f01528181610e85015281816110a401528181611a540152611cf2015260a0518581816103d80152818161041c0152818161045e015281816104da0152818161071a0152818161095701528181610e61015261176d015260c05185818161057f01528181610d490152611513015260e051858181610648015281816106d90152818161088c0152818161092301528181610a2b01528181610a87015261168d015261010051856112910152610120518581816109cf01528181610f600152818161117d01526112d70152610140518581816109a701528181610f93015281816111b001526117ef0152610160518581816108c5015281816113d9015281816118760152611ffa015251848181610379015281816113a5015281816116030152611a16015251838181611418015281816117b501528181611c1f01528181611cb001528181611dbe0152611e3201525182818161143e015281816116f201528181611bc801528181611c8201528181611d900152611e62015251818181611465015281816118370152611bf00152f35b634e487b7160e01b5f52601160045260245ffd5b9091506020813d602011620003a9575b8162000393602093836200042e565b81010312620003a55751905f6200016b565b5f80fd5b3d915062000384565b6040513d5f823e3d90fd5b905062000117565b60405162461bcd60e51b815260206004820152600b60248201526a07468726573686f6c643d360ac1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d63726561746f724665653e31302560901b6044820152606490fd5b601f909101601f19168101906001600160401b038211908210176200045257604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b0382168203620003a55756fe60808060405260043610156200001e575b5036156200001c575f80fd5b005b5f905f3560e01c9081630242d71214620019425750806306b51d481462001918578063150b7a02146200189a57806317773ebb146200185a57806319b80ee7146200181e5780632d656ad714620017d8578063343ee3b7146200179c5780633fc8cef3146200175657806346ca626b14620017395780634beb394c146200171557806352b86d2b14620016d9578063539aa77f14620016bc578063791b98bc1462001676578063804fee5f146200165057806389dda6a014620016265780638b0bc50114620015ea578063a299e86414620015ba578063a64190c41462001570578063a8185ba51462001542578063b8d8fbb414620014fc578063c19d93fb1462001324578063cbcb31711462001306578063d331caa014620012c0578063d5f39488146200127a578063d62ccb3f146200125b578063d79875eb1462000fee578063d96a094a146200021b578063dd1b9c4a14620001fc578063e7c2b77214620001d75763fc0c546a03620000105734620001d45780600319360112620001d4576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b80fd5b5034620001d45780600319360112620001d457602060ff600254166040519015158152f35b5034620001d45780600319360112620001d45760206040516127108152f35b50602036600319011262000ecf576004546200023e60ff8260a01c161562001edd565b60ff60a01b1916600160a01b17600455600254620002609060ff161562001f16565b341562000fbf57620002af620002763462001b87565b929390916200028a60043586101562001f4f565b6200029785151562001f87565b620002a4855f54620019fb565b5f5560015462001b79565b6001558062000f8c575b508062000f59575b5060405163a9059cbb60e01b8152336004820152602481018290526020816044815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af190811562000ec4575f9162000f35575b501562000f0a576001545f5460408051348152602081018590529081018390526060810182905242608082015290919033907f178f20a8980b4e6cdc2c84f3ef670f5047f63638f90a8acc6b724b43f1da778d9060a090a27f0000000000000000000000000000000000000000000000000000000000000000811015620003b9575b6004805460ff60a01b19169055604051838152602090f35b600160ff1960025416176002558015158062000f00575b1562000ed3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1562000ecf57604051630d0e30db60e41b81525f81600481857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801562000ec45762000eae575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081167f00000000000000000000000000000000000000000000000000000000000000009091161090811562000e57576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116937f0000000000000000000000000000000000000000000000000000000000000000909116925b801562000e4f5781905b1562000e475782905b801562000e1c57620005316200052b828460601b62001986565b62002025565b60301b946001600160a01b03861162000de757604051630b4c774160e11b81526001600160a01b038089166004830152821660248201526127106044820152958990602088806064810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa97881562000cfe57829862000dc1575b506001600160a01b0388161562000d0d575b6001600160a01b0388163b1562000d095760405163f637731d60e01b81526001600160a01b0391821660048201529082908290602490829084908d165af1801562000cfe5762000ce2575b505060028054610100600160a81b031916600888901b610100600160a81b031617905560405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600482015260248101859052602081806044810103818d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811562000c80578a9162000cbe575b501562000c8b5760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600482015260248101869052602081806044810103818d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811562000c80578a9162000c4a575b501562000c1657604051968761016081011067ffffffffffffffff6101608a01111762000c0257610160880160405260018060a01b0316875260018060a01b031660208701526127106040870152620d899f196060870152620d89a0608087015260a086015260c08501528560e085015285610100850152306101208501524261014085015261014060405194634418b22b60e11b865260018060a01b03815116600487015260018060a01b03602082015116602487015262ffffff6040820151166044870152606081015160020b6064870152608081015160020b608487015260a081015160a487015260c081015160c487015260e081015160e487015261010081015161010487015260018060a01b03610120820151166101248701520151610144850152608084610164818960018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af193841562000b8057869462000ba5575b50836003557f000000000000000000000000000000000000000000000000000000000000000061ffff8116155f1462000b9f5750855b6040519081610c6881011067ffffffffffffffff610c688401111762000b8b5761ffff90610c686200211a84397f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116610c6885019081527f0000000000000000000000000000000000000000000000000000000000000000821660208201527f0000000000000000000000000000000000000000000000000000000000000000821660408201527f0000000000000000000000000000000000000000000000000000000000000000821660608201527f00000000000000000000000000000000000000000000000000000000000000009091166080820152606460a0820152911660c082015260e08101869052819003610100019087f0801562000b80576001600160a01b0390811692907f0000000000000000000000000000000000000000000000000000000000000000163b1562000b7157604051632142170760e11b81523060048201526001600160a01b038416602482015260448101869052878180606481010381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801562000b755762000b59575b50602096836bffffffffffffffffffffffff60a01b6004541617600455808055600155604051948552868501526040840152606083015242608083015260018060a01b0316907f0d67853b1918d4590409885b3fd74e4394e7c8fc54a5fde8a265caa34ce687ea60a0600180821b037f00000000000000000000000000000000000000000000000000000000000000001692a35f80620003a1565b62000b658891620019c3565b62000b71575f62000abe565b8680fd5b6040513d8a823e3d90fd5b6040513d88823e3d90fd5b634e487b7160e01b88526041600452602488fd5b620008f4565b9093506080813d60801162000bf9575b8162000bc460809383620019d8565b8101031262000bf557602081519101516fffffffffffffffffffffffffffffffff81160362000bf557925f620008be565b8580fd5b3d915062000bb5565b634e487b7160e01b5f52604160045260245ffd5b60405162461bcd60e51b815260206004820152600c60248201526b0c2e0e0e4deecca40eecae8d60a31b6044820152606490fd5b62000c71915060203d60201162000c78575b62000c688183620019d8565b81019062001fbc565b5f62000754565b503d62000c5c565b6040513d8c823e3d90fd5b60405162461bcd60e51b815260206004820152600b60248201526a617070726f766520746f6b60a81b6044820152606490fd5b62000cdb915060203d60201162000c785762000c688183620019d8565b5f620006c3565b62000ced90620019c3565b62000cfa57885f62000616565b8880fd5b6040513d84823e3d90fd5b5080fd5b60405163a167129560e01b81526001600160a01b03808b16600483015284166024820152612710604482015290975060208180606481010381857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811562000cfe57829162000d8b575b5096620005cb565b62000db2915060203d60201162000db9575b62000da98183620019d8565b810190620020f8565b5f62000d83565b503d62000d9d565b62000ddf91985060203d60201162000db95762000da98183620019d8565b965f620005b9565b60405162461bcd60e51b815260206004820152600d60248201526c39b8b93a283934b1b29037bb3360991b6044820152606490fd5b606460405162461bcd60e51b8152602060048201526004602482015263072303d360e41b6044820152fd5b819062000511565b829062000508565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116937f000000000000000000000000000000000000000000000000000000000000000090911692620004fe565b62000ebb919450620019c3565b5f925f62000453565b6040513d5f823e3d90fd5b5f80fd5b60405162461bcd60e51b8152602060048201526005602482015264656d70747960d81b6044820152606490fd5b50811515620003d0565b606460405162461bcd60e51b81526020600482015260046024820152633c3332b960e11b6044820152fd5b62000f52915060203d60201162000c785762000c688183620019d8565b5f6200031f565b62000f85907f000000000000000000000000000000000000000000000000000000000000000062002077565b5f620002c1565b62000fb8907f000000000000000000000000000000000000000000000000000000000000000062002077565b5f620002b9565b60405162461bcd60e51b81526020600482015260076024820152660657468496e3d360cc1b6044820152606490fd5b3462000ecf57604036600319011262000ecf57600435600454906200101a60ff8360a01c161562001edd565b60ff60a01b19918216600160a01b176004556002546200103e9060ff161562001f16565b80156200123057620010508162001e1b565b9062001066602496949593963586101562001f4f565b6200107385151562001f87565b6040516323b872dd60e01b8152336004820152306024820152604481018490526020816064815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af190811562000ec4575f916200120c575b5015620011dc57620010fc602096620010f1855f5462001b79565b5f55600154620019fb565b60015580620011a9575b508062001176575b506200111b833362002077565b6001545f546040805193845260208401869052830191909152606082015242608082015233907f20a7fc03b19d7f251cc907f177ff82194c6aebe9a2b47e1cd734dcb6bf772cc29060a090a260045416600455604051908152f35b620011a2907f000000000000000000000000000000000000000000000000000000000000000062002077565b846200110e565b620011d5907f000000000000000000000000000000000000000000000000000000000000000062002077565b8562001106565b60405162461bcd60e51b81526020600482015260086024820152677866657246726f6d60c01b6044820152606490fd5b62001229915060203d60201162000c785762000c688183620019d8565b87620010d6565b606460405162461bcd60e51b81526020600482015260046024820152630696e3d360e41b6044820152fd5b3462000ecf575f36600319011262000ecf576020600154604051908152f35b3462000ecf575f36600319011262000ecf576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3462000ecf575f36600319011262000ecf576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3462000ecf575f36600319011262000ecf5760205f54604051908152f35b3462000ecf575f36600319011262000ecf575f6101206040516200134881620019a5565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015201526101405f54610120600154600254604051916200139b83620019a5565b84835260208301527f0000000000000000000000000000000000000000000000000000000000000000604083015260ff81161515606083015261ffff7f0000000000000000000000000000000000000000000000000000000000000000166080830152606460a083015260018060a01b039060081c1660c08201527f000000000000000000000000000000000000000000000000000000000000000060e08201527f00000000000000000000000000000000000000000000000000000000000000006101008201527f000000000000000000000000000000000000000000000000000000000000000082820152604051928352602081015160208401526040810151604084015260608101511515606084015261ffff608082015116608084015261ffff60a08201511660a084015260018060a01b0360c08201511660c084015260e081015160e08401526101008101516101008401520151610120820152f35b3462000ecf575f36600319011262000ecf576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3462000ecf575f36600319011262000ecf5760025460405160089190911c6001600160a01b03168152602090f35b3462000ecf57602036600319011262000ecf57620015b66200159460043562001e1b565b6040805194855260208501939093529183015260608201529081906080820190565b0390f35b3462000ecf575f36600319011262000ecf576020620015d862001d87565b6040516001600160a01b039091168152f35b3462000ecf575f36600319011262000ecf5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3462000ecf575f36600319011262000ecf576004546040516001600160a01b039091168152602090f35b3462000ecf575f36600319011262000ecf5760206200166e62001c79565b604051908152f35b3462000ecf575f36600319011262000ecf576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3462000ecf575f36600319011262000ecf57602060405160648152f35b3462000ecf575f36600319011262000ecf5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3462000ecf57602036600319011262000ecf57620015b66200159460043562001b87565b3462000ecf575f36600319011262000ecf57602060405160c88152f35b3462000ecf575f36600319011262000ecf576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3462000ecf575f36600319011262000ecf5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3462000ecf575f36600319011262000ecf576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3462000ecf575f36600319011262000ecf5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3462000ecf575f36600319011262000ecf57602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3462000ecf57608036600319011262000ecf576001600160a01b036004358181160362000ecf576024359081160362000ecf5760643567ffffffffffffffff80821162000ecf573660238301121562000ecf57816004013590811162000ecf573691016024011162000ecf57604051630a85bd0160e11b8152602090f35b3462000ecf575f36600319011262000ecf5760206200193662001a09565b61ffff60405191168152f35b3462000ecf575f36600319011262000ecf576020906003548152f35b818102929181159184041417156200197257565b634e487b7160e01b5f52601160045260245ffd5b811562001991570490565b634e487b7160e01b5f52601260045260245ffd5b610140810190811067ffffffffffffffff82111762000c0257604052565b67ffffffffffffffff811162000c0257604052565b90601f8019910116810190811067ffffffffffffffff82111762000c0257604052565b919082039182116200197257565b60ff6002541662001b73577f00000000000000000000000000000000000000000000000000000000000000008062001b4957505f5b6040516318160ddd60e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821562000ec4575f9262001b0f575b505f548083111562001b075762001aa69083620019fb565b8262001add575061ffff91505f5b8082111562001ad557505b61271080821162001acf57501690565b90501690565b905062001abf565b61271090818102918183041490151715620019725761ffff9262001b019162001986565b62001ab4565b505f62001aa6565b9091506020813d60201162001b40575b8162001b2e60209383620019d8565b8101031262000ecf5751905f62001a8e565b3d915062001b1f565b6001549061271091828102928184041490151715620019725762001b6d9162001986565b62001a3e565b61271090565b919082018092116200197257565b62001b928162001fd6565b919092829062001baf8462001ba9878096620019fb565b620019fb565b9362001c1562001bee62001bc68760015462001b79565b7f00000000000000000000000000000000000000000000000000000000000000009062001b79565b7f000000000000000000000000000000000000000000000000000000000000000062001986565b905f549662001c457f00000000000000000000000000000000000000000000000000000000000000008962001b79565b918284101562001c6d5750509062001c5d91620019fb565b9480861162001c695750565b9450565b5f985090955093505050565b62001ca86001547f00000000000000000000000000000000000000000000000000000000000000009062001b79565b62001cd65f547f00000000000000000000000000000000000000000000000000000000000000009062001b79565b801562001d81576040516318160ddd60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811562000ec4575f9162001d46575b5062001d3d9062001d43936200195e565b62001986565b90565b90506020813d60201162001d78575b8162001d6460209383620019d8565b8101031262000ecf575162001d4362001d2c565b3d915062001d55565b50505f90565b62001db66001547f00000000000000000000000000000000000000000000000000000000000000009062001b79565b62001de45f547f00000000000000000000000000000000000000000000000000000000000000009062001b79565b90811562001d815762001dff916200052b9160601b62001986565b6001600160a01b039060301b81811162001e17571690565b5090565b62001bee62001e3062001e58925f5462001b79565b7f00000000000000000000000000000000000000000000000000000000000000009062001b79565b6001549062001e887f00000000000000000000000000000000000000000000000000000000000000008362001b79565b908181101562001ed05762001e9d91620019fb565b9080821162001ec7575b5062001eb38162001fd6565b62001ec48162001ba98486620019fb565b93565b90505f62001ea7565b5050505f905f905f905f90565b1562001ee557565b60405162461bcd60e51b81526020600482015260096024820152681c99595b9d1c985b9d60ba1b6044820152606490fd5b1562001f1e57565b60405162461bcd60e51b815260206004820152600960248201526819dc98591d585d195960ba1b6044820152606490fd5b1562001f5757565b60405162461bcd60e51b8152602060048201526008602482015267736c69707061676560c01b6044820152606490fd5b1562001f8f57565b60405162461bcd60e51b815260206004820152600560248201526406f75743d360dc1b6044820152606490fd5b9081602091031262000ecf5751801515810362000ecf5790565b9060648202828104606414831517156200197257620020216127108092049361ffff7f000000000000000000000000000000000000000000000000000000000000000016906200195e565b0490565b801562002072576001808201808311620019725760011c90825b8383106200204d5750505090565b90919250620020688362002062818462001986565b62001b79565b821c91906200203f565b505f90565b5f80809381935af13d15620020f2573d67ffffffffffffffff811162000c025760405190620020b1601f8201601f191660200183620019d8565b81525f60203d92013e5b15620020c357565b60405162461bcd60e51b81526020600482015260076024820152664554482070617960c81b6044820152606490fd5b620020bb565b9081602091031262000ecf57516001600160a01b038116810362000ecf579056fe6101803461020257610c68601f38829003908101601f19168301906001600160401b03821184831017610206578084936040938452843961010093849181010312610202578151906001600160a01b0390818316830361020257602084015182811681036102025761007282860161021a565b9061007f6060870161021a565b9361008c6080880161021a565b9461009960a0890161022e565b9060e06100a860c08b0161022e565b9901519383821698891515806101f7575b156101c8579160c093917fdf8a8c447351c2800b980b8ab2ce2d66ba7ecbfd9be49e35292e2f9fad294d2e959360805260a05286845260e052878b5261012099818b528261014099828b526101609b888d528a519889526020890152168887015261ffff80921660608701521660808501524260a085015230941692a35192610a2a948561023e86396080518581816101bc01526102ea015260a0518581816103200152610839015260c05185818160b10152610343015260e0518581816101790152818161052f0152610707015251848181610136015281816104c8015261062f01525183818160fe015261038101525182818161020501526103a401525181818161026d015261087f0152f35b875162461bcd60e51b81526020600482015260086024820152673932b1b2b4bb32b960c11b6044820152606490fd5b5084891615156100b9565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361020257565b519061ffff821682036102025756fe6080604081815260049182361015610021575b505050361561001f575f80fd5b005b5f925f3560e01c918263150b7a02146108a25750816317d70f7c146108685781633fc8cef3146108255781634e71d92d1461022957508063753da2a8146101eb578063791b98bc146101a85780639e8bc92a14610165578063cbf3097314610122578063f76835e6146100e45763fc0c546a1461009e5780610012565b346100e057816003193601126100e057517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b50346100e057816003193601126100e0576020905161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346100e057816003193601126100e057517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346100e057816003193601126100e057517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346100e057816003193601126100e057517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346100e057816003193601126100e0576020905161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b905082346105dd575f3660031901126105dd5782515f9283928392839267ffffffffffffffff92916001600160a01b039060808101858111828210176105c0578a527f00000000000000000000000000000000000000000000000000000000000000008152602091808b8484013081528185016fffffffffffffffffffffffffffffffff9384928383526060880194848652519763fc6f786560e01b8952518a8901525116602487015251166044850152511660648301528a826084815f857f0000000000000000000000000000000000000000000000000000000000000000165af19081156105d3575f925f926107f0575b50807f000000000000000000000000000000000000000000000000000000000000000016907f0000000000000000000000000000000000000000000000000000000000000000169181831093845f146107e95780945b156107e15750965b61ffff93847f000000000000000000000000000000000000000000000000000000000000000016947f0000000000000000000000000000000000000000000000000000000000000000168501938486116107ce578e826105e1575b50505087610459575b8b8b6104558f8c818f92517fbbd1d92c7ce0a939e197766ef1f870dda058c847032d4e0d4eb8ab530e400a9a33918061043187878c8c859094939260609260808301968352602083015260408201520152565b0390a251948594859094939260609260808301968352602083015260408201520152565b0390f35b9193959850809294969a503b156105dd575f809260248c8e519586938492632e1a7d4d60e01b84528c8401525af180156105d3576105ab575b505080610593575050835b806104a9868099610990565b9580610529575b5050846104c2575b80808080806103de565b808080877f00000000000000000000000000000000000000000000000000000000000000005af16104f16109b5565b50156104fd57806104b8565b865162461bcd60e51b81529182015260076024820152660657468206465760cc1b604482015260649150fd5b818080927f00000000000000000000000000000000000000000000000000000000000000005af16105586109b5565b50156105655780896104b0565b875162461bcd60e51b81528084018390526008602482015267195d1a081c1b185d60c21b6044820152606490fd5b6105a06105a5928961094b565b610972565b9361049d565b9080929750116105c05788525f948980610492565b604184634e487b7160e01b5f525260245ffd5b8b513d5f823e3d90fd5b5f80fd5b919c5099508585858e816107bc575050505f5b6105ff81809f610990565b9b818d926106f1575b508982610619575b505050816103d5565b935163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169481019485526020850192909252909283919082905f90829060400103925af19081156106e7575f916106ba575b501561068d578c858a5f89610610565b8c5162461bcd60e51b815280870186905260076024820152660746f6b206465760cc1b6044820152606490fd5b6106da9150863d88116106e0575b6106d28183610915565b81019061099d565b8e61067d565b503d6106c8565b8e513d5f823e3d90fd5b935163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168b820190815260208101959095529093909291508290819060400103815f865af19081156107b2575f91610795575b501561076657858a8f925f610608565b508c5162461bcd60e51b815280870186905260086024820152671d1bdac81c1b185d60c21b6044820152606490fd5b6107ac9150873d89116106e0576106d28183610915565b8f610756565b8f513d5f823e3d90fd5b6107c9926105a09161094b565b6105f4565b601188634e487b7160e01b5f525260245ffd5b90509661037a565b8194610372565b925090508a82813d811161081e575b6108098183610915565b810103126105dd57828251920151908c61031c565b503d6107ff565b82346105dd575f3660031901126105dd57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b82346105dd575f3660031901126105dd57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b90346105dd5760803660031901126105dd576001600160a01b038135818116036105dd57602435908116036105dd576064359067ffffffffffffffff908183116105dd57366023840112156105dd578201359081116105dd57369101602401116105dd57630a85bd0160e11b8152602090f35b90601f8019910116810190811067ffffffffffffffff82111761093757604052565b634e487b7160e01b5f52604160045260245ffd5b8181029291811591840414171561095e57565b634e487b7160e01b5f52601160045260245ffd5b811561097c570490565b634e487b7160e01b5f52601260045260245ffd5b9190820391821161095e57565b908160209103126105dd575180151581036105dd5790565b3d156109ef573d9067ffffffffffffffff821161093757604051916109e4601f8201601f191660200184610915565b82523d5f602084013e565b60609056fea2646970667358221220dee6215dfd8c1ab4569dedba3c378217a848857ce2ff0ad492baf9ed38f22cce64736f6c63430008180033a26469706673582212201f1bd6f15687cb2254f2a88a04b096d811b2cf9944854502e338383d9994471f64736f6c6343000818003360a060405234620004af5762000cd3803803806200001d81620004b3565b928339810160a082820312620004af5781516001600160401b039190828111620004af57816200004f918501620004d9565b9260209384820151848111620004af57836200006d918401620004d9565b92604083015190858211620004af5762000089918401620004d9565b92620000a660806200009e6060860162000549565b940162000549565b93825191868311620002fd575f54926001948585811c95168015620004a4575b8a861014620002de578190601f9586811162000451575b508a90868311600114620003eb575f92620003df575b50505f19600383901b1c191690851b175f555b805190878211620002fd578454908582811c92168015620003d4575b8a831014620002de57818584931162000381575b5089908583116001146200031d575f9262000311575b50505f19600383901b1c191690841b1783555b8051958611620002fd576002548381811c91168015620002f2575b88821014620002de5782811162000295575b50869186116001146200021c5794805f8051602062000cb383398151915295949381935f98899462000210575b50501b9186199060031b1c1916176002555b60805260018060a01b031692838352600381526b033b2e3c9fd0803ce8000000806040852055604051908152a360405161075490816200055f82396080518160f90152f35b015192505f80620001b9565b90601f1986169160025f52875f20925f5b8982821062000280575050915f8051602062000cb38339815191529695949391885f99941062000267575b505050811b01600255620001cb565b0151871960f88460031b161c191690555f808062000258565b8385015186559486019493840193016200022d565b60025f52875f208380890160051c8201928a8a10620002d4575b0160051c019084905b828110620002c85750506200018c565b5f8155018490620002b8565b92508192620002af565b634e487b7160e01b5f52602260045260245ffd5b90607f16906200017a565b634e487b7160e01b5f52604160045260245ffd5b015190505f806200014c565b90869350601f19831691845f528b5f20925f5b8d8282106200036a575050841162000351575b505050811b0183556200015f565b01515f1960f88460031b161c191690555f808062000343565b8385015186558a9790950194938401930162000330565b909150855f52895f208580850160051c8201928c8610620003ca575b918891869594930160051c01915b828110620003bb57505062000136565b5f8155859450889101620003ab565b925081926200039d565b91607f169162000122565b015190505f80620000f3565b5f8080528c8120899550929190601f198516908e5b82821062000439575050841162000420575b505050811b015f5562000106565b01515f1960f88460031b161c191690555f808062000412565b8385015186558b979095019493840193018e62000400565b9091505f80528a5f208680850160051c8201928d86106200049a575b918991869594930160051c01915b8281106200048b575050620000dd565b5f81558594508991016200047b565b925081926200046d565b94607f1694620000c6565b5f80fd5b6040519190601f01601f191682016001600160401b03811183821017620002fd57604052565b919080601f84011215620004af5782516001600160401b038111620002fd576020906200050f601f8201601f19168301620004b3565b92818452828287010111620004af575f5b818110620005355750825f9394955001015290565b858101830151848201840152820162000520565b51906001600160a01b0382168203620004af5756fe6080604081815260049182361015610015575f80fd5b5f3560e01c90816306fdde03146104f857508063095ea7b31461048a57806318160ddd1461046457806323b872dd146103a7578063313ce5671461038c5780633c130d90146102b157806370a082311461027a57806395d89b4114610158578063a9059cbb14610128578063d5f39488146100e55763dd62ed3e14610098575f80fd5b346100e157806003193601126100e1576020916100b3610616565b6100bb61062c565b6001600160a01b039182165f908152928552838320911682528352819020549051908152f35b5f80fd5b50346100e1575f3660031901126100e157517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346100e157806003193601126100e157602090610151610147610616565b6024359033610642565b5160018152f35b50346100e1575f3660031901126100e1578051905f60018054908160011c9060018316928315610270575b602093848410811461025d5783885290811561024157506001146101eb575b505050829003601f01601f191682019267ffffffffffffffff8411838510176101d857508291826101d49252826105cf565b0390f35b604190634e487b7160e01b5f525260245ffd5b60015f908152929350837fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b83851061022d57505050508301015f80806101a2565b805488860183015293019284908201610217565b60ff1916878501525050151560051b84010190505f80806101a2565b602289634e487b7160e01b5f525260245ffd5b91607f1691610183565b50346100e15760203660031901126100e1576020906001600160a01b0361029f610616565b165f5260038252805f20549051908152f35b50346100e1575f3660031901126100e1578051905f60025460018160011c9060018316928315610382575b602093848410811461025d57838852908115610241575060011461032c57505050829003601f01601f191682019267ffffffffffffffff8411838510176101d857508291826101d49252826105cf565b60025f908152929350837f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b83851061036e57505050508301015f80806101a2565b805488860183015293019284908201610358565b91607f16916102dc565b50346100e1575f3660031901126100e1576020905160128152f35b50346100e15760603660031901126100e1576103c1610616565b906103ca61062c565b6044359060018060a01b03841693845f52602094868652845f20335f528652845f2054905f198203610404575b5050906101519291610642565b84821061042e579061015195969785925f528852865f20335f52885203855f20558594935f6103f7565b855162461bcd60e51b8152808901889052601060248201526f45524332303a20616c6c6f77616e636560801b6044820152606490fd5b50346100e1575f3660031901126100e157602090516b033b2e3c9fd0803ce80000008152f35b50346100e157806003193601126100e1576020916104a6610616565b9060243590335f528452825f209160018060a01b031691825f52845280835f205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b919050346100e1575f3660031901126100e1575f805460018160011c90600183169283156105c5575b602093848410811461025d57838852908115610241575060011461057157505050829003601f01601f191682019267ffffffffffffffff8411838510176101d857508291826101d49252826105cf565b5f808052929350837f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b8385106105b157505050508301015f80806101a2565b80548886018301529301928490820161059b565b91607f1691610521565b602080825282518183018190529093925f5b82811061060257505060409293505f838284010152601f8019910116010190565b8181018601518482016040015285016105e1565b600435906001600160a01b03821682036100e157565b602435906001600160a01b03821682036100e157565b6001600160a01b0391821692919083156106eb571690815f52600360205260405f20548181106106b557817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600384520360405f2055845f5260405f20818154019055604051908152a3565b60405162461bcd60e51b815260206004820152600e60248201526d45524332303a2062616c616e636560901b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a045524332303a20746f3d360ac1b6044820152606490fdfea2646970667358221220865e26e9a6470a8f7d74af44e7be85ebf51e2be4505e5faef113bb345d3c06a964736f6c63430008180033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220bc0fa18d45d7e52d04a24bdf929291c2900027e486998530ec631ed638b5d23c64736f6c634300081800330000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad7300000000000000000000000011e1fad997c4c0e17d963297cd220a857abf996a
0x608080604052600436101562000013575f80fd5b5f3560e01c90816319f8fe9d146200023b575080631f2d855014620001b95780631f69565f14620000e95780632d656ad714620000a357633fc8cef31462000059575f80fd5b346200009f575f3660031901126200009f576040517f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b03168152602090f35b5f80fd5b346200009f575f3660031901126200009f576040517f00000000000000000000000011e1fad997c4c0e17d963297cd220a857abf996a6001600160a01b03168152602090f35b346200009f5760203660031901126200009f576004356001600160a01b0380821682036200009f576200011f6101a09262000b8d565b604051918082511683528060208301511660208401528060408301511660408401526060820151606084015261ffff608083015116608084015260ff60a08301511660a084015260c0820151151560c08401528060e08301511660e0840152610100908183015116908301526101208082015190830152610140808201519083015261016080820151908301526101808091015190820152f35b346200009f5760203660031901126200009f576004356001600160a01b03818116918290036200009f5760c0915f525f60205260ff60405f209180835416928160018201541691600282015416600460038301549201549260405195865260208601526040850152606084015261ffff8116608084015260101c1660a0820152f35b346200009f576003196020368201126200009f5767ffffffffffffffff600435116200009f5761016090600435360301126200009f576200028160048035018062000a88565b905015158062000a67575b1562000a3e576001600160a01b03620002aa60043560640162000abe565b1615158062000a1c575b15620009f15760c4600435013515620009be576101046004350135151580620009ae575b156200097d576103e861ffff620002f56101246004350162000ad3565b16116200094757600160ff6200031060a46004350162000ae3565b161162000918576200032760048035018062000a88565b6200033d60246004350160043560040162000a88565b9190926200035660446004350160043560040162000a88565b90916040519586610cd381011067ffffffffffffffff610cd389011117620008f3578695620003a3620003ba93620003d197610cd3620041bc8b3960a0610cd38b01818152019162000af2565b91610cd3880183036020610cd38a01015262000af2565b91610cd3850183036040610cd38701015262000af2565b336060610cd384010152306080610cd38401015203905ff08015620008b0576001600160a01b036200040860043560640162000abe565b166001600160a01b036200042160043560840162000abe565b1690600435610144016001600160a01b036200043d8262000abe565b16620009075750335b620004576101246004350162000ad3565b90604051938461323381011067ffffffffffffffff61323387011117620008f35761ffff9361323362000f8987396001600160a01b0387811661323388019081527f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73821660208201526040810192909252606082019290925233608082015291811660a08301527f00000000000000000000000011e1fad997c4c0e17d963297cd220a857abf996a1660c0820152911660e082015260043560c481013561010083015260e4810135610120830152610104013561014082015281900361016001905ff08015620008b0576040516318160ddd60e01b81526020816004816001600160a01b0387165afa908115620008b0575f91620008bb575b5060405163a9059cbb60e01b81526001600160a01b03838116600483015260248201839052602090829060449082905f9089165af1908115620008b0575f916200087a575b50156200084f57620005cd6101246004350162000ad3565b620005dd60a46004350162000ae3565b604051620005eb8162000b12565b600160a01b600190038616815260208101600160a01b600190038616815260408201338152606083019160043560c401358352608084019561ffff16865260a084019460ff168552600160a01b6001900389165f525f60205260405f2093600160a01b60019003905116906bffffffffffffffffffffffff60a01b91828654161785556001850190600160a01b60019003905116828254161790556002840191600160a01b6001900390511690825416179055516003820155600401915161ffff168254915160101b62ff0000169162ffffff191617179055600435606401620006d59062000abe565b620006e560846004350162000abe565b90620006f660a46004350162000ae3565b90620007086101246004350162000ad3565b906200071960048035018062000a88565b906200072e6004803560248101910162000a88565b92909360043560440160043560040190620007499162000a88565b969097604051996101a093600160a01b60019003168b52600160a01b600190031660208b015260ff1660408a015260043560c4013560608a015261ffff1660808901528060a0890152870190620007a09262000af2565b9085820360c0870152620007b49262000af2565b9083820360e0850152620007c89262000af2565b4261010083015260043560e48101356101208401526101040135610140830152610160820183905261018082019290925233916001600160a01b0384811692908616917fff5da9ce2bb3d2da6a0f34bdf304cbc0288dbc04a29bfeeeea53e3e63db8fc0b919081900390a4604080516001600160a01b039384168152919092166020820152f35b606460405162461bcd60e51b81526020600482015260046024820152631cd9595960e21b6044820152fd5b620008a1915060203d602011620008a8575b62000898818362000b2f565b81019062000b52565b84620005b5565b503d6200088c565b6040513d5f823e3d90fd5b90506020813d602011620008ea575b81620008d96020938362000b2f565b810103126200009f57518362000570565b3d9150620008ca565b634e487b7160e01b5f52604160045260245ffd5b620009129062000abe565b62000446565b60405162461bcd60e51b815260206004820152600760248201526619195e12da5b9960ca1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d63726561746f724665653e31302560901b6044820152606490fd5b60405162461bcd60e51b815260206004820152600960248201526876726573657276657360b81b6044820152606490fd5b5060e460043501351515620002d8565b60405162461bcd60e51b815260206004820152600b60248201526a07468726573686f6c643d360ac1b6044820152606490fd5b60405162461bcd60e51b81526020600482015260036024820152620c8caf60eb1b6044820152606490fd5b506001600160a01b0362000a3560043560840162000abe565b161515620002b4565b60649062461bcd60e51b81526020600482015260046024820152636d65746160e01b6044820152fd5b5062000a7e60246004350160043560040162000a88565b905015156200028c565b903590601e19813603018212156200009f570180359067ffffffffffffffff82116200009f576020019181360383136200009f57565b356001600160a01b03811681036200009f5790565b3561ffff811681036200009f5790565b3560ff811681036200009f5790565b908060209392818452848401375f828201840152601f01601f1916010190565b60c0810190811067ffffffffffffffff821117620008f357604052565b90601f8019910116810190811067ffffffffffffffff821117620008f357604052565b908160209103126200009f575180151581036200009f5790565b908160209103126200009f57516001600160a01b03811681036200009f5790565b906040516101a0810181811067ffffffffffffffff821117620008f3576040525f81525f60208201525f60408201525f60608201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f6101408201525f6101608201525f610180820152809260018060a01b03165f525f60205260405f2060ff6040519162000c228362000b12565b600460018060a01b038254169182855260018060a01b03600182015416602086015260018060a01b0360028201541660408601526003810154606086015201549061ffff90608085019082841682528460a087019460101c168452865260018060a01b03602086015116602087015260018060a01b0360408601511660408701526060850151606087015251166080850152511660a0830152602060018060a01b039101511690811562000f8357506040516373e15bb960e11b8152602081600481855afa908115620008b0575f9162000f5f575b50151560c084015260405163a8185ba560e01b8152602081600481855afa908115620008b0575f9162000f3b575b506001600160a01b031660e084015260405163044eed3560e51b8152602081600481855afa908115620008b0575f9162000f05575b506001600160a01b031661010084015260405163cbcb317160e01b8152602081600481855afa908115620008b0575f9162000ecd575b5061012084015260405163d62ccb3f60e01b8152602081600481855afa908115620008b0575f9162000e95575b5061014084015260405163343ee3b760e01b8152602081600481855afa908115620008b0575f9162000e5c575b506101608401526040516352b86d2b60e01b815290602090829060049082905afa908115620008b0575f9162000e24575b50610180830152565b90506020813d60201162000e53575b8162000e426020938362000b2f565b810103126200009f57515f62000e1b565b3d915062000e33565b90506020813d60201162000e8c575b8162000e7a6020938362000b2f565b810103126200009f5751600462000dea565b3d915062000e6b565b90506020813d60201162000ec4575b8162000eb36020938362000b2f565b810103126200009f57515f62000dbd565b3d915062000ea4565b90506020813d60201162000efc575b8162000eeb6020938362000b2f565b810103126200009f57515f62000d90565b3d915062000edc565b62000f2c915060203d60201162000f33575b62000f23818362000b2f565b81019062000b6c565b5f62000d5a565b503d62000f17565b62000f58915060203d60201162000f335762000f23818362000b2f565b5f62000d25565b62000f7c915060203d602011620008a85762000898818362000b2f565b5f62000cf7565b92505056fe61020060405234620003a55761016062003233803803809162000025826102006200042e565b6102003912620003a557610200516001600160a01b0381168103620003a557610220516001600160a01b0381168103620003a55761024051906001600160a01b0382168203620003a55761026051926001600160a01b0384168403620003a5576200009261028062000466565b6200009f6102a062000466565b90620000ad6102c062000466565b9060e061020001519261ffff84168403620003a5576101006102000151976101206102000151976101406102000151976103e861ffff881611620003f8578a15620003c557608088905260a05260c05260e0526101008290526001600160a01b038116620003bd57505b6101205261014052610160526101809384526101a08381526101c08381526040516318160ddd60e01b815291949092602090839060049082906001600160a01b03165afa918215620003b2575f9262000374575b50815f558101809111620003605782810292818404149015171562000360576101e091825260405192612db794856200047c86396080518581816101a5015281816102ed01528181610481015281816104b6015281816106890152818161097f01528181610b2f01528181610e85015281816110a401528181611a540152611cf2015260a0518581816103d80152818161041c0152818161045e015281816104da0152818161071a0152818161095701528181610e61015261176d015260c05185818161057f01528181610d490152611513015260e051858181610648015281816106d90152818161088c0152818161092301528181610a2b01528181610a87015261168d015261010051856112910152610120518581816109cf01528181610f600152818161117d01526112d70152610140518581816109a701528181610f93015281816111b001526117ef0152610160518581816108c5015281816113d9015281816118760152611ffa015251848181610379015281816113a5015281816116030152611a16015251838181611418015281816117b501528181611c1f01528181611cb001528181611dbe0152611e3201525182818161143e015281816116f201528181611bc801528181611c8201528181611d900152611e62015251818181611465015281816118370152611bf00152f35b634e487b7160e01b5f52601160045260245ffd5b9091506020813d602011620003a9575b8162000393602093836200042e565b81010312620003a55751905f6200016b565b5f80fd5b3d915062000384565b6040513d5f823e3d90fd5b905062000117565b60405162461bcd60e51b815260206004820152600b60248201526a07468726573686f6c643d360ac1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d63726561746f724665653e31302560901b6044820152606490fd5b601f909101601f19168101906001600160401b038211908210176200045257604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b0382168203620003a55756fe60808060405260043610156200001e575b5036156200001c575f80fd5b005b5f905f3560e01c9081630242d71214620019425750806306b51d481462001918578063150b7a02146200189a57806317773ebb146200185a57806319b80ee7146200181e5780632d656ad714620017d8578063343ee3b7146200179c5780633fc8cef3146200175657806346ca626b14620017395780634beb394c146200171557806352b86d2b14620016d9578063539aa77f14620016bc578063791b98bc1462001676578063804fee5f146200165057806389dda6a014620016265780638b0bc50114620015ea578063a299e86414620015ba578063a64190c41462001570578063a8185ba51462001542578063b8d8fbb414620014fc578063c19d93fb1462001324578063cbcb31711462001306578063d331caa014620012c0578063d5f39488146200127a578063d62ccb3f146200125b578063d79875eb1462000fee578063d96a094a146200021b578063dd1b9c4a14620001fc578063e7c2b77214620001d75763fc0c546a03620000105734620001d45780600319360112620001d4576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b80fd5b5034620001d45780600319360112620001d457602060ff600254166040519015158152f35b5034620001d45780600319360112620001d45760206040516127108152f35b50602036600319011262000ecf576004546200023e60ff8260a01c161562001edd565b60ff60a01b1916600160a01b17600455600254620002609060ff161562001f16565b341562000fbf57620002af620002763462001b87565b929390916200028a60043586101562001f4f565b6200029785151562001f87565b620002a4855f54620019fb565b5f5560015462001b79565b6001558062000f8c575b508062000f59575b5060405163a9059cbb60e01b8152336004820152602481018290526020816044815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af190811562000ec4575f9162000f35575b501562000f0a576001545f5460408051348152602081018590529081018390526060810182905242608082015290919033907f178f20a8980b4e6cdc2c84f3ef670f5047f63638f90a8acc6b724b43f1da778d9060a090a27f0000000000000000000000000000000000000000000000000000000000000000811015620003b9575b6004805460ff60a01b19169055604051838152602090f35b600160ff1960025416176002558015158062000f00575b1562000ed3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1562000ecf57604051630d0e30db60e41b81525f81600481857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801562000ec45762000eae575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081167f00000000000000000000000000000000000000000000000000000000000000009091161090811562000e57576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116937f0000000000000000000000000000000000000000000000000000000000000000909116925b801562000e4f5781905b1562000e475782905b801562000e1c57620005316200052b828460601b62001986565b62002025565b60301b946001600160a01b03861162000de757604051630b4c774160e11b81526001600160a01b038089166004830152821660248201526127106044820152958990602088806064810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa97881562000cfe57829862000dc1575b506001600160a01b0388161562000d0d575b6001600160a01b0388163b1562000d095760405163f637731d60e01b81526001600160a01b0391821660048201529082908290602490829084908d165af1801562000cfe5762000ce2575b505060028054610100600160a81b031916600888901b610100600160a81b031617905560405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600482015260248101859052602081806044810103818d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811562000c80578a9162000cbe575b501562000c8b5760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600482015260248101869052602081806044810103818d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811562000c80578a9162000c4a575b501562000c1657604051968761016081011067ffffffffffffffff6101608a01111762000c0257610160880160405260018060a01b0316875260018060a01b031660208701526127106040870152620d899f196060870152620d89a0608087015260a086015260c08501528560e085015285610100850152306101208501524261014085015261014060405194634418b22b60e11b865260018060a01b03815116600487015260018060a01b03602082015116602487015262ffffff6040820151166044870152606081015160020b6064870152608081015160020b608487015260a081015160a487015260c081015160c487015260e081015160e487015261010081015161010487015260018060a01b03610120820151166101248701520151610144850152608084610164818960018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af193841562000b8057869462000ba5575b50836003557f000000000000000000000000000000000000000000000000000000000000000061ffff8116155f1462000b9f5750855b6040519081610c6881011067ffffffffffffffff610c688401111762000b8b5761ffff90610c686200211a84397f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116610c6885019081527f0000000000000000000000000000000000000000000000000000000000000000821660208201527f0000000000000000000000000000000000000000000000000000000000000000821660408201527f0000000000000000000000000000000000000000000000000000000000000000821660608201527f00000000000000000000000000000000000000000000000000000000000000009091166080820152606460a0820152911660c082015260e08101869052819003610100019087f0801562000b80576001600160a01b0390811692907f0000000000000000000000000000000000000000000000000000000000000000163b1562000b7157604051632142170760e11b81523060048201526001600160a01b038416602482015260448101869052878180606481010381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801562000b755762000b59575b50602096836bffffffffffffffffffffffff60a01b6004541617600455808055600155604051948552868501526040840152606083015242608083015260018060a01b0316907f0d67853b1918d4590409885b3fd74e4394e7c8fc54a5fde8a265caa34ce687ea60a0600180821b037f00000000000000000000000000000000000000000000000000000000000000001692a35f80620003a1565b62000b658891620019c3565b62000b71575f62000abe565b8680fd5b6040513d8a823e3d90fd5b6040513d88823e3d90fd5b634e487b7160e01b88526041600452602488fd5b620008f4565b9093506080813d60801162000bf9575b8162000bc460809383620019d8565b8101031262000bf557602081519101516fffffffffffffffffffffffffffffffff81160362000bf557925f620008be565b8580fd5b3d915062000bb5565b634e487b7160e01b5f52604160045260245ffd5b60405162461bcd60e51b815260206004820152600c60248201526b0c2e0e0e4deecca40eecae8d60a31b6044820152606490fd5b62000c71915060203d60201162000c78575b62000c688183620019d8565b81019062001fbc565b5f62000754565b503d62000c5c565b6040513d8c823e3d90fd5b60405162461bcd60e51b815260206004820152600b60248201526a617070726f766520746f6b60a81b6044820152606490fd5b62000cdb915060203d60201162000c785762000c688183620019d8565b5f620006c3565b62000ced90620019c3565b62000cfa57885f62000616565b8880fd5b6040513d84823e3d90fd5b5080fd5b60405163a167129560e01b81526001600160a01b03808b16600483015284166024820152612710604482015290975060208180606481010381857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811562000cfe57829162000d8b575b5096620005cb565b62000db2915060203d60201162000db9575b62000da98183620019d8565b810190620020f8565b5f62000d83565b503d62000d9d565b62000ddf91985060203d60201162000db95762000da98183620019d8565b965f620005b9565b60405162461bcd60e51b815260206004820152600d60248201526c39b8b93a283934b1b29037bb3360991b6044820152606490fd5b606460405162461bcd60e51b8152602060048201526004602482015263072303d360e41b6044820152fd5b819062000511565b829062000508565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116937f000000000000000000000000000000000000000000000000000000000000000090911692620004fe565b62000ebb919450620019c3565b5f925f62000453565b6040513d5f823e3d90fd5b5f80fd5b60405162461bcd60e51b8152602060048201526005602482015264656d70747960d81b6044820152606490fd5b50811515620003d0565b606460405162461bcd60e51b81526020600482015260046024820152633c3332b960e11b6044820152fd5b62000f52915060203d60201162000c785762000c688183620019d8565b5f6200031f565b62000f85907f000000000000000000000000000000000000000000000000000000000000000062002077565b5f620002c1565b62000fb8907f000000000000000000000000000000000000000000000000000000000000000062002077565b5f620002b9565b60405162461bcd60e51b81526020600482015260076024820152660657468496e3d360cc1b6044820152606490fd5b3462000ecf57604036600319011262000ecf57600435600454906200101a60ff8360a01c161562001edd565b60ff60a01b19918216600160a01b176004556002546200103e9060ff161562001f16565b80156200123057620010508162001e1b565b9062001066602496949593963586101562001f4f565b6200107385151562001f87565b6040516323b872dd60e01b8152336004820152306024820152604481018490526020816064815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af190811562000ec4575f916200120c575b5015620011dc57620010fc602096620010f1855f5462001b79565b5f55600154620019fb565b60015580620011a9575b508062001176575b506200111b833362002077565b6001545f546040805193845260208401869052830191909152606082015242608082015233907f20a7fc03b19d7f251cc907f177ff82194c6aebe9a2b47e1cd734dcb6bf772cc29060a090a260045416600455604051908152f35b620011a2907f000000000000000000000000000000000000000000000000000000000000000062002077565b846200110e565b620011d5907f000000000000000000000000000000000000000000000000000000000000000062002077565b8562001106565b60405162461bcd60e51b81526020600482015260086024820152677866657246726f6d60c01b6044820152606490fd5b62001229915060203d60201162000c785762000c688183620019d8565b87620010d6565b606460405162461bcd60e51b81526020600482015260046024820152630696e3d360e41b6044820152fd5b3462000ecf575f36600319011262000ecf576020600154604051908152f35b3462000ecf575f36600319011262000ecf576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3462000ecf575f36600319011262000ecf576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3462000ecf575f36600319011262000ecf5760205f54604051908152f35b3462000ecf575f36600319011262000ecf575f6101206040516200134881620019a5565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015201526101405f54610120600154600254604051916200139b83620019a5565b84835260208301527f0000000000000000000000000000000000000000000000000000000000000000604083015260ff81161515606083015261ffff7f0000000000000000000000000000000000000000000000000000000000000000166080830152606460a083015260018060a01b039060081c1660c08201527f000000000000000000000000000000000000000000000000000000000000000060e08201527f00000000000000000000000000000000000000000000000000000000000000006101008201527f000000000000000000000000000000000000000000000000000000000000000082820152604051928352602081015160208401526040810151604084015260608101511515606084015261ffff608082015116608084015261ffff60a08201511660a084015260018060a01b0360c08201511660c084015260e081015160e08401526101008101516101008401520151610120820152f35b3462000ecf575f36600319011262000ecf576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3462000ecf575f36600319011262000ecf5760025460405160089190911c6001600160a01b03168152602090f35b3462000ecf57602036600319011262000ecf57620015b66200159460043562001e1b565b6040805194855260208501939093529183015260608201529081906080820190565b0390f35b3462000ecf575f36600319011262000ecf576020620015d862001d87565b6040516001600160a01b039091168152f35b3462000ecf575f36600319011262000ecf5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3462000ecf575f36600319011262000ecf576004546040516001600160a01b039091168152602090f35b3462000ecf575f36600319011262000ecf5760206200166e62001c79565b604051908152f35b3462000ecf575f36600319011262000ecf576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3462000ecf575f36600319011262000ecf57602060405160648152f35b3462000ecf575f36600319011262000ecf5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3462000ecf57602036600319011262000ecf57620015b66200159460043562001b87565b3462000ecf575f36600319011262000ecf57602060405160c88152f35b3462000ecf575f36600319011262000ecf576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3462000ecf575f36600319011262000ecf5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3462000ecf575f36600319011262000ecf576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3462000ecf575f36600319011262000ecf5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3462000ecf575f36600319011262000ecf57602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3462000ecf57608036600319011262000ecf576001600160a01b036004358181160362000ecf576024359081160362000ecf5760643567ffffffffffffffff80821162000ecf573660238301121562000ecf57816004013590811162000ecf573691016024011162000ecf57604051630a85bd0160e11b8152602090f35b3462000ecf575f36600319011262000ecf5760206200193662001a09565b61ffff60405191168152f35b3462000ecf575f36600319011262000ecf576020906003548152f35b818102929181159184041417156200197257565b634e487b7160e01b5f52601160045260245ffd5b811562001991570490565b634e487b7160e01b5f52601260045260245ffd5b610140810190811067ffffffffffffffff82111762000c0257604052565b67ffffffffffffffff811162000c0257604052565b90601f8019910116810190811067ffffffffffffffff82111762000c0257604052565b919082039182116200197257565b60ff6002541662001b73577f00000000000000000000000000000000000000000000000000000000000000008062001b4957505f5b6040516318160ddd60e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821562000ec4575f9262001b0f575b505f548083111562001b075762001aa69083620019fb565b8262001add575061ffff91505f5b8082111562001ad557505b61271080821162001acf57501690565b90501690565b905062001abf565b61271090818102918183041490151715620019725761ffff9262001b019162001986565b62001ab4565b505f62001aa6565b9091506020813d60201162001b40575b8162001b2e60209383620019d8565b8101031262000ecf5751905f62001a8e565b3d915062001b1f565b6001549061271091828102928184041490151715620019725762001b6d9162001986565b62001a3e565b61271090565b919082018092116200197257565b62001b928162001fd6565b919092829062001baf8462001ba9878096620019fb565b620019fb565b9362001c1562001bee62001bc68760015462001b79565b7f00000000000000000000000000000000000000000000000000000000000000009062001b79565b7f000000000000000000000000000000000000000000000000000000000000000062001986565b905f549662001c457f00000000000000000000000000000000000000000000000000000000000000008962001b79565b918284101562001c6d5750509062001c5d91620019fb565b9480861162001c695750565b9450565b5f985090955093505050565b62001ca86001547f00000000000000000000000000000000000000000000000000000000000000009062001b79565b62001cd65f547f00000000000000000000000000000000000000000000000000000000000000009062001b79565b801562001d81576040516318160ddd60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811562000ec4575f9162001d46575b5062001d3d9062001d43936200195e565b62001986565b90565b90506020813d60201162001d78575b8162001d6460209383620019d8565b8101031262000ecf575162001d4362001d2c565b3d915062001d55565b50505f90565b62001db66001547f00000000000000000000000000000000000000000000000000000000000000009062001b79565b62001de45f547f00000000000000000000000000000000000000000000000000000000000000009062001b79565b90811562001d815762001dff916200052b9160601b62001986565b6001600160a01b039060301b81811162001e17571690565b5090565b62001bee62001e3062001e58925f5462001b79565b7f00000000000000000000000000000000000000000000000000000000000000009062001b79565b6001549062001e887f00000000000000000000000000000000000000000000000000000000000000008362001b79565b908181101562001ed05762001e9d91620019fb565b9080821162001ec7575b5062001eb38162001fd6565b62001ec48162001ba98486620019fb565b93565b90505f62001ea7565b5050505f905f905f905f90565b1562001ee557565b60405162461bcd60e51b81526020600482015260096024820152681c99595b9d1c985b9d60ba1b6044820152606490fd5b1562001f1e57565b60405162461bcd60e51b815260206004820152600960248201526819dc98591d585d195960ba1b6044820152606490fd5b1562001f5757565b60405162461bcd60e51b8152602060048201526008602482015267736c69707061676560c01b6044820152606490fd5b1562001f8f57565b60405162461bcd60e51b815260206004820152600560248201526406f75743d360dc1b6044820152606490fd5b9081602091031262000ecf5751801515810362000ecf5790565b9060648202828104606414831517156200197257620020216127108092049361ffff7f000000000000000000000000000000000000000000000000000000000000000016906200195e565b0490565b801562002072576001808201808311620019725760011c90825b8383106200204d5750505090565b90919250620020688362002062818462001986565b62001b79565b821c91906200203f565b505f90565b5f80809381935af13d15620020f2573d67ffffffffffffffff811162000c025760405190620020b1601f8201601f191660200183620019d8565b81525f60203d92013e5b15620020c357565b60405162461bcd60e51b81526020600482015260076024820152664554482070617960c81b6044820152606490fd5b620020bb565b9081602091031262000ecf57516001600160a01b038116810362000ecf579056fe6101803461020257610c68601f38829003908101601f19168301906001600160401b03821184831017610206578084936040938452843961010093849181010312610202578151906001600160a01b0390818316830361020257602084015182811681036102025761007282860161021a565b9061007f6060870161021a565b9361008c6080880161021a565b9461009960a0890161022e565b9060e06100a860c08b0161022e565b9901519383821698891515806101f7575b156101c8579160c093917fdf8a8c447351c2800b980b8ab2ce2d66ba7ecbfd9be49e35292e2f9fad294d2e959360805260a05286845260e052878b5261012099818b528261014099828b526101609b888d528a519889526020890152168887015261ffff80921660608701521660808501524260a085015230941692a35192610a2a948561023e86396080518581816101bc01526102ea015260a0518581816103200152610839015260c05185818160b10152610343015260e0518581816101790152818161052f0152610707015251848181610136015281816104c8015261062f01525183818160fe015261038101525182818161020501526103a401525181818161026d015261087f0152f35b875162461bcd60e51b81526020600482015260086024820152673932b1b2b4bb32b960c11b6044820152606490fd5b5084891615156100b9565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361020257565b519061ffff821682036102025756fe6080604081815260049182361015610021575b505050361561001f575f80fd5b005b5f925f3560e01c918263150b7a02146108a25750816317d70f7c146108685781633fc8cef3146108255781634e71d92d1461022957508063753da2a8146101eb578063791b98bc146101a85780639e8bc92a14610165578063cbf3097314610122578063f76835e6146100e45763fc0c546a1461009e5780610012565b346100e057816003193601126100e057517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b50346100e057816003193601126100e0576020905161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346100e057816003193601126100e057517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346100e057816003193601126100e057517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346100e057816003193601126100e057517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346100e057816003193601126100e0576020905161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b905082346105dd575f3660031901126105dd5782515f9283928392839267ffffffffffffffff92916001600160a01b039060808101858111828210176105c0578a527f00000000000000000000000000000000000000000000000000000000000000008152602091808b8484013081528185016fffffffffffffffffffffffffffffffff9384928383526060880194848652519763fc6f786560e01b8952518a8901525116602487015251166044850152511660648301528a826084815f857f0000000000000000000000000000000000000000000000000000000000000000165af19081156105d3575f925f926107f0575b50807f000000000000000000000000000000000000000000000000000000000000000016907f0000000000000000000000000000000000000000000000000000000000000000169181831093845f146107e95780945b156107e15750965b61ffff93847f000000000000000000000000000000000000000000000000000000000000000016947f0000000000000000000000000000000000000000000000000000000000000000168501938486116107ce578e826105e1575b50505087610459575b8b8b6104558f8c818f92517fbbd1d92c7ce0a939e197766ef1f870dda058c847032d4e0d4eb8ab530e400a9a33918061043187878c8c859094939260609260808301968352602083015260408201520152565b0390a251948594859094939260609260808301968352602083015260408201520152565b0390f35b9193959850809294969a503b156105dd575f809260248c8e519586938492632e1a7d4d60e01b84528c8401525af180156105d3576105ab575b505080610593575050835b806104a9868099610990565b9580610529575b5050846104c2575b80808080806103de565b808080877f00000000000000000000000000000000000000000000000000000000000000005af16104f16109b5565b50156104fd57806104b8565b865162461bcd60e51b81529182015260076024820152660657468206465760cc1b604482015260649150fd5b818080927f00000000000000000000000000000000000000000000000000000000000000005af16105586109b5565b50156105655780896104b0565b875162461bcd60e51b81528084018390526008602482015267195d1a081c1b185d60c21b6044820152606490fd5b6105a06105a5928961094b565b610972565b9361049d565b9080929750116105c05788525f948980610492565b604184634e487b7160e01b5f525260245ffd5b8b513d5f823e3d90fd5b5f80fd5b919c5099508585858e816107bc575050505f5b6105ff81809f610990565b9b818d926106f1575b508982610619575b505050816103d5565b935163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169481019485526020850192909252909283919082905f90829060400103925af19081156106e7575f916106ba575b501561068d578c858a5f89610610565b8c5162461bcd60e51b815280870186905260076024820152660746f6b206465760cc1b6044820152606490fd5b6106da9150863d88116106e0575b6106d28183610915565b81019061099d565b8e61067d565b503d6106c8565b8e513d5f823e3d90fd5b935163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168b820190815260208101959095529093909291508290819060400103815f865af19081156107b2575f91610795575b501561076657858a8f925f610608565b508c5162461bcd60e51b815280870186905260086024820152671d1bdac81c1b185d60c21b6044820152606490fd5b6107ac9150873d89116106e0576106d28183610915565b8f610756565b8f513d5f823e3d90fd5b6107c9926105a09161094b565b6105f4565b601188634e487b7160e01b5f525260245ffd5b90509661037a565b8194610372565b925090508a82813d811161081e575b6108098183610915565b810103126105dd57828251920151908c61031c565b503d6107ff565b82346105dd575f3660031901126105dd57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b82346105dd575f3660031901126105dd57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b90346105dd5760803660031901126105dd576001600160a01b038135818116036105dd57602435908116036105dd576064359067ffffffffffffffff908183116105dd57366023840112156105dd578201359081116105dd57369101602401116105dd57630a85bd0160e11b8152602090f35b90601f8019910116810190811067ffffffffffffffff82111761093757604052565b634e487b7160e01b5f52604160045260245ffd5b8181029291811591840414171561095e57565b634e487b7160e01b5f52601160045260245ffd5b811561097c570490565b634e487b7160e01b5f52601260045260245ffd5b9190820391821161095e57565b908160209103126105dd575180151581036105dd5790565b3d156109ef573d9067ffffffffffffffff821161093757604051916109e4601f8201601f191660200184610915565b82523d5f602084013e565b60609056fea2646970667358221220dee6215dfd8c1ab4569dedba3c378217a848857ce2ff0ad492baf9ed38f22cce64736f6c63430008180033a26469706673582212201f1bd6f15687cb2254f2a88a04b096d811b2cf9944854502e338383d9994471f64736f6c6343000818003360a060405234620004af5762000cd3803803806200001d81620004b3565b928339810160a082820312620004af5781516001600160401b039190828111620004af57816200004f918501620004d9565b9260209384820151848111620004af57836200006d918401620004d9565b92604083015190858211620004af5762000089918401620004d9565b92620000a660806200009e6060860162000549565b940162000549565b93825191868311620002fd575f54926001948585811c95168015620004a4575b8a861014620002de578190601f9586811162000451575b508a90868311600114620003eb575f92620003df575b50505f19600383901b1c191690851b175f555b805190878211620002fd578454908582811c92168015620003d4575b8a831014620002de57818584931162000381575b5089908583116001146200031d575f9262000311575b50505f19600383901b1c191690841b1783555b8051958611620002fd576002548381811c91168015620002f2575b88821014620002de5782811162000295575b50869186116001146200021c5794805f8051602062000cb383398151915295949381935f98899462000210575b50501b9186199060031b1c1916176002555b60805260018060a01b031692838352600381526b033b2e3c9fd0803ce8000000806040852055604051908152a360405161075490816200055f82396080518160f90152f35b015192505f80620001b9565b90601f1986169160025f52875f20925f5b8982821062000280575050915f8051602062000cb38339815191529695949391885f99941062000267575b505050811b01600255620001cb565b0151871960f88460031b161c191690555f808062000258565b8385015186559486019493840193016200022d565b60025f52875f208380890160051c8201928a8a10620002d4575b0160051c019084905b828110620002c85750506200018c565b5f8155018490620002b8565b92508192620002af565b634e487b7160e01b5f52602260045260245ffd5b90607f16906200017a565b634e487b7160e01b5f52604160045260245ffd5b015190505f806200014c565b90869350601f19831691845f528b5f20925f5b8d8282106200036a575050841162000351575b505050811b0183556200015f565b01515f1960f88460031b161c191690555f808062000343565b8385015186558a9790950194938401930162000330565b909150855f52895f208580850160051c8201928c8610620003ca575b918891869594930160051c01915b828110620003bb57505062000136565b5f8155859450889101620003ab565b925081926200039d565b91607f169162000122565b015190505f80620000f3565b5f8080528c8120899550929190601f198516908e5b82821062000439575050841162000420575b505050811b015f5562000106565b01515f1960f88460031b161c191690555f808062000412565b8385015186558b979095019493840193018e62000400565b9091505f80528a5f208680850160051c8201928d86106200049a575b918991869594930160051c01915b8281106200048b575050620000dd565b5f81558594508991016200047b565b925081926200046d565b94607f1694620000c6565b5f80fd5b6040519190601f01601f191682016001600160401b03811183821017620002fd57604052565b919080601f84011215620004af5782516001600160401b038111620002fd576020906200050f601f8201601f19168301620004b3565b92818452828287010111620004af575f5b818110620005355750825f9394955001015290565b858101830151848201840152820162000520565b51906001600160a01b0382168203620004af5756fe6080604081815260049182361015610015575f80fd5b5f3560e01c90816306fdde03146104f857508063095ea7b31461048a57806318160ddd1461046457806323b872dd146103a7578063313ce5671461038c5780633c130d90146102b157806370a082311461027a57806395d89b4114610158578063a9059cbb14610128578063d5f39488146100e55763dd62ed3e14610098575f80fd5b346100e157806003193601126100e1576020916100b3610616565b6100bb61062c565b6001600160a01b039182165f908152928552838320911682528352819020549051908152f35b5f80fd5b50346100e1575f3660031901126100e157517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346100e157806003193601126100e157602090610151610147610616565b6024359033610642565b5160018152f35b50346100e1575f3660031901126100e1578051905f60018054908160011c9060018316928315610270575b602093848410811461025d5783885290811561024157506001146101eb575b505050829003601f01601f191682019267ffffffffffffffff8411838510176101d857508291826101d49252826105cf565b0390f35b604190634e487b7160e01b5f525260245ffd5b60015f908152929350837fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b83851061022d57505050508301015f80806101a2565b805488860183015293019284908201610217565b60ff1916878501525050151560051b84010190505f80806101a2565b602289634e487b7160e01b5f525260245ffd5b91607f1691610183565b50346100e15760203660031901126100e1576020906001600160a01b0361029f610616565b165f5260038252805f20549051908152f35b50346100e1575f3660031901126100e1578051905f60025460018160011c9060018316928315610382575b602093848410811461025d57838852908115610241575060011461032c57505050829003601f01601f191682019267ffffffffffffffff8411838510176101d857508291826101d49252826105cf565b60025f908152929350837f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b83851061036e57505050508301015f80806101a2565b805488860183015293019284908201610358565b91607f16916102dc565b50346100e1575f3660031901126100e1576020905160128152f35b50346100e15760603660031901126100e1576103c1610616565b906103ca61062c565b6044359060018060a01b03841693845f52602094868652845f20335f528652845f2054905f198203610404575b5050906101519291610642565b84821061042e579061015195969785925f528852865f20335f52885203855f20558594935f6103f7565b855162461bcd60e51b8152808901889052601060248201526f45524332303a20616c6c6f77616e636560801b6044820152606490fd5b50346100e1575f3660031901126100e157602090516b033b2e3c9fd0803ce80000008152f35b50346100e157806003193601126100e1576020916104a6610616565b9060243590335f528452825f209160018060a01b031691825f52845280835f205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b919050346100e1575f3660031901126100e1575f805460018160011c90600183169283156105c5575b602093848410811461025d57838852908115610241575060011461057157505050829003601f01601f191682019267ffffffffffffffff8411838510176101d857508291826101d49252826105cf565b5f808052929350837f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b8385106105b157505050508301015f80806101a2565b80548886018301529301928490820161059b565b91607f1691610521565b602080825282518183018190529093925f5b82811061060257505060409293505f838284010152601f8019910116010190565b8181018601518482016040015285016105e1565b600435906001600160a01b03821682036100e157565b602435906001600160a01b03821682036100e157565b6001600160a01b0391821692919083156106eb571690815f52600360205260405f20548181106106b557817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600384520360405f2055845f5260405f20818154019055604051908152a3565b60405162461bcd60e51b815260206004820152600e60248201526d45524332303a2062616c616e636560901b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a045524332303a20746f3d360ac1b6044820152606490fdfea2646970667358221220865e26e9a6470a8f7d74af44e7be85ebf51e2be4505e5faef113bb345d3c06a964736f6c63430008180033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220bc0fa18d45d7e52d04a24bdf929291c2900027e486998530ec631ed638b5d23c64736f6c63430008180033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xe53d86…725345 | 31 days agoFri, 17 Jul 2026 13:12:32 UTC | 0xff5da9…fc0b | [0] 0x000000000000…f2fc9ee4 [1] 0x000000000000…e098a7ea [2] 0x000000000000…b22b6b8c data: 0x000000000000000000…00000000 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 12,145,579 | 31 days agoFri, 17 Jul 2026 13:12:32 UTC | 0xe53d86…725345 | CREATE | launch | 0x64d1…a04e | OUT | 0xb000…a7ea | 0 ETH |
| 12,145,579 | 31 days agoFri, 17 Jul 2026 13:12:32 UTC | 0xe53d86…725345 | CREATE | launch | 0x64d1…a04e | OUT | 0x6731…9ee4 | 0 ETH |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xe53d86…725345 | launch | 12,145,579 | 31 days agoFri, 17 Jul 2026 13:12:32 UTC | 0x65b5…6b8c | IN | LemonCurveFactory | $0.000 ETH | 0.00023315 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xe53d86fd…725345 | Transfer | 12,145,579 | 31 days agoFri, 17 Jul 2026 13:12:32 UTC | 0x64d1…a04e | OUT | 0xb000…a7ea | 1,000,000,000.000000 cashfrog | cashfrog (cashfrog) | |
| 0xe53d86fd…725345 | Transfer | 12,145,579 | 31 days agoFri, 17 Jul 2026 13:12:32 UTC | 0x0000…0000 | IN | 0x64d1…a04e | 1,000,000,000.000000 cashfrog | cashfrog (cashfrog) |