0 txs
0 calls
constructor
No constructor.
functions
creationFee
viewfunction creationFee() view returns (uint256)
currentTokenId
viewfunction currentTokenId() view returns (uint256)
deployed
viewfunction deployed(address) view returns (bool)
dexFeeBasisPoints
viewfunction dexFeeBasisPoints() view returns (uint256)
dexTreasury
viewfunction dexTreasury() view returns (address)
feeBasisPoints
viewfunction feeBasisPoints() view returns (uint256)
getAssetDeployConfig
viewfunction getAssetDeployConfig() view returns (tuple)
getInitCode
viewfunction getInitCode(tuple _tokenConfig) view returns (bytes)
initialTokenSupply
viewfunction initialTokenSupply() view returns (uint256)
LPFeeDistributor
viewfunction LPFeeDistributor() view returns (address)
mcLowerLimit
viewfunction mcLowerLimit() view returns (uint256)
migrationFeeFixed
viewfunction migrationFeeFixed() view returns (uint256)
oraToken
viewfunction oraToken() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
poolCreationFee
viewfunction poolCreationFee() view returns (uint256)
readyForMigration
viewfunction readyForMigration(address) view returns (bool)
Swap
viewfunction Swap() view returns (address)
tokensMigrationThreshold
viewfunction tokensMigrationThreshold() view returns (uint256)
treasury
viewfunction treasury() view returns (address)
virtualCollateralReserves
viewfunction virtualCollateralReserves() view returns (uint256)
virtualTokenReserves
viewfunction virtualTokenReserves() view returns (uint256)
buyExactIn
payablefunction buyExactIn(address _token, uint256 _amountOutMin, uint256 _collateralAmount) payable
buyExactOut
payablefunction buyExactOut(address _token, uint256 _tokenAmount, uint256 _maxCollateralAmount) payable
createAIMemeToken
payablefunction createAIMemeToken(tuple _tokenConfig, bool _isPermit, uint256 _permitFee, uint256 _permitDeadline, uint8 _v, bytes32 _r, bytes32 _s, bytes32 _salt) payable returns (address tokenAddress)
createAIMemeTokenAndBuy
payablefunction createAIMemeTokenAndBuy(tuple _tokenConfig, uint256 _tokenAmountMin, uint256 _collateralAmount, bool _isPermit, uint256 _permitFee, uint256 _permitDeadline, uint8 _v, bytes32 _r, bytes32 _s, bytes32 _salt) payable returns (address tokenAddress)
initialize
nonpayablefunction initialize()
migrate
nonpayablefunction migrate(address _token)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
sellExactIn
nonpayablefunction sellExactIn(address _token, uint256 _tokenAmount, uint256 _amountCollateralMin)
sellExactOut
nonpayablefunction sellExactOut(address _token, uint256 _tokenAmountMax, uint256 _amountCollateral)
setConfig
nonpayablefunction setConfig(tuple curveConfig, tuple migrationConfig, tuple addressConfig, tuple assetDeployConfig, address _swap)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
events
BuyExactIn
event BuyExactIn(address indexed buyer, address indexed token, uint256 tokenAmount, uint256 curvePositionAfterTrade, uint256 collateralAmount, uint256 fee, uint256 dexFee, uint256 curveProgressBps, uint256 marketCap)
BuyExactOut
event BuyExactOut(address indexed buyer, address indexed token, uint256 tokenAmount, uint256 curvePositionAfterTrade, uint256 collateralAmount, uint256 refund, uint256 fee, uint256 dexFee, uint256 curveProgressBps, uint256 marketCap)
Initialized
event Initialized(uint64 version)
MarketCapReached
event MarketCapReached(address token)
Migrated
event Migrated(address token, uint256 tokensToMigrate, uint256 collateralToMigrate, uint256 lendingPoolAmount, uint256 tokensToBurn, uint256 migrationFee, address pair)
NewAIMemeToken
event NewAIMemeToken(uint256 indexed tokenId, address indexed addr, address indexed creator, uint256 permitFee, uint256 creationFee)
NewAIMemeTokenAndBuy
event NewAIMemeTokenAndBuy(address indexed token, address indexed creator, uint256 tokenAmount, uint256 collateralAmount, uint256 helioFee, uint256 dexFee, uint256 curveProgress, uint256 marketCap)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
SellExactIn
event SellExactIn(address indexed seller, address indexed token, uint256 tokenAmount, uint256 curvePositionAfterTrade, uint256 collateralAmount, uint256 fee, uint256 dexFee, uint256 curveProgressBps, uint256 marketCap)
SellExactOut
event SellExactOut(address indexed seller, address indexed token, uint256 tokenAmount, uint256 curvePositionAfterTrade, uint256 collateralAmount, uint256 fee, uint256 dexFee, uint256 curveProgressBps, uint256 marketCap)
SetConfig
event SetConfig((uint256 initialTokenSupply, uint256 virtualTokenReserves, uint256 virtualCollateralReserves, uint256 feeBasisPoints, uint256 dexFeeBasisPoints) curveConfig, (uint256 migrationFeeFixed, uint256 poolCreationFee, uint256 tokensMigrationThreshold, uint256 mcLowerLimit, uint256 creationFee, uint256 lendingPoolPercentage) migrationConfig, (address treasury, address dexTreasury, address oraToken, address positionManager, address V3Factory, address lpFeeDistributor) addressConfig, (address assetDeployer, uint256 initialExchangeRateMantissa, uint256 collateralFactor, uint256 reserveFactor, uint256 seizeShare, uint256 supplyCap, uint256 borrowCap, uint256 initialMintAmount, uint256 baseRatePerYear, uint256 multiplierPerYear, uint256 jumpMultiplierPerYear, uint256 kink, bool pause) assetDeployConfig, address swap)
Unpaused
event Unpaused(address account)
errors
AlreadyDeployed
error AlreadyDeployed()
DexTreasuryZeroValue
error DexTreasuryZeroValue()
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
FeeBPSCheckFailed
error FeeBPSCheckFailed()
InvalidInitialization
error InvalidInitialization()
InvalidTokenAddress
error InvalidTokenAddress()
NotInitializing
error NotInitializing()
NotReadyForMigration
error NotReadyForMigration()
ORATokenZeroAddress
error ORATokenZeroAddress()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
TokensMigrationThresholdZeroValue
error TokensMigrationThresholdZeroValue()
TotalSupplyZeroValue
error TotalSupplyZeroValue()
TreasuryZeroValue
error TreasuryZeroValue()
VirtualCollateralReservesZeroValue
error VirtualCollateralReservesZeroValue()
VirtualTokenReservesZeroValue
error VirtualTokenReservesZeroValue()
ZeroAmount
error ZeroAmount()
creation bytecode
0x60808060405234601557615bfe908161001a8239f35b5f80fdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c9081629a9b7b14611a015750806301d3bee01461174d578063095b710d146117305780631655bc6214611713578063169bd30e1461165f57806330a2aa201461153e5780633ebfdaaf146115165780633f4ba83a1461149857806345c60e57146113985780634af58d22146112575780635c975abb1461122957806361d027b3146112015780636bb922dd146111e45780636d04eb9f146111c7578063715018a6146111605780638129fc1c14610fc95780638456cb5914610f5857806385bb392314610f1b57806385f377ca14610ef35780638da5cb5b14610ebf57806394b6c16014610d6e578063ace1bfab14610d31578063b077e86914610cc4578063b8606eef14610ca7578063bb4abe1e14610c7f578063be74615f14610c62578063c68255a514610af6578063ce5494bb14610862578063d90749001461083a578063dce0b4e41461081d578063e8e70c4c14610800578063eb13a7d2146107e3578063eb6706af146101f2578063f2fde38b146101c95763fe94c269146101a8575f61000f565b346101c5575f3660031901126101c5576020600a54604051908152f35b5f80fd5b346101c55760203660031901126101c55761001a6101e5611a1a565b6101ed612366565b611e49565b346101c55736600319016103e081126101c55760a0136101c55760405160a0810181811067ffffffffffffffff8211176107cf576040526004358152602435602082015260443560408201526064356060820152608435608082015260c060a3193601126101c5576040519061026782611b07565b60a435825260c435602083015260e43560408301526101043560608301526101243560808301526101443560a083015260c0366101631901126101c557604051906102b182611b07565b610164356001600160a01b03811681036101c5578252610184356001600160a01b03811681036101c55760208301526101a4356001600160a01b03811681036101c55760408301526101c4356001600160a01b03811681036101c55760608301526101e4356001600160a01b03811681036101c5576080830152610204356001600160a01b03811681036101c55760a08301526101a0366102231901126101c5576040519261035f84611aea565b610224356001600160a01b03811681036101c55784526102443560208501526102643560408501526102843560608501526102a43560808501526102c43560a08501526102e43560c08501526103043560e0850152610324356101008501526103443561012085015261036435610140850152610384356101608501526103a43580151581036101c5576101808501526103c435906001600160a01b03821682036101c55761040c612366565b8251156107c0576020830151156107b1576040830151156107a2576040810151156107935783516001600160a01b0316156107845760208401516001600160a01b0316156107755760408401516001600160a01b03161561076657612710608084015110156107575761271060608401511015610757577f10b8f9057d4765115877a16ed4a04501c90e302d6efca18a7eb6dc805e4778f1946103e09460a06107459360808751978860035560208101516004556040810151600555606081015160065581810151600755825160085560208301516009556040830151600a556060830151600b5581830151600c5583830151600d55600180851b038551166001600160601b03851b600e541617600e55600180851b036020860151166001600160601b03851b600f541617600f55600180851b03604086015116806001600160601b03861b6010541617601055600180861b036060870151166001600160601b03861b6011541617601155600180861b0383870151166001600160601b03861b6012541617601255600180861b0385870151166001600160601b03861b6013541617601355600180861b038751166001600160601b03861b6014541617601455602087015160155560408701516016556060870151601755828701516018558487015160195560c0870151601a5560e0870151601b55610100870151601c55610120870151601d55610140870151601e55610160870151601f55610180870151151560ff801960205416911617602055600180861b0389166001600160601b03861b60025416176002556001600160601b03851b6001541617600155604051988952602081015160208a0152604081015160408a0152606081015160608a015201516080880152805182880152602081015160c0880152604081015160e088015260608101516101008801526080810151610120880152015161014086015260018060a01b0381511661016086015260018060a01b0360208201511661018086015260018060a01b036040820151166101a086015260018060a01b036060820151166101c086015260018060a01b036080820151166101e086015260a0600180821b0391015116610200850152610220840190611a5a565b6001600160a01b03166103c0820152a1005b63ffae119760e01b5f5260045ffd5b636dc8688960e01b5f5260045ffd5b63c764c12360e01b5f5260045ffd5b630172f23760e11b5f5260045ffd5b630c7a88c360e21b5f5260045ffd5b6307b4f43d60e11b5f5260045ffd5b6306bb2a0d60e31b5f5260045ffd5b63ef7facc160e01b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b346101c5575f3660031901126101c5576020600354604051908152f35b346101c5575f3660031901126101c5576020600554604051908152f35b346101c5575f3660031901126101c5576020600c54604051908152f35b346101c5575f3660031901126101c5576013546040516001600160a01b039091168152602090f35b346101c55760203660031901126101c55761087b611a1a565b610883611eba565b61088b611ef2565b6001600160a01b03165f8181526022602052604090205460ff1615610ae75760405163011fa75760e71b8152906080826004815f855af1918215610a2b575f905f935f915f91610a9e575b50604051636bb922dd60e01b8152602081600481885afa908115610a2b575f91610a6c575b5060405163be74615f60e01b815290602082600481895afa908115610a2b575f91610a36575b61092b9250611b59565b916040519363a8aa1b3160e01b8552602085600481895afa948515610a2b575f956109bb575b7f78bfc478696f26b19ed7c3f5c6f66df91fba4ea8fc78b224c610f3f27a72672960e088888888888e89604051968752602087015260408601526060850152608084015260a083015260018060a01b031660c0820152a160015f516020615b895f395f51905f5255005b909392919594506020813d602011610a23575b816109db60209383611b23565b810103126101c55751946001600160a01b03861686036101c55793949391929091907f78bfc478696f26b19ed7c3f5c6f66df91fba4ea8fc78b224c610f3f27a726729610951565b3d91506109ce565b6040513d5f823e3d90fd5b90506020823d602011610a64575b81610a5160209383611b23565b810103126101c55761092b915190610921565b3d9150610a44565b90506020813d602011610a96575b81610a8760209383611b23565b810103126101c55751866108fb565b3d9150610a7a565b94505050506080823d608011610adf575b81610abc60809383611b23565b810103126101c557815160208301516040840151606090940151909390856108d6565b3d9150610aaf565b633f7a101960e01b5f5260045ffd5b610b5d610b0236611a30565b909291610b0d611eba565b610b15611ef2565b610b2133838684612399565b60405163c68255a560e01b81523360048201526024810194909452604484018290526001600160a01b038116939260e090849081906064820190565b03815f885af1928315610a2b575f93610c22575b50610b7b906122cb565b606082015191608081015191815190818103908111610c0e5760208301519060408401519260c060a086015195015195604051978852602088015260408701526060860152608085015260a084015260c083015260e08201527f4f308e4e4bfa747e35aeb48a438446ab5652fe1085d6e777f6a6280f597708486101003392a360015f516020615b895f395f51905f5255005b634e487b7160e01b5f52601160045260245ffd5b90925060e03d60e011610c5b575b610c3a8183611b23565b81019060e0818303126101c557610b7b91610c5491611b7e565b9290610b71565b503d610c30565b346101c5575f3660031901126101c5576020600954604051908152f35b346101c5575f3660031901126101c5576001546040516001600160a01b039091168152602090f35b346101c5575f3660031901126101c5576020600654604051908152f35b346101c55760203660031901126101c55760043567ffffffffffffffff81116101c55760e060031982360301126101c5576040610d05602092600401611c3b565b815192839181835280519182918282860152018484015e5f828201840152601f01601f19168101030190f35b346101c55760203660031901126101c5576001600160a01b03610d52611a1a565b165f526022602052602060ff60405f2054166040519015158152f35b346101c557610d7c36611a30565b9091610d86611eba565b610d8e611ef2565b6001600160a01b0316918215610eb0578015610ea1576040516304a5b60b60e51b81523360048201526024810191909152604481019190915260e0816064815f865af1908115610a2b575f91610e68575b50602081810151608080840151845160408087015160608089015160a0808b015160c09b8c015186519a8b529a8a01979097529388019490945286015292840152908201529182015233907f0e59b2b76079e6d6a9929531a0dccd88a6241578150ec3948b805a5ccf6a8b0a908060e081015b0390a360015f516020615b895f395f51905f5255005b905060e03d60e011610e9a575b610e7f8183611b23565b810160e0828203126101c557610e9491611b7e565b82610ddf565b503d610e75565b631f2a200560e01b5f5260045ffd5b630f58058360e11b5f5260045ffd5b346101c5575f3660031901126101c5575f516020615b495f395f51905f52546040516001600160a01b039091168152602090f35b346101c5575f3660031901126101c557600f546040516001600160a01b039091168152602090f35b346101c55760203660031901126101c5576001600160a01b03610f3c611a1a565b165f526021602052602060ff60405f2054166040519015158152f35b346101c5575f3660031901126101c557610f70612366565b610f78611ef2565b600160ff195f516020615b695f395f51905f525416175f516020615b695f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346101c5575f3660031901126101c5575f516020615ba95f395f51905f525460ff8160401c16159067ffffffffffffffff811680159081611158575b600114908161114e575b159081611145575b506111365767ffffffffffffffff1981166001175f516020615ba95f395f51905f52558161110a575b50611049612432565b611051612432565b61105a33611e49565b611062612432565b61106a612432565b60015f516020615b895f395f51905f5255611083612432565b61108b612432565b60ff195f516020615b695f395f51905f5254165f516020615b695f395f51905f52556110b357005b68ff0000000000000000195f516020615ba95f395f51905f5254165f516020615ba95f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b68ffffffffffffffffff191668010000000000000001175f516020615ba95f395f51905f525581611040565b63f92ee8a960e01b5f5260045ffd5b90501583611017565b303b15915061100f565b839150611005565b346101c5575f3660031901126101c557611178612366565b5f516020615b495f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101c5575f3660031901126101c5576020600b54604051908152f35b346101c5575f3660031901126101c5576020600854604051908152f35b346101c5575f3660031901126101c557600e546040516001600160a01b039091168152602090f35b346101c5575f3660031901126101c557602060ff5f516020615b695f395f51905f5254166040519015158152f35b60e06112bb61126536611a30565b611270949194611eba565b611278611ef2565b61128433828786612399565b60405163257ac69160e11b8152336004820152602481019590955260448501526001600160a01b0382169392839081906064820190565b03815f875af1918215610a2b575f92611358575b506112d9906122cb565b7fdda48f30e3ded648266c3c8c61a00b0f9d2ac43c10ac6d66d3cd43673e4d31e56060820151916080810151610e52825192602081015190604081015160c060a083015192015192604051968796339a8893909796959260c0959260e08601998652602086015260408501526060840152608083015260a08201520152565b90915060e03d60e011611391575b6113708183611b23565b81019060e0818303126101c5576112d99161138a91611b7e565b91906112cf565b503d611366565b346101c5575f3660031901126101c5575f6101806040516113b881611aea565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152826101408201528261016082015201526101a060405161141281611aea565b60018060a01b03601454168152601554602082015260165460408201526017546060820152601854608082015260195460a0820152601a5460c0820152601b5460e0820152601c54610100820152601d54610120820152601e54610140820152601f5461016082015260ff6020541615156101808201526114966040518092611a5a565bf35b346101c5575f3660031901126101c5576114b0612366565b5f516020615b695f395f51905f525460ff8116156115075760ff19165f516020615b695f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b346101c5575f3660031901126101c5576002546040516001600160a01b039091168152602090f35b346101c55761154c36611a30565b9091611556611eba565b61155e611ef2565b6001600160a01b0316918215610eb0578015610ea157604051630185155160e51b81523360048201526024810191909152604481019190915260e0816064815f865af1908115610a2b575f91611626575b50602081810151608080840151845160408087015160608089015160a0808b015160c09b8c015186519a8b529a8a01979097529388019490945286015292840152908201529182015233907fb4e82bb47a8ccb9af858ff3467b7dc9c5e0edd247bdb0ab3ab00d1b92f86e1a8908060e08101610e52565b905060e03d60e011611658575b61163d8183611b23565b810160e0828203126101c55761165291611b7e565b826115af565b503d611633565b6101003660031901126101c55760043567ffffffffffffffff81116101c55760e060031982360301126101c55760243580151581036101c55760843560ff811681036101c5576020926116f0926116b4611eba565b6116bc611ef2565b6116d06116cb60c48401611b45565b611f19565b60e4359260c4359260a4359260643591600c549160443591600401611f87565b60015f516020615b895f395f51905f52556040516001600160a01b039091168152f35b346101c5575f3660031901126101c5576020600454604051908152f35b346101c5575f3660031901126101c5576020600754604051908152f35b6101403660031901126101c55760043567ffffffffffffffff81116101c55760e060031982360301126101c557604435906064359081151582036101c55760c43560ff811681036101c5576117e8916117a4611eba565b6117ac611ef2565b60c48101936117bd6116cb86611b45565b6101243592610104359260e4359260a435916117db600c548b611b59565b9160843591600401611f87565b9082611814575b60015f516020615b895f395f51905f52556040516001600160a01b0383168152602090f35b60015461186f919060209085906001600160a01b0316855f61183586611b45565b6040516323b872dd60e01b81526001600160a01b039182166004820152921660248301526044820193909352948592839182906064820190565b03925af1918215610a2b576118d4926119d4575b506001600160a01b0383169060e08561189b83611b45565b60405163257ac69160e11b81526001600160a01b0390911660048201526024803590820152604481019190915293849081906064820190565b03815f865af1928315610a2b575f9361196a575b5060c06020956119217f639fd3fdc768a15eb601868d7a595d85ae20b3ada407e4e4b0d200aa57de459e9361191c886122cb565b611b45565b90606086015195888101516040820151908560a084015193015193604051998a528b8a015260408901526060880152608087015260a086015260018060a01b031693a3826117ef565b90925060e03d60e0116119cd575b6119828183611b23565b81019060e0818303126101c5576020956119216119c27f639fd3fdc768a15eb601868d7a595d85ae20b3ada407e4e4b0d200aa57de459e9460c094611b7e565b9593505095506118e8565b503d611978565b6119f59060203d6020116119fa575b6119ed8183611b23565b810190611b66565b611883565b503d6119e3565b346101c5575f3660031901126101c5576020905f548152f35b600435906001600160a01b03821682036101c557565b60609060031901126101c5576004356001600160a01b03811681036101c557906024359060443590565b610180809160018060a01b0381511684526020810151602085015260408101516040850152606081015160608501526080810151608085015260a081015160a085015260c081015160c085015260e081015160e085015261010081015161010085015261012081015161012085015261014081015161014085015261016081015161016085015201511515910152565b6101a0810190811067ffffffffffffffff8211176107cf57604052565b60c0810190811067ffffffffffffffff8211176107cf57604052565b90601f8019910116810190811067ffffffffffffffff8211176107cf57604052565b356001600160a01b03811681036101c55790565b91908201809211610c0e57565b908160209103126101c5575180151581036101c55790565b91908260e09103126101c55760405160e0810181811067ffffffffffffffff8211176107cf5760405260c0808294805184526020810151602085015260408101516040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b9035601e19823603018112156101c557016020813591019167ffffffffffffffff82116101c55781360383136101c557565b908060209392818452848401375f828201840152601f01601f1916010190565b6136eb90604051611c4f6020840182611b23565b828152602081019261245e843960405160208101610240815260c0611d1a611cf9611cd8611cb7611c96611c838a80611be9565b60e06102608b01526103408a0191611c1b565b611ca360208b018b611be9565b89830361025f19016102808b015290611c1b565b611cc460408a018a611be9565b88830361025f19016102a08a015290611c1b565b611ce56060890189611be9565b87830361025f19016102c089015290611c1b565b611d066080880188611be9565b86830361025f19016102e088015290611c1b565b60a0860135610300850152940135916001600160a01b03831683036101c5576001600160a01b0392831661032082015260035460408201526004546060820152600554608082015260065460a082015260075460c082015260085460e0820152600954610100820152600a54610120820152600b54610140820152600c54610160820152600d54610180820152600e5483166101a0820152600f5483166101c082015260105483166101e08201526011548316610200820152601254831661022082015260135490921661024083015292819003601f1981018252611e37936020929091611e089082611b23565b6040519586945180918587015e840190838201905f8252519283915e01015f815203601f198101835282611b23565b90565b908160209103126101c5575190565b6001600160a01b03168015611ea7575f516020615b495f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b60025f516020615b895f395f51905f525414611ee35760025f516020615b895f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b60ff5f516020615b695f395f51905f525416611f0a57565b63d93c066560e01b5f5260045ffd5b34611f22575b50565b600254604051632f19cfa360e01b81526001600160a01b03928316600482015291602091839160249183913491165af18015610a2b57611f5f5750565b611f1f9060203d602011611f80575b611f788183611b23565b810190611e3a565b503d611f6e565b989793919695949092955f965f549660018801809811610c0e57611faa8c611c3b565b956121d6575b5050505050600c548061213d575b5060208151910184f5946001600160a01b03861692831561212e57838152602160205260ff60408220541661211f57833b1561211157604051632d4fce9d60e11b81526014546001600160a01b03166004820152601554602482015260165460448201526017546064820152601854608482015260195460a4820152601a5460c4820152601b5460e4820152601c54610104820152601d54610124820152601e54610144820152601f5461016482015260205460ff16151561018482015281816101a48183895af1801561211457908492916120f8575b5060c07fa1902b83245f17b2217694f4f1f35016bcbbeb6d862abda59572d287d8469bf29360409383886120de95526021602052858120600160ff198254161790555501611b45565b600c54825196875260208701526001600160a01b031694a4565b8180935061210591611b23565b6121115782905f612095565b80fd5b6040513d84823e3d90fd5b63a6ef0ba160e01b8152600490fd5b630f58058360e11b8152600490fd5b60015461219d916020916001600160a01b031661215c60c08c01611b45565b600e546040516323b872dd60e01b81526001600160a01b03928316600482015291166024820152604481019290925290928391908290899082906064820190565b03925af180156121cb5715611fbe576121c49060203d6020116119fa576119ed8183611b23565b505f611fbe565b6040513d87823e3d90fd5b60018060a01b03600154169160c08d01946121fa8c6121f488611b45565b93611b59565b93803b156101c5575f9560e49460ff88946040519b8c998a9863d505accf60e01b8a5260018060a01b031660048a01523060248a01526044890152606488015216608486015260a485015260c48401525af1918215610a2b5787926122b1575b5060015461227a9260209290916001600160a01b03169061215c90611b45565b03925af180156121cb57612292575b80808080611fb0565b6122aa9060203d6020116119fa576119ed8183611b23565b505f612289565b5f9196506122bf9250611b23565b5f93859061227a61225a565b60405163fd62bcd760e01b81526001600160a01b039190911690602081600481855afa908115610a2b575f91612347575b506123045750565b6020817f28a67e00d20c3495179267f9b20db42e0ba4ec7111a6d7cc345e1522404b8100925f526022825260405f20600160ff19825416179055604051908152a1565b612360915060203d6020116119fa576119ed8183611b23565b5f6122fc565b5f516020615b495f395f51905f52546001600160a01b0316330361238657565b63118cdaa760e01b5f523360045260245ffd5b91906001600160a01b03831615610eb05715610ea1578015610ea157826020926123c561240995611f19565b6001546040516323b872dd60e01b81526001600160a01b039384166004820152918316602483015260448201939093529384929091169082905f9082906064820190565b03925af18015610a2b5761241a5750565b611f1f9060203d6020116119fa576119ed8183611b23565b60ff5f516020615ba95f395f51905f525460401c161561244e57565b631afcd79f60e31b5f5260045ffdfe61010060405234610683576136eb803803809161001e82610100610bba565b61010039610100810190610240811261068357610100516001600160401b038111610683576101000160e081840312610683576040519260e084016001600160401b038111858210176107e75760405281516001600160401b038111610683578161008a918401610bdd565b845260208201516001600160401b03811161068357816100ab918401610bdd565b602085015260408201516001600160401b03811161068357816100cf918401610bdd565b604085015260608201516001600160401b03811161068357816100f3918401610bdd565b60608501526080820151916001600160401b0383116106835761011d60c092610132948301610bdd565b608086015260a081015160a086015201610c32565b60c083015260a0601f19820112610683576040519160a083016001600160401b038111848210176107e757604090815261012051845261014051602085015261016051908401526101805160608401526101a051608084015260c060bf198301126106835760c0604051926101a684610b9f565b61010082015184526101e05160208501526102005160408501526102205160608501526102405160808501526102605160a085015261017f19011261068357604051916101f283610b9f565b6101fd610280610c32565b835261020a6102a0610c32565b602084015261021a6102c0610c32565b604084015261022a6102e0610c32565b606084015261023a610300610c32565b608084015261024a610320610c32565b60a084015281516020830151815190916001600160401b0382116107e75760035490600182811c92168015610b95575b60208310146107c95781601f849311610b27575b50602090601f8311600114610ac1575f92610ab6575b50508160011b915f199060031b1c1916176003555b8051906001600160401b0382116107e75760045490600182811c92168015610aac575b60208310146107c95781601f849311610a3e575b50602090601f83116001146109d8575f926109cd575b50508160011b915f199060031b1c1916176004555b600160055560a082015160805260408201518051906001600160401b0382116107e75760065490600182811c921680156109c3575b60208310146107c95781601f849311610955575b50602090601f83116001146108ef575f926108e4575b50508160011b915f199060031b1c1916176006555b60608201518051906001600160401b0382116107e75760075490600182811c921680156108da575b60208310146107c95781601f84931161086c575b50602090601f8311600114610806575f926107fb575b50508160011b915f199060031b1c1916176007555b60808201518051906001600160401b0382116107e757600854600181811c911680156107dd575b60208210146107c957601f8111610766575b50602090601f83116001146106fe5760609392915f91836106f3575b50508160011b915f199060031b1c1916176008555b84516009819055602080870151600a819055600d55604080880151600b819055600c5560a084810151600e55600f805461ffff19169055858901516010556080988901516011558451601255848301516013558482015160145594909301516015558551601680546001600160a01b03199081166001600160a01b03938416179091559187015160178054841691831691909117905560c095860151601880548416918316919091179055601a805483163317905586850151601b8054909316908216179091556060860151811660e05295850151861690935283015190931690925230156106ae576002549082820180921161069a575f9260209260025530845283835260408420818154019055604051908152837fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef843093a360c051604091820151915163a167129560e01b81523060048201526001600160a01b0392831660248201526127106044820152938492606492849291165af190811561068f575f91610651575b50601980546001600160a01b0319166001600160a01b0392909216919091179055604051612aa49081610c4782396080518161067c015260a05181818161061701528181610a9f01526127fa015260c0518161080e015260e051818181610bea01526113940152f35b90506020813d602011610687575b8161066c60209383610bba565b810103126106835761067d90610c32565b5f6105e8565b5f80fd5b3d915061065f565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b015190505f8061044b565b90601f1983169160085f52815f20925f5b81811061074e5750916001939185606097969410610736575b505050811b01600855610460565b01515f1960f88460031b161c191690555f8080610728565b9293602060018192878601518155019501930161070f565b60085f527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3601f840160051c810191602085106107bf575b601f0160051c01905b8181106107b4575061042f565b5f81556001016107a7565b909150819061079e565b634e487b7160e01b5f52602260045260245ffd5b90607f169061041d565b634e487b7160e01b5f52604160045260245ffd5b015190505f806103e1565b60075f9081528281209350601f198516905b818110610854575090846001959493921061083c575b505050811b016007556103f6565b01515f1960f88460031b161c191690555f808061082e565b92936020600181928786015181550195019301610818565b60075f529091507fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688601f840160051c810191602085106108d0575b90601f859493920160051c01905b8181106108c257506103cb565b5f81558493506001016108b5565b90915081906108a7565b91607f16916103b7565b015190505f8061037a565b60065f9081528281209350601f198516905b81811061093d5750908460019594939210610925575b505050811b0160065561038f565b01515f1960f88460031b161c191690555f8080610917565b92936020600181928786015181550195019301610901565b60065f529091507ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f601f840160051c810191602085106109b9575b90601f859493920160051c01905b8181106109ab5750610364565b5f815584935060010161099e565b9091508190610990565b91607f1691610350565b015190505f80610306565b60045f9081528281209350601f198516905b818110610a265750908460019594939210610a0e575b505050811b0160045561031b565b01515f1960f88460031b161c191690555f8080610a00565b929360206001819287860151815501950193016109ea565b60045f529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610aa2575b90601f859493920160051c01905b818110610a9457506102f0565b5f8155849350600101610a87565b9091508190610a79565b91607f16916102dc565b015190505f806102a4565b60035f9081528281209350601f198516905b818110610b0f5750908460019594939210610af7575b505050811b016003556102b9565b01515f1960f88460031b161c191690555f8080610ae9565b92936020600181928786015181550195019301610ad3565b60035f529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c81019160208510610b8b575b90601f859493920160051c01905b818110610b7d575061028e565b5f8155849350600101610b70565b9091508190610b62565b91607f169161027a565b60c081019081106001600160401b038211176107e757604052565b601f909101601f19168101906001600160401b038211908210176107e757604052565b81601f82011215610683578051906001600160401b0382116107e75760405192610c11601f8401601f191660200185610bba565b8284526020838301011161068357815f9260208093018386015e8301015290565b51906001600160a01b03821682036106835756fe6080806040526004361015610012575f80fd5b5f905f3560e01c90816302d05d3f14611efe5750806306fdde0314611ee3578063095b710d14611ec6578063095ea7b314611ea05780631520448114611e495780631655bc6214611e2c57806318160ddd14611e0f5780632368da3214611df557806323b872dd14611dbd578063291fcfa514611da05780632dd2bd4414611ce557806330a2aa2014611b87578063313ce56714611b6c57806338d52e0f14611b445780633950935114611af657806342966c6814611ad957806349a3024614611a425780634af58d221461182d5780634b1f3865146118135780635a9f9d3a1461151757806361d027b3146114ef5780636bb922dd146114d25780636d04eb9f146114b557806370a082311461147e5780637284e416146113c3578063791b98bc1461137f57806379cc67901461134d57806385f377ca146113255780638ba47bdd146112315780638fd3ab8014610a5057806390825c2814610a2d57806394b6c1601461087157806395d89b411461083d57806397d56997146107f8578063a457c2d714610755578063a8aa1b311461072c578063a9059cbb146106bd578063b026a1211461069f578063b3cea21714610664578063b8606eef14610646578063bb4abe1e14610601578063be74615f146105e3578063c45a0155146105ba578063c68255a51461033f578063d907490014610316578063dd62ed3e146102c3578063e8e70c4c146102a5578063eb13a7d214610287578063fd62bcd7146102645763fe94c26914610244575f80fd5b346102615780600319360112610261576020601454604051908152f35b80fd5b5034610261578060031936011261026157602060ff600f54166040519015158152f35b50346102615780600319360112610261576020600954604051908152f35b50346102615780600319360112610261576020600b54604051908152f35b50346102615760403660031901126102615760406102df611f45565b916102e8611f5b565b9260018060a01b031681526001602052209060018060a01b03165f52602052602060405f2054604051908152f35b5034610261578060031936011261026157601b546040516001600160a01b039091168152602090f35b50346102615761034e36611f98565b906103576122cc565b50601a546001600160a01b031633036105ab5760ff600f541661059c5761037c612773565b308452836020528060408520541061058d5760e0929161043a91600a549061044261042f600b54926010549060115495600254926103b8612320565b966103c16123a7565b926103ca6122cc565b9d8e9961040f612710610407816103ff6103f88c6103f26103eb8c83612231565b918b612313565b90612251565b998a612231565b049e8f612231565b04809d612313565b604060208d019c019c8d528b5201519260a06080860151950151956129d6565b839691965190612244565b835190612244565b80875260608701948552831061057e57926104d8926104c06104b86104ed97946104b060e09b9861047f60018060a01b03601654168251906127c9565b6017548351610496916001600160a01b03166127c9565b6104a38751600a54612313565b600a558b51905190612313565b905190612313565b600b54612244565b600b55865190818111610564575b50505190306125fd565b60406009549130815280602052205490612313565b60808201526104fa61226f565b60a082015261050761241c565b60c0820152600160055561051961298a565b610562604051809260c08091805184526020810151602085015260408101516040850152606081015160608501526080810151608085015260a081015160a08501520151910152565bf35b6105779161057191612313565b836127c9565b5f806104ce565b634544991b60e01b8752600487fd5b63904db1ff60e01b8452600484fd5b63058aab2d60e21b8452600484fd5b630636a15760e11b8452600484fd5b5034610261578060031936011261026157601a546040516001600160a01b039091168152602090f35b50346102615780600319360112610261576020601354604051908152f35b50346102615780600319360112610261576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102615780600319360112610261576020601054604051908152f35b503461026157806003193601126102615760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102615780600319360112610261576020600c54604051908152f35b5034610261576040366003190112610261576106d7611f45565b6019549091906001600160a01b038084169116148061071c575b61070d5761070260243583336125fd565b602060405160018152f35b633b95747f60e21b8152600490fd5b5060ff600f5460081c16156106f1565b50346102615780600319360112610261576019546040516001600160a01b039091168152602090f35b50346102615760403660031901126102615761076f611f45565b60406024359233815260016020522060018060a01b0382165f5260205260405f2054918083106107a55761070292039033612461565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b50346102615780600319360112610261576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461026157806003193601126102615761086d6108596120cf565b604051918291602083526020830190611f21565b0390f35b50346102615761088036611f98565b61088b9291926122cc565b50601a546001600160a01b031633036105ab5760ff600f541661059c576108b0612773565b600a5492600b546010549483601154926108c86122cc565b976108d39083612231565b6127109004936108e39085612231565b612710900493846108f391612313565b92604089019360608a0195865280855261090d9084612313565b855161091891612313565b89526109249083612231565b9161092e91612313565b61093791612251565b92602087019380855211610a1e5760e0969361099b6104d8946109866109b198956109726109a69660018060a01b03601654169051906127c9565b6017549051906001600160a01b03166127c9565b610992815130876125fd565b51600a54612244565b600a55600b54612313565b600b558451906127c9565b60808201526109be61226f565b60a08201526109cb61241c565b60c08201526001600555610562604051809260c08091805184526020810151602085015260408101516040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b630a1c173f60e41b8752600487fd5b50346102615780600319360112610261576020610a4861241c565b604051908152f35b5034610fb7575f366003190112610fb757601a546001600160a01b0316330361122257610a7b612773565b61010061ff0019600f541617600f55305f525f60205260405f205460018060a01b037f000000000000000000000000000000000000000000000000000000000000000016906040516370a0823160e01b8152306004820152602081602481865afa908115610fac575f916111ee575b50610ba6610b9d610b1b92610b26600a54610b21600b5491601254978895610b166013549a8b92612313565b612313565b90612231565b612251565b8086106111e057610b87610b169180975b610b70610b54612710610b4c60115489612231565b048097612313565b98610b6a60018060a01b0360165416918b612244565b906127c9565b601754610b169086906001600160a01b03166127c9565b94856111d1575b610b16600b54600c5490612313565b60135490612313565b91610bc4612710610bbc600954600e5490612231565b048092612313565b93811515806111bd575b6110f4575b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482018190526024820187905291906020816044815f305af18015610fac576110d7575b5060405163095ea7b360e01b81526001600160a01b0383166004820152602481018690526020816044815f865af18015610fac576110aa575b5060018060a01b03601b541690604051610c8181611fc2565b5f81525f60208201525f60408201525f60608201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f610140820152508030105f14610fee57670de0b6b3a76400008602861590878104670de0b6b3a764000014821715610fbb5788610cf991612251565b92606389028981046063148a151715610fbb5760638902928984046063141715610fbb57610258420192834211610fbb576064809260405196610d3b88611fc2565b30885260208801526127106040880152620d89b3196060880152620d89b460808801528c60a08801528b60c08801520460e086015204610100840152610120830152610140820152905b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715610fbb5760018101808211610fbb5760011c815b828210610fcf5750508060601b90808204600160601b1490151715610fbb576019546001600160a01b031690813b15610fb75760405163f637731d60e01b8152670de0b6b3a76400009091046001600160a01b03166004820152905f908290602490829084905af18015610fac57610f95575b5060408051634418b22b60e11b815282516001600160a01b0390811660048301526020840151811660248301529183015162ffffff1660448201526060830151600290810b606483015260808085015190910b608483015260a084015160a483015260c084015160c483015260e084015160e483015261010084015161010483015261012084015190921661012482015261014090920151610144830152909182906101649082908a905af18015610f8a57610f37575b50608094507fdc802b6952271bfb3c259a39a1e1723d329ac45be75070cdac79c8c5ba59c4336060604051868152856020820152836040820152a16001600555604051938452602084015260408301526060820152f35b6080813d608011610f82575b81610f5060809383611fdf565b81010312610f7e57602001516fffffffffffffffffffffffffffffffff811603610f7a5784610ee0565b8480fd5b8580fd5b3d9150610f43565b6040513d88823e3d90fd5b610fa29197505f90611fdf565b5f95610140610e29565b6040513d5f823e3d90fd5b5f80fd5b634e487b7160e01b5f52601160045260245ffd5b909150610fe582610fe08184612251565b612244565b60011c90610db6565b670de0b6b3a76400008702871590888104670de0b6b3a764000014821715610fbb578761101a91612251565b926063880288810460631489151715610fbb5760638a02928a84046063141715610fbb57610258420192834211610fbb57606480926040519661105c88611fc2565b87523060208801526127106040880152620d89b3196060880152620d89b460808801528b60a08801528c60c08801520460e08601520461010084015261012083015261014082015290610d85565b6110cb9060203d6020116110d0575b6110c38183611fdf565b8101906123f5565b610c68565b503d6110b9565b6110ef9060203d6020116110d0576110c38183611fdf565b610c2f565b601c5460405163095ea7b360e01b81526001600160a01b039091166004820152602481018390526020816044815f305af18015610fac576111a0575b50601c5460405163140e25ad60e31b81526004810184905290602090829060249082905f906001600160a01b03165af18015610fac57611171575b50610bd3565b6111929060203d602011611199575b61118a8183611fdf565b81019061240d565b505f61116b565b503d611180565b6111b89060203d6020116110d0576110c38183611fdf565b611130565b50601c546001600160a01b03161515610bce565b6111db8630612884565b610b8e565b50610b16610b878680610b37565b90506020813d60201161121a575b8161120960209383611fdf565b81010312610fb75751610ba6610aea565b3d91506111fc565b630636a15760e11b5f5260045ffd5b34610fb7575f366003190112610fb7576040515f6006548060011c9060018116801561131b575b602083108114611307578285529081156112e35750600114611285575b61086d8361085981850382611fdf565b60065f9081527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f939250905b8082106112c957509091508101602001610859611275565b9192600181602092548385880101520191019092916112b1565b60ff191660208086019190915291151560051b840190910191506108599050611275565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611258565b34610fb7575f366003190112610fb7576017546040516001600160a01b039091168152602090f35b34610fb7576040366003190112610fb75761137d611369611f45565b60243590611378823383612565565b612884565b005b34610fb7575f366003190112610fb7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610fb7575f366003190112610fb7576040515f6008548060011c90600181168015611474575b602083108114611307578285529081156112e357506001146114165761086d8361085981850382611fdf565b60085f9081527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3939250905b80821061145a57509091508101602001610859611275565b919260018160209254838588010152019101909291611442565b91607f16916113ea565b34610fb7576020366003190112610fb7576001600160a01b0361149f611f45565b165f525f602052602060405f2054604051908152f35b34610fb7575f366003190112610fb7576020601554604051908152f35b34610fb7575f366003190112610fb7576020601254604051908152f35b34610fb7575f366003190112610fb7576016546040516001600160a01b039091168152602090f35b34610fb7576101a0366003190112610fb7576040516101a0810181811067ffffffffffffffff8211176117ff5760405261154f611f45565b81526020810190602435825260408101916044358352606082019260643584526080830190608435825260a084019160a435835260c085019460c435865260e0810160e43581526101008201610104358152610120830161012435815261014084019161014435835261016085019361016435855261018435958615158703610fb7576101808101968752601a546001600160a01b03163303611222578051825160405163095ea7b360e01b81526001600160a01b03909216600483015260248201526020816044815f305af18015610fac576117e2575b50516001600160a01b03169a61163b612001565b99604051809b60208201600760fc1b905280516020819201602184015e8101602181015f905203602101601f1981018c52611676908c611fdf565b61167e6120cf565b9b60405180809e60208201600760fc1b905280516020819201602184015e8101602181015f905203602101601f19810182526116b991611fdf565b5199519d519851905191519251935194519551965197511515986040519e8f9d8e809e6370f34ab560e11b8252306004830152602482016102009052610204820161170391611f21565b9060031981830301906044015261171991611f21565b9b8d60648101601290526084015260a48d015260c48c015260e48b01526101048a01526101248901526101448801526101648701526101848601526101a48501526101c48401526101e483015203815a6020945f91f1908115610fac575f916117a0575b50601c80546001600160a01b0319166001600160a01b0392909216919091179055005b90506020813d6020116117da575b816117bb60209383611fdf565b81010312610fb757516001600160a01b0381168103610fb7578161177d565b3d91506117ae565b6117fa9060203d6020116110d0576110c38183611fdf565b611627565b634e487b7160e01b5f52604160045260245ffd5b34610fb7575f366003190112610fb75760206040515f8152f35b34610fb75761183b36611f98565b906118446122cc565b50601a546001600160a01b031633036112225760ff600f5416611a3357611869612773565b305f525f6020528060405f205410611a2457600a5491600b546010549360115491600254611895612320565b9161189e6123a7565b6118a66122cc565b98878a526118b49088612231565b6127109004956118c49087612231565b612710900495866118d491612313565b9460208a019560408b019788528087528a51906118f091612313565b87516118fb91612313565b926119068285612231565b6119108583612244565b61191991612251565b9560e001519160808401519360a0015194611933976129d6565b829591955161194191612244565b835161194c91612244565b8652606086019480865210611a155760165481516119b1936104b89390926104b092611980916001600160a01b03166127c9565b6017548351611997916001600160a01b03166127c9565b6119a48751600a54612313565b600a558751905190612313565b600b558251808211156119f55750926119dd916119d561057160e096865190612313565b5190306125fd565b6104ed600954305f525f60205260405f205490612313565b11611a065760e0926119dd916119d5565b634544991b60e01b5f5260045ffd5b630a1c173f60e41b5f5260045ffd5b63904db1ff60e01b5f5260045ffd5b63058aab2d60e21b5f5260045ffd5b34610fb7576040611a5236611f71565b9192909115611aa657906103f2611a9892611a92611a8b601054610fe0612710610bbc81611a836011549589612231565b049384612231565b9582612231565b92612313565b905b82519182526020820152f35b80611a92611ab7946103f293612231565b611ad4601054610fe0612710610bbc81611a836011549588612231565b611a9a565b34610fb7576020366003190112610fb75761137d60043533612884565b34610fb7576040366003190112610fb757610702611b12611f45565b335f52600160205260405f2060018060a01b0382165f52602052611b3d60405f206024359054612244565b9033612461565b34610fb7575f366003190112610fb757601c546040516001600160a01b039091168152602090f35b34610fb7575f366003190112610fb757602060405160128152f35b34610fb757611b9536611f98565b91611b9e6122cc565b50601a546001600160a01b031633036112225760ff600f5416611a3357611bc3612773565b600a5490600b5492601054948160115494611bdc6122cc565b96611be79083612231565b91611bf191612244565b611bfa91612251565b95611c059087612231565b612710900493611c159085612231565b61271090049384611c2591612313565b95604086019660608701958652808852611c3e91612313565b8451611c4991612313565b8086526020860192835210611a1557611cba611ccd93611cb260e097611ca5611cc295611c8260018060a01b03601654168451906127c9565b6017548551611c99916001600160a01b03166127c9565b6109928151308a6125fd565b600a558751905190612244565b905190612244565b600b54612313565b600b558251906127c9565b6109b1600954305f525f60205260405f205490612313565b34610fb7575f366003190112610fb7576040515f6007548060011c90600181168015611d96575b602083108114611307578285529081156112e35750600114611d385761086d8361085981850382611fdf565b60075f9081527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688939250905b808210611d7c57509091508101602001610859611275565b919260018160209254838588010152019101909291611d64565b91607f1691611d0c565b34610fb7575f366003190112610fb7576020600d54604051908152f35b34610fb7576060366003190112610fb757610702611dd9611f45565b611de1611f5b565b60443591611df0833383612565565b6125fd565b34610fb7575f366003190112610fb7576020610a4861226f565b34610fb7575f366003190112610fb7576020600254604051908152f35b34610fb7575f366003190112610fb7576020600a54604051908152f35b34610fb7576040611e5936611f71565b90929015611e8f57906103f2611a9892611e89611a8b601054610fe0612710610bbc81611a836011549589612231565b92612244565b80611e89611ab7946103f293612231565b34610fb7576040366003190112610fb757610702611ebc611f45565b6024359033612461565b34610fb7575f366003190112610fb7576020601154604051908152f35b34610fb7575f366003190112610fb75761086d610859612001565b34610fb7575f366003190112610fb7576018546001600160a01b03168152602090f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b0382168203610fb757565b602435906001600160a01b0382168203610fb757565b6080906003190112610fb7576004359060243590604435906064358015158103610fb75790565b6060906003190112610fb7576004356001600160a01b0381168103610fb757906024359060443590565b610160810190811067ffffffffffffffff8211176117ff57604052565b90601f8019910116810190811067ffffffffffffffff8211176117ff57604052565b604051905f6003548060011c91600182169182156120c5575b6020841083146113075783865285929081156120a65750600114612047575b61204592500383611fdf565b565b5060035f90815290917fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b81831061208a57505090602061204592820101612039565b6020919350806001915483858901015201910190918492612072565b6020925061204594915060ff191682840152151560051b820101612039565b92607f169261201a565b604051905f6004548060011c9160018216918215612171575b6020841083146113075783865285929081156120a657506001146121125761204592500383611fdf565b5060045f90815290917f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b81831061215557505090602061204592820101612039565b602091935080600191548385890101520191019091849261213d565b92607f16926120e8565b90604051915f8154908160011c9260018316928315612227575b60208510841461130757848752869390811561220557506001146121c1575b5061204592500383611fdf565b90505f9291925260205f20905f915b8183106121e9575050906020612045928201015f6121b4565b60209193508060019154838589010152019101909184926121d0565b90506020925061204594915060ff191682840152151560051b8201015f6121b4565b93607f1693612195565b81810292918115918404141715610fbb57565b91908201809211610fbb57565b811561225b570490565b634e487b7160e01b5f52601260045260245ffd5b600954305f525f60205261228a60405f205460145492612313565b906127108202918083046127101490151715610fbb576122a991612251565b60648110156122b85750606490565b6127108111156122c9575061271090565b90565b6040519060e0820182811067ffffffffffffffff8211176117ff576040525f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b91908203918211610fbb57565b6040519061232d82611fc2565b81612338600661217b565b8152612344600761217b565b6020820152612353600861217b565b60408201526009546060820152600a546080820152600b5460a0820152600c5460c0820152600d5460e0820152600e5461010082015261014060ff600f54818116151561012085015260081c161515910152565b6040519060c0820182811067ffffffffffffffff8211176117ff57604052816010548152601154602082015260125460408201526013546060820152601454608082015260a0601554910152565b90816020910312610fb757518015158103610fb75790565b90816020910312610fb7575190565b600b54600a5460025490670de0b6b3a7640000830292808404670de0b6b3a76400001490151715610fbb57610b2161245d92670de0b6b3a764000094612231565b0490565b6001600160a01b0316908115612514576001600160a01b03169182156124c45760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526001825260405f20855f5282528060405f2055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0382165f52600160205260405f2060018060a01b0382165f5260205260405f2054925f19840361259d575b50505050565b8084106125b8576125af930391612461565b5f808080612597565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b6001600160a01b0316908115612720576001600160a01b03169182156126cf57815f525f60205260405f205481811061267b57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b600260055414612784576002600555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b60405163a9059cbb60e01b81526001600160a01b03821660048201526024810183905290602082806044810103815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610fac577f11f39921712c18cb58603256dc25be86132752d2840096d50ff38efd154159d692602092612869575b506040519384526001600160a01b031692a2565b61287f90833d85116110d0576110c38183611fdf565b612855565b6001600160a01b0316801561293b57805f525f60205260405f2054918083106128eb576020817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef925f958587528684520360408620558060025403600255604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b61299261241c565b6015541061299c57565b600160ff19600f541617600f557f63e9bb35ae90a43113bc6f999f1c6395e88ee5f59560b46bd45815fe8560efae602060405160018152a1565b9590979694929391946129e98986612244565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610fbb57612a21612a2b91670de0b6b3a764000093612231565b6103f28989612313565b0411612a3a575b505050509190565b611a929650612a649450612a556103f29392612a5b92612313565b84612313565b95869182612231565b915f808080612a3256fea2646970667358221220ccbcc4e357050faa4ac46f3503d95dcf53c7a9306ff935910ae517be9de7c13564736f6c634300081c00339016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220c47493c32c9d585267dc4c333a8e026742a37effc25c1824e74177a450a2b1b364736f6c634300081c0033