3.6k txs
29.8k calls
constructor
constructor(address _initialCTO, address _vrngContract, address _uniswapV2Router, address _weth, uint256 _maxContribution, uint256 _phaseLength, string _initialImageURI)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256 result)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256 result)
burnAddress
viewfunction burnAddress() view returns (address)
creatorFee
viewfunction creatorFee() view returns (uint256)
creatorFees
viewfunction creatorFees() view returns (uint256)
ctoAttemptCount
viewfunction ctoAttemptCount() view returns (uint256)
ctoAttempts
viewfunction ctoAttempts(uint256) view returns (address wallet, uint256 tokens, string newName, string newSymbol, string newImageURI, string newDescription)
ctoCount
viewfunction ctoCount() view returns (uint256)
ctoMinimumStake
viewfunction ctoMinimumStake() view returns (uint256)
ctoThreshold
viewfunction ctoThreshold() view returns (uint256)
currentCTO
viewfunction currentCTO() view returns (address)
currentPhase
viewfunction currentPhase() view returns (uint8)
decimals
viewfunction decimals() view returns (uint8)
description
viewfunction description() view returns (string)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32 result)
getTotalContribution
viewfunction getTotalContribution(address wallet) view returns (uint256)
image
viewfunction image() view returns (string)
MAX_SUPPLY
viewfunction MAX_SUPPLY() view returns (uint256)
maxContribution
viewfunction maxContribution() view returns (uint256)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address owner) view returns (uint256 result)
owner
viewfunction owner() view returns (address result)
ownershipHandoverExpiresAt
viewfunction ownershipHandoverExpiresAt(address pendingOwner) view returns (uint256 result)
phase1Contributions
viewfunction phase1Contributions(address) view returns (uint256)
phase1MerkleRoot
viewfunction phase1MerkleRoot() view returns (bytes32)
phase1Start
viewfunction phase1Start() view returns (uint256)
phase2Contributions
viewfunction phase2Contributions(address) view returns (uint256)
phase2MerkleRoot
viewfunction phase2MerkleRoot() view returns (bytes32)
phase2Start
viewfunction phase2Start() view returns (uint256)
phaseLength
viewfunction phaseLength() view returns (uint256)
symbol
viewfunction symbol() view returns (string)
TOKENS_FOR_LP
viewfunction TOKENS_FOR_LP() view returns (uint256)
TOKENS_FOR_SALE
viewfunction TOKENS_FOR_SALE() view returns (uint256)
TOKENS_FOR_TEAM
viewfunction TOKENS_FOR_TEAM() view returns (uint256)
totalEthSentForSale
viewfunction totalEthSentForSale() view returns (uint256)
totalPhase1Eth
viewfunction totalPhase1Eth() view returns (uint256)
totalPhase2Eth
viewfunction totalPhase2Eth() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256 result)
uniswapV2Pair
viewfunction uniswapV2Pair() view returns (address)
vrngContract
viewfunction vrngContract() view returns (address)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
cancelOwnershipHandover
payablefunction cancelOwnershipHandover() payable
claimFees
nonpayablefunction claimFees()
claimTokens
nonpayablefunction claimTokens()
completeOwnershipHandover
payablefunction completeOwnershipHandover(address pendingOwner) payable
cto
nonpayablefunction cto(uint256 tokens, string newName, string newSymbol, string newImageURI, string newDescription)
joinPhase1
payablefunction joinPhase1(bytes32[] merkleProof) payable
joinPhase2
payablefunction joinPhase2(bytes32[] merkleProof) payable
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
randomNumberCallback
nonpayablefunction randomNumberCallback(uint256 requestId, uint256 randomNumber)
renounceOwnership
payablefunction renounceOwnership() payable
requestOwnershipHandover
payablefunction requestOwnershipHandover() payable
setCreatorFee
nonpayablefunction setCreatorFee(uint256 _creatorFee)
setExclusionForWallet
nonpayablefunction setExclusionForWallet(address walletAddress, bool excluded)
startGame
nonpayablefunction startGame()
startPhase1
nonpayablefunction startPhase1(bytes32 _merkleRoot)
startPhase2
nonpayablefunction startPhase2(bytes32 _merkleRoot)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferEther
payablefunction transferEther(address _to, uint256 _amount) payable
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
payablefunction transferOwnership(address newOwner) payable
transferToken
payablefunction transferToken(address _token, address _to, uint256 _amount) payable
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 amount)
CTOAttemptMade
event CTOAttemptMade(uint256 indexed requestId, uint256 indexed attemptNumber, address indexed wallet, uint256 tokens, string name, string symbol, string imageURI, string description)
CTOFailure
event CTOFailure(uint256 indexed requestId)
CTOSuccess
event CTOSuccess(uint256 indexed requestId)
FeesClaimed
event FeesClaimed(address indexed owner, address indexed currentCTO, uint256 ownerAmount, uint256 ctoAmount, uint256 totalAmount)
NewCTO
event NewCTO(address indexed cto, uint256 indexed ctoNumber, string name, string ticker, string imageURI, string description)
OwnershipHandoverCanceled
event OwnershipHandoverCanceled(address indexed pendingOwner)
OwnershipHandoverRequested
event OwnershipHandoverRequested(address indexed pendingOwner)
OwnershipTransferred
event OwnershipTransferred(address indexed oldOwner, address indexed newOwner)
PairCreated
event PairCreated(address pair)
RandomNumberReceived
event RandomNumberReceived(uint256 indexed requestId, uint256 randomNumber, address indexed wallet, uint256 tokens)
TokensBurned
event TokensBurned(address indexed wallet, uint256 tokensBurned)
Transfer
event Transfer(address indexed from, address indexed to, uint256 amount)
errors
AllowanceOverflow
error AllowanceOverflow()
AllowanceUnderflow
error AllowanceUnderflow()
AlreadyInitialized
error AlreadyInitialized()
BelowMinimumStake
error BelowMinimumStake()
CannotCTOWith0Tokens
error CannotCTOWith0Tokens()
ExceedsMaximumStake
error ExceedsMaximumStake()
ExceedsPhaseMaxContribution
error ExceedsPhaseMaxContribution()
InsufficientAllowance
error InsufficientAllowance()
InsufficientBalance
error InsufficientBalance()
InsufficientTokenBalance
error InsufficientTokenBalance()
InvalidDescription
error InvalidDescription()
InvalidEthAmountForSale
error InvalidEthAmountForSale()
InvalidMerkleProof
error InvalidMerkleProof()
InvalidPermit
error InvalidPermit()
InvalidRequestId
error InvalidRequestId()
LiquidityAlreadyAdded
error LiquidityAlreadyAdded()
NewOwnerIsZeroAddress
error NewOwnerIsZeroAddress()
NoETHSent
error NoETHSent()
NoEthToClaim
error NoEthToClaim()
NoHandoverRequest
error NoHandoverRequest()
NoTokensToClaim
error NoTokensToClaim()
NotProofOfPlay
error NotProofOfPlay()
Permit2AllowanceIsFixedAtInfinity
error Permit2AllowanceIsFixedAtInfinity()
PermitExpired
error PermitExpired()
Phase1Ended
error Phase1Ended()
Phase1NotOver
error Phase1NotOver()
Phase1NotStarted
error Phase1NotStarted()
Phase2CapReached
error Phase2CapReached()
Phase2Ended
error Phase2Ended()
Phase2NotOver
error Phase2NotOver()
Phase2NotStarted
error Phase2NotStarted()
Reentrancy
error Reentrancy()
SaleAlreadyStarted
error SaleAlreadyStarted()
SaleCapHit
error SaleCapHit()
SaleEnded
error SaleEnded()
SaleNotEnded
error SaleNotEnded()
SaleNotOver
error SaleNotOver()
SaleNotStarted
error SaleNotStarted()
TotalSupplyOverflow
error TotalSupplyOverflow()
Unauthorized
error Unauthorized()
creation bytecode
0x61012080604052346106e557613d54803803809161001d8285610885565b833981019060e0818303126106e557610035816108a8565b610041602083016108a8565b61004d604084016108a8565b9261005a606082016108a8565b9360808201519060a08301519260c08101519060018060401b0382116106e5570187601f820112156106e5578051906001600160401b03821161081b57604051986100af601f8401601f19166020018b610885565b828a52602083830101116106e557815f926020809301838c015e890101526a084595161401484a000000600c55610190600d5560018060a01b0316936100f66003546108bc565b601f811161085a575b507f436f6d6d756e6974792054616b656f7665720000000000000000000000000024600355600454610130906108bc565b601f811161082f575b5060066243544f60e81b01600455600580546001600160a01b0319166001600160a01b03929092169190911790556101005260e05283516001600160401b03811161081b576101896006546108bc565b601f81116107d5575b506020601f821160011461076a5790806020949392600496975f9261075f575b50508160011b915f199060031b1c1916176006555b6101d26007546108bc565b601f811161073f575b507f6f6e6520746f6b656e2c20616e79207469636b65722e0000000000000000002c60075560808290526001600160a01b031660c05260405163c45a015560e01b815292839182905afa9081156106f1575f916106fc575b506040516364e329cb60e11b81523060048201526001600160a01b03928316602482015291602091839160449183915f91165af19081156106f1575f916106a2575b5060a08190526040516001600160a01b0390911681525f516020613d345f395f51905f5290602090a1600554600a546040516080815260035491926001600160a01b0316915f906102c5816108bc565b908160808501526001811690815f14610681575060011461063d575b5081810360208301526004545f916102f8826108bc565b808252916001811690811561061e57506001146105d7575b505081810360408301526006545f91610328826108bc565b80825291600181169081156105b85750600114610571575b505081810360608301526007545f91610358826108bc565b808252916001811690811561054257506001146104dc575b505090805f516020613cd45f395f51905f52920390a333638b78c6d81955335f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36805345cdf77eb68f44c546b033b2e3c9fd0803ce800000081019081106104cf576805345cdf77eb68f44c556387a211a2600c52305f526020600c206b033b2e3c9fd0803ce800000081540190556b033b2e3c9fd0803ce8000000602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a36040516133a9908161090b823960805181818161068d0152612f6b015260a0518181816123a801528181612e160152612edb015260c051818181610d420152818161161f015261171e015260e0518181816105b30152818161080401528181610898015281816114f90152818161218d01526122d501526101005181818161157f01528181611ed401526122220152f35b63e5cfe9575f526004601cfd5b60075f9081529250907fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6885b81841061052857505001602001815f516020613cd45f395f51905f52610370565b600181602092959395548385870101520191019290610507565b8594506020929150925f516020613cd45f395f51905f52959360ff191683830152151560051b01019192610370565b60065f9081529192505f516020613cf45f395f51905f525b83831061059e57506020925001015f80610340565b600181602092949394548385870101520191019190610589565b90506020935060ff929192191683830152151560051b01015f80610340565b60045f9081529192505f516020613d145f395f51905f525b83831061060457506020925001015f80610310565b6001816020929493945483858701015201910191906105ef565b90506020935060ff929192191683830152151560051b01015f80610310565b60035f9081529091505f516020613cb45f395f51905f525b82821061066a5750820160a00190505f6102e1565b805482850160a00152602090910190600101610655565b60209350608092915060ff191660a0850152151560051b830101015f6102e1565b90506020813d6020116106e9575b816106bd60209383610885565b810103126106e55760206106de5f516020613d345f395f51905f52926108a8565b9150610275565b5f80fd5b3d91506106b0565b6040513d5f823e3d90fd5b90506020813d602011610737575b8161071760209383610885565b810103126106e5575f91604461072e6020936108a8565b92505091610233565b3d915061070a565b6107599060075f52601f855f20910160051c8101906108f4565b5f6101db565b015190505f806101b2565b601f1982169560065f52815f20965f5b8181106107bd575096600192849260209796956004999a106107a5575b505050811b016006556101c7565b01515f1960f88460031b161c191690555f8080610797565b8383015189556001909801976020938401930161077a565b60065f5261080b905f516020613cf45f395f51905f52601f840160051c81019160208510610811575b601f0160051c01906108f4565b5f610192565b90915081906107fe565b634e487b7160e01b5f52604160045260245ffd5b60045f5261085490601f0160051c5f516020613d145f395f51905f52908101906108f4565b5f610139565b60035f5261087f90601f0160051c5f516020613cb45f395f51905f52908101906108f4565b5f6100ff565b601f909101601f19168101906001600160401b0382119082101761081b57604052565b51906001600160a01b03821682036106e557565b90600182811c921680156108ea575b60208310146108d657565b634e487b7160e01b5f52602260045260245ffd5b91607f16916108cb565b8181106108ff575050565b5f81556001016108f456fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c908162a3ffae1461288e57508063055ad42e1461286557806305b1137b1461283d57806306fdde0314612822578063095ea7b3146127a657806309ae76ee1461277e5780630aa322231461272b5780630dd16fd51461270a57806318160ddd146126e557806323b872dd146125f357806325692962146125aa5780632b8f1a3d14612565578063313ce5671461254a57806332cb6b0c146125245780633644e5151461249c578063432baad31461247f57806348c54b9d146123d757806349bd5a5e146123935780635312eab01461237657806353d260771461235957806354d1f13d146123155780635b440435146122f857806361012e15146122be5780636694ba61146122a15780636ae8f938146121485780636ba20ab514610bae5780636dded70c1461212b57806370a08231146120f957806370d5ae05146120dd578063715018a6146120945780637284e41614612002578063740fd5d514611f4d5780637ecebe0014611f1b5780638ce5e8c514611ef75780638d3d657614611ebd5780638da5cb5b14611e915780638f561acc1461170557806395d89b411461164e5780639f405eb01461160a578063a36f356c146114b4578063a4ec48201461148f578063a705b96914611472578063a9059cbb146113d6578063af2469e114611382578063b0f61da91461134a578063c4d4f96b14610bb3578063c8612b2f14610bae578063cacbb11514610b91578063d294f09314610b2a578063d505accf146108ec578063d5973fdd14610861578063d65ab5f214610575578063dd62ed3e14610541578063ddd5fe7214610524578063e2f9cf9714610507578063e88958dc146104ea578063f04e283e1461049d578063f2fde38b14610462578063f3ccaac014610383578063f5537ede14610324578063fee81cf4146102f25763ff57d873146102d1575f61000f565b346102ee575f3660031901126102ee576020601054604051908152f35b5f80fd5b346102ee5760203660031901126102ee5761030b6128c2565b63389a75e1600c525f52602080600c2054604051908152f35b61032d36612912565b90610336612d3b565b60145260345263a9059cbb60601b5f5260205f6044601082855af1908160015f51141615610365575b5f603452005b3b153d17101561037657808061035f565b6390b8ec185f526004601cfd5b346102ee575f3660031901126102ee5760405166697066733a2f2f60c81b60208201525f906006546103b4816129c4565b906001811690811561043e57506001146103f8575b506103e0816103f49303601f198101835282612a17565b6040519182916020835260208301906128ee565b0390f35b915060065f525f5160206133145f395f51905f525f905b838210610427575050908101602701906103e06103c9565b60018160209254602785870101520191019061040f565b60ff1916602780850191909152821515909202830190910192506103e090506103c9565b60203660031901126102ee576104766128c2565b61047e612d3b565b8060601b156104905761001a906131ec565b637448fbae5f526004601cfd5b60203660031901126102ee576104b16128c2565b6104b9612d3b565b63389a75e1600c52805f526020600c2090815442116104dd575f61001a92556131ec565b636f5e88185f526004601cfd5b346102ee575f3660031901126102ee576020600d54604051908152f35b346102ee575f3660031901126102ee576020600a54604051908152f35b346102ee575f3660031901126102ee576020600f54604051908152f35b346102ee5760403660031901126102ee57602061056d61055f6128c2565b6105676128d8565b90612cfe565b604051908152f35b346102ee575f3660031901126102ee5761058d612d3b565b60ff600e5416600481101561084d57801561083e57600181036107f557506105d8600f547f000000000000000000000000000000000000000000000000000000000000000090612bb4565b4211156107e6575b60ff5f54166107d757600360ff19600e541617600e5561060560155460165490612bb4565b601755638b78c6d819543060601b906387a211a28217600c526020600c208054806a52b7d2dcc80cd2e4000000116107ca576a52b7d2dcc80cd2e3ffffff190190555f526020600c206a52b7d2dcc80cd2e400000081540190556a52b7d2dcc80cd2e4000000602052600c5160601c305f5160206132f45f395f51905f52602080a3601754907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166e22d473030f116ddee9f6b43ac78ba381146107bd57637f5e9f206060928260205217600c526b01743b34e18439b5020000006034600c20556b01743b34e18439b5020000005f52602c51821c305f5160206133345f395f51905f5260205fa3638b78c6d8195460405163f305d71960e01b81523060048201526b01743b34e18439b50200000060248201525f6044820181905260648201526001600160a01b0390911660848201524260a482015292839160c49183915af180156107b257610787575b5f805460ff19166001179055005b606090813d83116107ab575b61079d8183612a17565b810103126102ee5780610779565b503d610793565b6040513d5f823e3d90fd5b633f68539a5f526004601cfd5b63f4d678b85f526004601cfd5b630fd02b6d60e41b5f5260045ffd5b63f35ea39b60e01b5f5260045ffd5b6002036105e0576108296010547f000000000000000000000000000000000000000000000000000000000000000090612bb4565b42116105e05763888aa7ef60e01b5f5260045ffd5b6316851a3760e11b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b346102ee5760203660031901126102ee5761087a612d3b565b60ff600e5416600481101561084d576001036108dd576108bd600f547f000000000000000000000000000000000000000000000000000000000000000090612bb4565b4211156107e657600e805460ff1916600217905542601055600435601255005b634b3ee03560e11b5f5260045ffd5b346102ee5760e03660031901126102ee576109056128c2565b61090d6128d8565b604435916064356084359260ff841684036102ee576001600160a01b0316936e22d473030f116ddee9f6b43ac78ba3851881191517156107bd57604051600354905f81610959846129c4565b9182825260208201946001811690815f14610b0e5750600114610ac2575b61098392500382612a17565b51902090824211610ab5576040519360018060a01b03169465383775081901600e52855f5260c06020600c20958654957f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8252602082019586528660408301967fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc688528b6060850198468a528c608087019330855260a08820602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9885252528688525260a082015220604e526042602c205f5260ff1660205260a43560405260c43560605260208060805f60015afa93853d5103610aa8575f5160206133345f395f51905f5294602094019055856303faf4f960a51b176040526034602c2055a3005b63ddafbaef5f526004601cfd5b631a15a3cc5f526004601cfd5b5060035f90815290915f5160206132b45f395f51905f525b818310610af257505090602061098392820101610977565b6020919350806001915483858801015201910190918392610ada565b60ff191686525061098392151560051b82016020019050610977565b346102ee575f3660031901126102ee573068929eee149b4bd212685414610b84573068929eee149b4bd2126855600b5415610b7557610b67613229565b3868929eee149b4bd2126855005b6326164b8960e21b5f5260045ffd5b63ab143c065f526004601cfd5b346102ee575f3660031901126102ee576020600c54604051908152f35b61299e565b346102ee5760a03660031901126102ee576004356024356001600160401b0381116102ee57610be6903690600401612b7a565b906044356001600160401b0381116102ee57610c06903690600401612b7a565b90926064356001600160401b0381116102ee57610c27903690600401612b7a565b906084356001600160401b0381116102ee57610c47903690600401612b7a565b9290963068929eee149b4bd212685414610b84573068929eee149b4bd212685569021e19e0c9bab2400000891061133b57600c54891161132c576387a211a2600c52335f52886020600c20541061131d57610100841161130e57606489046387a211a23360601b17600c526020600c2080548083116107ca57829003905561dead5f526020600c2081815401905580602052600c5160601c335f5160206132f45f395f51905f52602080a36040519081527ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb660203392a2604051956371c8a23960e11b87525f60048801526020876024815f60018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19687156107b2575f976112da575b50604051610d7f816129fc565b33815260208101908b82528a610d96368a8d612c99565b60408301908152610da8368688612c99565b9060608401918252610dce610dbe368a8c612c99565b93608086019485528b3691612c99565b60a085019081525f8d8152600860205260409020945185546001600160a01b0319166001600160a01b03919091161785559451600185015551805160028501916001600160401b03821161110957610e2683546129c4565b601f81116112aa575b50602090601f831160011461124757610e5f92915f918361102a575b50508160011b915f199060031b1c19161790565b90555b51805160038401916001600160401b03821161110957610e8283546129c4565b601f8111611217575b50602090601f83116001146111b457610eba92915f918361102a5750508160011b915f199060031b1c19161790565b90555b51805160048301916001600160401b03821161110957610edd83546129c4565b601f8111611184575b50602090601f831160011461111d579180610f1a9260059695945f9261102a5750508160011b915f199060031b1c19161790565b90555b0190518051906001600160401b03821161110957610f3b83546129c4565b601f81116110ce575b50602090601f83116001146110355794610fe794610fcb9e9894610fa985610ff79a96610fd9967f5ba34217ad0efe93080c91387d1c76919557b096ed577da5c7955bdba81fff3d9f9e9b5f9261102a5750508160011b915f199060031b1c19161790565b90555b6009549e8f9d6040519b8c9b8c5260a060208d015260a08c0191612cde565b9189830360408b0152612cde565b918683036060880152612cde565b9083820360808501523398612cde565b0390a460018101809111611016576009553868929eee149b4bd2126855005b634e487b7160e01b5f52601160045260245ffd5b015190505f80610e4b565b90601f19831691845f52815f20925f5b8181106110b6575094610fcb9f999585610fd9957f5ba34217ad0efe93080c91387d1c76919557b096ed577da5c7955bdba81fff3d9e9d9a95610fe79a95610ff79d996001951061109e575b505050811b019055610fac565b01515f1960f88460031b161c191690555f8080611091565b92936020600181928786015181550195019301611045565b6110f990845f5260205f20601f850160051c810191602086106110ff575b601f0160051c0190612c35565b8d610f44565b90915081906110ec565b634e487b7160e01b5f52604160045260245ffd5b90601f19831691845f52815f20925f5b81811061116c575091600193918560059897969410611154575b505050811b019055610f1d565b01515f1960f88460031b161c191690555f8080611147565b9293602060018192878601518155019501930161112d565b6111ae90845f5260205f20601f850160051c810191602086106110ff57601f0160051c0190612c35565b8f610ee6565b90601f19831691845f52815f20925f5b8181106111ff57509084600195949392106111e7575b505050811b019055610ebd565b01515f1960f88460031b161c191690555f80806111da565b929360206001819287860151815501950193016111c4565b61124190845f5260205f20601f850160051c810191602086106110ff57601f0160051c0190612c35565b5f610e8b565b90601f19831691845f52815f20925f5b818110611292575090846001959493921061127a575b505050811b019055610e62565b01515f1960f88460031b161c191690555f808061126d565b92936020600181928786015181550195019301611257565b6112d490845f5260205f20601f850160051c810191602086106110ff57601f0160051c0190612c35565b5f610e2f565b9096506020813d602011611306575b816112f660209383612a17565b810103126102ee5751958a610d72565b3d91506112e9565b6340132f1f60e01b5f5260045ffd5b637222ae5760e11b5f5260045ffd5b63b7912ad760e01b5f5260045ffd5b638ecf3d0360e01b5f5260045ffd5b346102ee5760203660031901126102ee576001600160a01b0361136b6128c2565b165f526014602052602060405f2054604051908152f35b346102ee5760203660031901126102ee5761139b612d3b565b60ff600e5416600481101561084d576113c757600e805460ff1916600117905542600f55600435601155005b63291659fd60e11b5f5260045ffd5b346102ee5760403660031901126102ee576113ef6128c2565b60243590611408611401838333612d9c565b8093612ba7565b9180611462575b506387a211a2600c52335f526020600c2080548084116107ca5783900390555f526020600c20818154019055602052600c5160601c335f5160206132f45f395f51905f52602080a3602060405160018152f35b61146c9033612e9f565b8261140f565b346102ee575f3660031901126102ee576020601554604051908152f35b346102ee575f3660031901126102ee5760206040516a52b7d2dcc80cd2e40000008152f35b6114bd3661294c565b903068929eee149b4bd212685414610b84573068929eee149b4bd212685560ff600e5416600481101561084d576001036108dd5761151e600f547f000000000000000000000000000000000000000000000000000000000000000090612bb4565b42116115fb5734156115ec576115629161155d60405160208101903360601b82526014815261154e603482612a17565b51902092601154923691612bdf565b6131a1565b156115dd57335f52601360205261157d3460405f2054612bb4565b7f000000000000000000000000000000000000000000000000000000000000000081116115ce57335f52601360205260405f20556115bd34601554612bb4565b6015553868929eee149b4bd2126855005b630942995760e31b5f5260045ffd5b63582f497d60e11b5f5260045ffd5b630b7cc7c360e11b5f5260045ffd5b6308008f9960e41b5f5260045ffd5b346102ee575f3660031901126102ee576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ee575f3660031901126102ee576040515f60045461166e816129c4565b80845290600181169081156116e15750600114611696575b6103f4836103e081850382612a17565b60045f9081525f5160206133545f395f51905f52939250905b8082106116c7575090915081016020016103e0611686565b9192600181602092548385880101520191019092916116af565b60ff191660208086019190915291151560051b840190910191506103e09050611686565b346102ee5760403660031901126102ee576004356024357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303611e8257815f52600860205260405f209060405190611766826129fc565b82546001600160a01b031682526001830154602083019081529261178c60028201612adc565b92604081019384526117a060038301612adc565b92606082019384526117c760056117b960048601612adc565b946080850195865201612adc565b60a0830190815282519096906001600160a01b031615611e7357604051602081019089825283604082015260408152611801606082612a17565b51902091887fc887ed8fd89704505b15f6d592be9d0b00f5ddcea13f28f96dd247babadedeea604060018060a01b0387511693855182519182526020820152a35161138881029080820461138814901517156110165761186761271091600c5490612bc1565b91061015611e4457611877613229565b60018060a01b038151166bffffffffffffffffffffffff60a01b600554161760055583518051906001600160401b038211611109576118b76003546129c4565b601f8111611de6575b50602090601f8311600114611d76576118ef92915f9183611b015750508160011b915f199060031b1c19161790565b6003555b82518051906001600160401b038211611109576119116004546129c4565b601f8111611d18575b50602090601f8311600114611ca85761194992915f9183611b015750508160011b915f199060031b1c19161790565b6004555b81518051906001600160401b0382116111095761196b6006546129c4565b601f8111611c4a575b50602090601f8311600114611bda576119a392915f9183611b015750508160011b915f199060031b1c19161790565b6006555b84518051906001600160401b038211611109576119c56007546129c4565b601f8111611b7c575b50602090601f8311600114611b0c576119fd92915f9183611b015750508160011b915f199060031b1c19161790565b6007555b600a549460018601809611611016577f4e6ad9a50dd2554bdf63d1f959fd296465251565faf4f28930c6aa84f14c7cb593611aac611aba92611a9e611a90968a600a556040519788978d7f19f64849304a3d1fc254136d50dd11f7717ec19103e8fa657b452c420877d2f85f80a260018060a01b039051169a51955191519351956080895260808901906128ee565b9087820360208901526128ee565b9085820360408701526128ee565b9083820360608501526128ee565b0390a35b5f52600860205261001a600560405f205f81555f6001820155611ae360028201612c4b565b611aef60038201612c4b565b611afb60048201612c4b565b01612c4b565b015190508980610e4b565b90601f1983169160075f525f5160206132d45f395f51905f52925f5b818110611b645750908460019594939210611b4c575b505050811b01600755611a01565b01515f1960f88460031b161c19169055888080611b3e565b92936020600181928786015181550195019301611b28565b611bbf9060075f52601f840160051c5f5160206132d45f395f51905f52019060208510611bc5575b601f0160051c5f5160206132d45f395f51905f520190612c35565b886119ce565b5f5160206132d45f395f51905f529150611ba4565b90601f1983169160065f525f5160206133145f395f51905f52925f5b818110611c325750908460019594939210611c1a575b505050811b016006556119a7565b01515f1960f88460031b161c19169055888080611c0c565b92936020600181928786015181550195019301611bf6565b611c8d9060065f52601f840160051c5f5160206133145f395f51905f52019060208510611c93575b601f0160051c5f5160206133145f395f51905f520190612c35565b88611974565b5f5160206133145f395f51905f529150611c72565b90601f1983169160045f525f5160206133545f395f51905f52925f5b818110611d005750908460019594939210611ce8575b505050811b0160045561194d565b01515f1960f88460031b161c19169055888080611cda565b92936020600181928786015181550195019301611cc4565b611d5b9060045f52601f840160051c5f5160206133545f395f51905f52019060208510611d61575b601f0160051c5f5160206133545f395f51905f520190612c35565b8861191a565b5f5160206133545f395f51905f529150611d40565b90601f1983169160035f525f5160206132b45f395f51905f52925f5b818110611dce5750908460019594939210611db6575b505050811b016003556118f3565b01515f1960f88460031b161c19169055888080611da8565b92936020600181928786015181550195019301611d92565b611e299060035f52601f840160051c5f5160206132b45f395f51905f52019060208510611e2f575b601f0160051c5f5160206132b45f395f51905f520190612c35565b886118c0565b5f5160206132b45f395f51905f529150611e0e565b5050505050807fdc0f855fc447488812ae2deddf57f6747bce8536a78b232f3ae5864d9d90c7805f80a2611abe565b6302e8145360e61b5f5260045ffd5b63adcfa40360e01b5f5260045ffd5b346102ee575f3660031901126102ee57638b78c6d819546040516001600160a01b039091168152602090f35b346102ee575f3660031901126102ee5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102ee575f3660031901126102ee57602060405169021e19e0c9bab24000008152f35b346102ee5760203660031901126102ee57611f346128c2565b6338377508600c525f52602080600c2054604051908152f35b346102ee5760203660031901126102ee576004355f52600860205260405f2060018060a01b038154166103f4600183015492611ff4611f8e60028301612adc565b91611fe6611f9e60038301612adc565b611fd8611fb96005611fb260048701612adc565b9501612adc565b95604051998a998a5260208a015260c060408a015260c08901906128ee565b9087820360608901526128ee565b9085820360808701526128ee565b9083820360a08501526128ee565b346102ee575f3660031901126102ee576040515f600754612022816129c4565b80845290600181169081156116e15750600114612049576103f4836103e081850382612a17565b60075f9081525f5160206132d45f395f51905f52939250905b80821061207a575090915081016020016103e0611686565b919260018160209254838588010152019101909291612062565b5f3660031901126102ee576120a7612d3b565b5f638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35f638b78c6d81955005b346102ee575f3660031901126102ee57602060405161dead8152f35b346102ee5760203660031901126102ee576121126128c2565b6387a211a2600c525f52602080600c2054604051908152f35b346102ee575f3660031901126102ee576020601654604051908152f35b6121513661294c565b903068929eee149b4bd212685414610b84573068929eee149b4bd212685560ff600e5416600481101561084d57600203612292576121b26010547f000000000000000000000000000000000000000000000000000000000000000090612bb4565b42116122835734156115ec576121ca34601654612bb4565b60155410612274576122059161155d60405160208101903360601b8252601481526121f6603482612a17565b51902092601254923691612bdf565b156115dd57335f5260146020526122203460405f2054612bb4565b7f000000000000000000000000000000000000000000000000000000000000000060011c81116115ce57335f52601460205260405f205561226334601654612bb4565b6016553868929eee149b4bd2126855005b63459d183560e01b5f5260045ffd5b630f92a36760e01b5f5260045ffd5b6330c338c560e21b5f5260045ffd5b346102ee575f3660031901126102ee576020600b54604051908152f35b346102ee575f3660031901126102ee5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102ee575f3660031901126102ee576020601254604051908152f35b5f3660031901126102ee5763389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2005b346102ee575f3660031901126102ee576020601754604051908152f35b346102ee575f3660031901126102ee576020600954604051908152f35b346102ee575f3660031901126102ee576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102ee575f3660031901126102ee5760ff5f54161561247157335f52601360205261241460405f2054335f52601460205260405f205490612bb4565b8015612471576b01743b34e18439b50200000081029081046b01743b34e18439b502000000036110165761244e61001a9160175490612bc1565b335f5260136020525f6040812055335f5260146020525f6040812055333061314c565b62f3f86160e41b5f5260045ffd5b346102ee575f3660031901126102ee576020601154604051908152f35b346102ee575f3660031901126102ee57602060a06124b8612a38565b828151910120604051907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8252838201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604082015246606082015230608082015220604051908152f35b346102ee575f3660031901126102ee5760206040516b033b2e3c9fd0803ce80000008152f35b346102ee575f3660031901126102ee57602060405160128152f35b346102ee5760203660031901126102ee57602061056d6001600160a01b0361258b6128c2565b16805f526013835260405f2054905f526014835260405f205490612bb4565b5f3660031901126102ee5763389a75e1600c52335f526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a2005b346102ee5761260136612912565b90612610611401838386612d9c565b91806126d5575b508260601b6e22d473030f116ddee9f6b43ac78ba3330361268b575b6387a211a217600c526020600c2080548084116107ca5783900390555f526020600c20818154019055602052600c5160601c9060018060a01b03165f5160206132f45f395f51905f52602080a3602060405160018152f35b33602052637f5e9f208117600c526034600c209081549182196126b1575b509050612633565b8285116126c857846387a211a293039055856126a9565b6313be252b5f526004601cfd5b6126df9084612e9f565b83612617565b346102ee575f3660031901126102ee5760206805345cdf77eb68f44c54604051908152f35b346102ee5760203660031901126102ee57612723612d3b565b600435600d55005b346102ee5760403660031901126102ee576127446128c2565b602435908115158092036102ee5761275a612d3b565b60018060a01b03165f52600260205260405f209060ff801983541691161790555f80f35b346102ee575f3660031901126102ee576005546040516001600160a01b039091168152602090f35b346102ee5760403660031901126102ee576127bf6128c2565b602435906001600160a01b0381166e22d473030f116ddee9f6b43ac78ba31882191517156107bd57602052637f5e9f20600c52335f52806034600c20555f52602c5160601c335f5160206133345f395f51905f5260205fa3602060405160018152f35b346102ee575f3660031901126102ee576103f46103e0612a38565b60403660031901126102ee5761001a6128546128c2565b61285c612d3b565b60243590612d57565b346102ee575f3660031901126102ee5760ff600e5416604051600482101561084d576020918152f35b346102ee5760203660031901126102ee576020906001600160a01b036128b26128c2565b165f526013825260405f20548152f35b600435906001600160a01b03821682036102ee57565b602435906001600160a01b03821682036102ee57565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60609060031901126102ee576004356001600160a01b03811681036102ee57906024356001600160a01b03811681036102ee579060443590565b9060206003198301126102ee576004356001600160401b0381116102ee57826023820112156102ee578060040135926001600160401b0384116102ee5760248460051b830101116102ee576024019190565b346102ee575f3660031901126102ee5760206040516b01743b34e18439b5020000008152f35b90600182811c921680156129f2575b60208310146129de57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916129d3565b60c081019081106001600160401b0382111761110957604052565b90601f801991011681019081106001600160401b0382111761110957604052565b604051905f8260035491612a4b836129c4565b8083529260018116908115612abd5750600114612a71575b612a6f92500383612a17565b565b5060035f90815290915f5160206132b45f395f51905f525b818310612aa1575050906020612a6f92820101612a63565b6020919350806001915483858901015201910190918492612a89565b60209250612a6f94915060ff191682840152151560051b820101612a63565b9060405191825f825492612aef846129c4565b8084529360018116908115612b585750600114612b14575b50612a6f92500383612a17565b90505f9291925260205f20905f915b818310612b3c575050906020612a6f928201015f612b07565b6020919350806001915483858901015201910190918492612b23565b905060209250612a6f94915060ff191682840152151560051b8201015f612b07565b9181601f840112156102ee578235916001600160401b0383116102ee57602083818601950101116102ee57565b9190820391821161101657565b9190820180921161101657565b8115612bcb570490565b634e487b7160e01b5f52601260045260245ffd5b929190926001600160401b038411611109578360051b906020808301612c086040519182612a17565b80968152019181019283116102ee57905b828210612c2557505050565b8135815260209182019101612c19565b818110612c40575050565b5f8155600101612c35565b612c5581546129c4565b9081612c5f575050565b81601f5f9311600114612c70575055565b81835260208320612c8c91601f0160051c810190600101612c35565b8082528160208120915555565b9291926001600160401b0382116111095760405191612cc2601f8201601f191660200184612a17565b8294818452818301116102ee578281602093845f960137010152565b908060209392818452848401375f828201840152601f01601f1916010190565b906001600160a01b0381166e22d473030f116ddee9f6b43ac78ba314612d3457602052637f5e9f20600c525f526034600c205490565b50505f1990565b638b78c6d819543303612d4a57565b6382b429005f526004601cfd5b814710612d8f575f3881808585620186a0f115612d72575050565b601691600b915f526073825360ff602053f015612d8b57565b3838fd5b63b12d13eb5f526004601cfd5b908215612e8a575f5460ff811615908115612e91575b50612e8a576001600160a01b039091165f818152600260205260409020546001929060ff168015612e69575b612e61575b82612e14575b5050612df457505f90565b600d548082029182040361101657612710900480612e1157505f90565b90565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911681149250908215612e57575b50505f80612de9565b1490505f80612e4e565b5f9250612de3565b506001600160a01b0381165f9081526002602052604090205460ff16612dde565b5050505f90565b60ff915060081c165f612db2565b905f9181158015613140575b8015613132575b61312d5761010061ff00195f5416175f55612ece82308361314c565b6001600160a01b039081167f000000000000000000000000000000000000000000000000000000000000000090911603612f1d57612f0e90600154612bb4565b6001555b805461ff0019169055565b600154612f2991612bb4565b80612f35575b50612f12565b6040514791612f45606083612a17565b600282526020820160403682378251156130d7573081526040516315ab88c960e31b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169290602081600481875afa9081156107b2575f916130eb575b508451600110156130d7576001600160a01b031660408501526e22d473030f116ddee9f6b43ac78ba3831881191517156107bd5782602052637f5e9f203060601b17600c52806034600c2055805f52602c5160601c305f5160206133345f395f51905f5260205fa3823b156102ee57929060405193849263791ac94760e01b845260a484019160048501525f602485015260a060448501525180915260c4830191905f5b8181106130b55750505091815f81819530606483015242608483015203925af180156107b25761309e575b506130896130919147612ba7565b600b54612bb4565b600b55806001555f612f2f565b6130ab9192505f90612a17565b5f9061308961307b565b82516001600160a01b0316845286945060209384019390920191600101613050565b634e487b7160e01b5f52603260045260245ffd5b90506020813d602011613125575b8161310660209383612a17565b810103126102ee57516001600160a01b03811681036102ee575f612fac565b3d91506130f9565b505050565b5060ff5f5460081c16612eb2565b5060ff5f541615612eab565b91906387a211a28360601b17600c526020600c2080548084116107ca5783900390555f526020600c20818154019055602052600c5160601c9060018060a01b03165f5160206132f45f395f51905f52602080a3565b9091815191826131b3575b5090501490565b8060208092019360051b0101905b8251811160051b90815260208351911852602060405f209201918183106131c157915050805f6131ac565b60018060a01b031680638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3638b78c6d81955565b600b5480156132b0575f600b558060011c7f37de8bf81657de7a59040936c23ef6dacef1a51cc4702da98f8ff8793d047da360606132678385612ba7565b638b78c6d819546005546001600160a01b03169590916132878684612d57565b6132918188612d57565b6040805196875260208701919091528501526001600160a01b031692a3565b5056fec2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85ba66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3eff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19ba2646970667358221220c84ac7a7843a8313d001884b744c6b07fd5245bf6de90fe4b467c776227da34264736f6c634300081c0033c2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b4e6ad9a50dd2554bdf63d1f959fd296465251565faf4f28930c6aa84f14c7cb5f652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19bb14a725aeeb25d591b81b16b4c5b25403dd8867bdd1876fa787867f566206be1000000000000000000000000019817ad02a31b990433542097be29d97613e8cb0000000000000000000000009ec728fce50c77e0bef7d34f1ab28a46409b7af10000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad24000000000000000000000000420000000000000000000000000000000000000600000000000000000000000000000000000000000000000006f05b59d3b200000000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000003b6261666b7265696433776a3435327771637a786f613477666f686974727636727534686970796a6f7232756e3568346c63687a376e3571687063690000000000