554 txs
555 calls
constructor
constructor((address owner, uint32 saleStart, uint32 saleEnd, uint32 totalUsers, uint8 noOfTiers, uint8 phaseNo, address withdrawer, address paymentToken, uint256 maxCap, string name) idoSetup, address _srcEndpoint)
functions
allowInitializePath
viewfunction allowInitializePath(tuple origin) view returns (bool)
composeMsgSender
viewfunction composeMsgSender() view returns (address sender)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
DEFAULT_WITHDRAW_ROLE
viewfunction DEFAULT_WITHDRAW_ROLE() view returns (bytes32)
endpoint
viewfunction endpoint() view returns (address)
getOAppSetUp
viewfunction getOAppSetUp() view returns (tuple)
getRefundPeriod
viewfunction getRefundPeriod() view returns (uint256 start, uint256 end)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getSetUp
viewfunction getSetUp() view returns (tuple)
getTierDetails
viewfunction getTierDetails(uint256 tier) view returns (tuple)
getTotalBUSDReceivedInAllTier
viewfunction getTotalBUSDReceivedInAllTier() view returns (uint256)
getUserDetails
viewfunction getUserDetails(address user) view returns (tuple)
getUserRefundEligibility
viewfunction getUserRefundEligibility(address user) view returns (bool)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isCrosschainIDO
viewfunction isCrosschainIDO() view returns (bool, address refundCaller)
nextNonce
viewfunction nextNonce(uint32, bytes32) view returns (uint64 nonce)
oAppVersion
purefunction oAppVersion() pure returns (uint64 senderVersion, uint64 receiverVersion)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
peers
viewfunction peers(uint32 eid) view returns (bytes32 peer)
quote
viewfunction quote(uint32 _eid, bytes _payload, bytes _options) view returns (uint256 nativeFee, uint256 lzTokenFee)
rootHash
viewfunction rootHash() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
verify
viewfunction verify(address _wallet, uint256 _tier, bytes32[] proof, bytes32 _rootHash) view returns (bool)
autoRefund
nonpayablefunction autoRefund(address user)
buyTokens
nonpayablefunction buyTokens(uint256 amount, uint256 userTier, bytes32[] proof) returns (bool)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
lzReceive
payablefunction lzReceive(tuple _origin, bytes32 _guid, bytes _message, address _executor, bytes _extraData) payable
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setDelegate
nonpayablefunction setDelegate(address _delegate)
setPeer
nonpayablefunction setPeer(uint32 _eid, bytes32 _peer)
setRefundCaller
nonpayablefunction setRefundCaller(address _setRefundCaller)
setRefundPeriod
payablefunction setRefundPeriod(uint256 _refundStart, uint256 _refundEnd, bytes _options) payable
setRefundPeriod
payablefunction setRefundPeriod(uint256 _refundStart, uint256 _refundEnd) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateEndTime
nonpayablefunction updateEndTime(uint256 newSaleEnd)
updateHash
nonpayablefunction updateHash(bytes32 _hash)
updateLzConfig
nonpayablefunction updateLzConfig(tuple _setUp)
updateMaxCap
nonpayablefunction updateMaxCap(uint256 _maxCap)
updateStartTime
nonpayablefunction updateStartTime(uint256 newsaleStart)
updateTiers
nonpayablefunction updateTiers(uint256[] _tier, uint256[] _maxTierCap, uint256[] _minUserCap, uint256[] _maxUserCap, uint256[] _tierUsers)
withdrawFunds
nonpayablefunction withdrawFunds(address token, address to, uint256 amount)
events
DestinationChainUpdated
event DestinationChainUpdated(uint16 indexed oldChainId, uint16 indexed newChainId)
FundsWithdrawn
event FundsWithdrawn(address token, address to, uint256 amount)
LinearVestingSet
event LinearVestingSet(address indexed linearVesting)
OnOAppSetUp
event OnOAppSetUp(address indexed srcEndpoint, address indexed dstAddress, uint32 srcEID, uint32 dstEID)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PeerSet
event PeerSet(uint32 eid, bytes32 peer)
RefundEnabled
event RefundEnabled(bool enabled)
RefundPeriodSet
event RefundPeriodSet(uint256 start, uint256 end)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Unpaused
event Unpaused(address account)
UserInvestment
event UserInvestment(address indexed user, uint256 amount, uint8 indexed phase)
UserRefund
event UserRefund(address indexed user, uint256 amount)
errors
AlreadyRefunded
error AlreadyRefunded()
AmountGreaterThanTierMaxCap
error AmountGreaterThanTierMaxCap()
AmountGreaterThanUserMaxCap
error AmountGreaterThanUserMaxCap()
AmountLessThanUserMinCap
error AmountLessThanUserMinCap()
AmountMustBeGreaterThanZero
error AmountMustBeGreaterThanZero()
CrosschainIDO
error CrosschainIDO()
ExceedsPoolMaxCap
error ExceedsPoolMaxCap()
InsufficientAllowance
error InsufficientAllowance()
InsufficientFunds
error InsufficientFunds()
InvalidDelegate
error InvalidDelegate()
InvalidEndpointCall
error InvalidEndpointCall()
InvalidMaxTierCap
error InvalidMaxTierCap()
InvalidMaxUserCap
error InvalidMaxUserCap()
InvalidMessageLength
error InvalidMessageLength()
InvalidOrigin
error InvalidOrigin(uint32 eid, address sender)
InvalidRefundPeriod
error InvalidRefundPeriod()
InvalidSaleEnd
error InvalidSaleEnd()
InvalidSetUpDstAddress
error InvalidSetUpDstAddress()
InvalidSetUpDstEID
error InvalidSetUpDstEID()
InvalidSetUpExecutor
error InvalidSetUpExecutor()
InvalidSetUpReceiveLibrary
error InvalidSetUpReceiveLibrary()
InvalidSetUpReceiveTimeout
error InvalidSetUpReceiveTimeout()
InvalidSetUpSendLibrary
error InvalidSetUpSendLibrary()
InvalidSetUpSrcEndpoint
error InvalidSetUpSrcEndpoint()
InvalidTierNumber
error InvalidTierNumber()
InvalidTimings
error InvalidTimings()
LengthsMismatch
error LengthsMismatch()
LinearVestingNotSet
error LinearVestingNotSet()
LzTokenUnavailable
error LzTokenUnavailable()
NoInvestmentFound
error NoInvestmentFound()
NoPeer
error NoPeer(uint32 eid)
NotEnoughNative
error NotEnoughNative(uint256 msgValue)
NotEVMAddress
error NotEVMAddress()
NotNonEVMAddress
error NotNonEVMAddress()
OnlyEndpoint
error OnlyEndpoint(address addr)
OnlyPeer
error OnlyPeer(uint32 eid, bytes32 sender)
RefundPeriodNotActive
error RefundPeriodNotActive()
SaleAlreadyStarted
error SaleAlreadyStarted()
SaleEnded
error SaleEnded()
SaleNotStarted
error SaleNotStarted()
TokensAlreadyClaimed
error TokensAlreadyClaimed()
UnknownRefundCaller
error UnknownRefundCaller(address caller)
UserNotAuthenticated
error UserNotAuthenticated()
UserNotWhitelisted
error UserNotWhitelisted()
ZeroLinearVesting
error ZeroLinearVesting()
ZeroMaxCap
error ZeroMaxCap()
ZeroOwnerAddress
error ZeroOwnerAddress()
ZeroTiers
error ZeroTiers()
ZeroTokenAddress
error ZeroTokenAddress()
ZeroUsers
error ZeroUsers()
ZeroUsersInTier
error ZeroUsersInTier()
ZeroWithdrawerAddress
error ZeroWithdrawerAddress()
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162005da238038062005da2833981016040819052620000349162000707565b6002805460ff1916905560016003558033818181818780806200005781620002c7565b805162000067906000906200041a565b6200009d7f1547499c2288cebb90734de086df09542bec08d95a68d8b95edd1ecc68f742508260c001516200041a60201b60201c565b8060008051602062005d82833981519152815181546020840151604085015160608601516001600160a01b039485166001600160c01b031990941693909317600160a01b63ffffffff93841602176001600160c01b0316600160c01b918316919091026001600160e01b031617600160e01b9190921602178255608083015160018301805460a086015160c087015160ff94851661ffff19909316929092176101009490911684021762010000600160b01b031916620100009185169190910217905560e08401516002840180546001600160a01b0319169190931617909155820151600382015561012082015160048201906200019c9082620008c6565b50905050505050620001bd620001b76200045860201b60201c565b6200045c565b6001600160a01b038083166080528116620001eb57604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b1580156200023357600080fd5b505af115801562000248573d6000803e3d6000fd5b505050505050505050506000620002646200044560201b60201c565b600501805460016001600160a81b03199091166101006001600160a01b039590951694850217179055507fca23d5753579668eca9efcca25db6012a682064285262c08e2752bb9b8bb747880546001600160a01b03191690911790555062000992565b806101000151600003620002ee5760405163d06a5aaf60e01b815260040160405180910390fd5b4263ffffffff16816020015163ffffffff16111580620003225750806020015163ffffffff16816040015163ffffffff1611155b15620003415760405163c6e369f960e01b815260040160405180910390fd5b806080015160ff166000036200036a57604051635bff5e3360e11b815260040160405180910390fd5b60e08101516001600160a01b03166200039657604051636b093aad60e01b815260040160405180910390fd5b806060015163ffffffff16600003620003c2576040516332b43d2b60e11b815260040160405180910390fd5b80516001600160a01b0316620003eb576040516342cad95760e01b815260040160405180910390fd5b60c08101516001600160a01b0316620004175760405163681604b960e11b815260040160405180910390fd5b50565b620004268282620004ae565b60008281526001602052604090206200044090826200054f565b505050565b60008051602062005d8283398151915290565b3390565b600480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200054b576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200050a3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600062000566836001600160a01b0384166200056f565b90505b92915050565b6000818152600183016020526040812054620005b85750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000569565b50600062000569565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715620005fd57620005fd620005c1565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200062e576200062e620005c1565b604052919050565b80516001600160a01b03811681146200064e57600080fd5b919050565b805163ffffffff811681146200064e57600080fd5b805160ff811681146200064e57600080fd5b600082601f8301126200068c57600080fd5b81516001600160401b03811115620006a857620006a8620005c1565b6020620006be601f8301601f1916820162000603565b8281528582848701011115620006d357600080fd5b60005b83811015620006f3578581018301518282018401528201620006d6565b506000928101909101919091529392505050565b600080604083850312156200071b57600080fd5b82516001600160401b03808211156200073357600080fd5b9084019061014082870312156200074957600080fd5b62000753620005d7565b6200075e8362000636565b81526200076e6020840162000653565b6020820152620007816040840162000653565b6040820152620007946060840162000653565b6060820152620007a76080840162000668565b6080820152620007ba60a0840162000668565b60a0820152620007cd60c0840162000636565b60c0820152620007e060e0840162000636565b60e0820152610100838101519082015261012080840151838111156200080557600080fd5b62000813898287016200067a565b8284015250508094505050506200082d6020840162000636565b90509250929050565b600181811c908216806200084b57607f821691505b6020821081036200086c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000440576000816000526020600020601f850160051c810160208610156200089d5750805b601f850160051c820191505b81811015620008be57828155600101620008a9565b505050505050565b81516001600160401b03811115620008e257620008e2620005c1565b620008fa81620008f3845462000836565b8462000872565b602080601f831160018114620009325760008415620009195750858301515b600019600386901b1c1916600185901b178555620008be565b600085815260208120601f198616915b82811015620009635788860151825594840194600190910190840162000942565b5085821015620009825787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080516153aa620009d86000396000818161068901528181610d7301528181611cec01528181612f230152818161333b01528181613a010152613afa01526153aa6000f3fe6080604052600436106102e75760003560e01c8063845c596c11610182578063ca5eb5e1116100d5578063de5b182a11610084578063fa92ceca11610061578063fa92ceca14610be2578063fccbe22014610c02578063ff7bd03d14610c2257005b8063de5b182a14610b40578063e81ba08014610ba2578063f2fde38b14610bc257005b8063d547741f116100b2578063d547741f14610aed578063d6d8e46b14610b0d578063dafc4c2a14610b2d57005b8063ca5eb5e114610984578063cc3d967b146109a4578063cd5fdb2314610acb57005b80639ecad16811610131578063b92d0eff1161010e578063b92d0eff14610924578063bb0b6a5314610937578063ca15c8731461096457005b80639ecad168146108c8578063a217fddf146108fc578063afa4cd051461091157005b806391d148541161015f57806391d14854146107e1578063944964cf146108325780639c0001851461089457005b8063845c596c146107765780638da5cb5b146107965780639010d07c146107c157005b80633dee1a781161023a5780635e280f11116101e9578063715018a6116101c6578063715018a6146107105780637d25a05e146107255780638456cb591461076157005b80635e280f111461067757806362dd5f38146106d05780636ab3846b146106f057005b80634bc14a56116102175780634bc14a56146105e85780635647cb14146106085780635c975abb1461065f57005b80633dee1a78146105935780633f4ba83a146105b3578063438114d0146105c857005b8063248a9ca31161029657806336568abe1161027357806336568abe1461044757806336b6bca7146104675780633af98d391461057357005b8063248a9ca3146103d75780632f2ff15d146104075780633400288b1461042757005b806317442b70116102c457806317442b70146103585780631c20fadd146103795780631d80009a1461039957005b806301ffc9a7146102f057806306bcf02f1461032557806313137d651461034557005b366102ee57005b005b3480156102fc57600080fd5b5061031061030b3660046144eb565b610c42565b60405190151581526020015b60405180910390f35b34801561033157600080fd5b506102ee61034036600461452d565b610c9e565b6102ee6103533660046145c9565b610d71565b34801561036457600080fd5b5060408051600180825260208201520161031c565b34801561038557600080fd5b506102ee610394366004614669565b610e70565b3480156103a557600080fd5b507f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31c545b60405190815260200161031c565b3480156103e357600080fd5b506103c96103f236600461452d565b60009081526020819052604090206001015490565b34801561041357600080fd5b506102ee6104223660046146aa565b611030565b34801561043357600080fd5b506102ee6104423660046146ec565b61105a565b34801561045357600080fd5b506102ee6104623660046146aa565b6110b7565b34801561047357600080fd5b50604080516080808201835260008083526020808401829052838501829052606093840191909152835180830185527fca23d5753579668eca9efcca25db6012a682064285262c08e2752bb9b8bb74755463ffffffff811680835264010000000090910473ffffffffffffffffffffffffffffffffffffffff9081168385019081527fca23d5753579668eca9efcca25db6012a682064285262c08e2752bb9b8bb74765482168489019081527fca23d5753579668eca9efcca25db6012a682064285262c08e2752bb9b8bb74775483169488019485528851938452905182169483019490945292518316958101959095525116918301919091520161031c565b34801561057f57600080fd5b5061031061058e36600461475d565b61116a565b34801561059f57600080fd5b506103106105ae3660046147b0565b611263565b3480156105bf57600080fd5b506102ee611456565b3480156105d457600080fd5b506102ee6105e336600461452d565b61146c565b3480156105f457600080fd5b506103106106033660046147cd565b61149c565b34801561061457600080fd5b507f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31b5463ffffffff808216916401000000009004165b6040805192835260208301919091520161031c565b34801561066b57600080fd5b5060025460ff16610310565b34801561068357600080fd5b506106ab7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161031c565b3480156106dc57600080fd5b506102ee6106eb366004614924565b611527565b3480156106fc57600080fd5b506102ee61070b36600461452d565b61185d565b34801561071c57600080fd5b506102ee611941565b34801561073157600080fd5b506107486107403660046146ec565b600092915050565b60405167ffffffffffffffff909116815260200161031c565b34801561076d57600080fd5b506102ee611955565b34801561078257600080fd5b506102ee6107913660046147b0565b611968565b3480156107a257600080fd5b5060045473ffffffffffffffffffffffffffffffffffffffff166106ab565b3480156107cd57600080fd5b506106ab6107dc3660046149f6565b611ab8565b3480156107ed57600080fd5b506103106107fc3660046146aa565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561083e57600080fd5b5061085261084d36600461452d565b611ad7565b60405161031c9190600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b3480156108a057600080fd5b507f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31a546103c9565b3480156108d457600080fd5b506103c97f1547499c2288cebb90734de086df09542bec08d95a68d8b95edd1ecc68f7425081565b34801561090857600080fd5b506103c9600081565b6102ee61091f366004614a18565b611b77565b34801561093057600080fd5b50306106ab565b34801561094357600080fd5b506103c9610952366004614ade565b60056020526000908152604090205481565b34801561097057600080fd5b506103c961097f36600461452d565b611c88565b34801561099057600080fd5b506102ee61099f3660046147b0565b611c9f565b3480156109b057600080fd5b50610a866109bf3660046147b0565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684527f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31e8252928290208251938401835280548452600101547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116918401919091527f0100000000000000000000000000000000000000000000000000000000000000900460ff1615159082015290565b60408051825181526020808401517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16908201529181015115159082015260600161031c565b348015610ad757600080fd5b50610ae0611d4b565b60405161031c9190614b69565b348015610af957600080fd5b506102ee610b083660046146aa565b611f3c565b348015610b1957600080fd5b506102ee610b28366004614c5e565b611f61565b6102ee610b3b3660046149f6565b6120ed565b348015610b4c57600080fd5b507f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa319546040805160ff83161515815261010090920473ffffffffffffffffffffffffffffffffffffffff1660208301520161031c565b348015610bae57600080fd5b506102ee610bbd36600461452d565b612218565b348015610bce57600080fd5b506102ee610bdd3660046147b0565b612282565b348015610bee57600080fd5b506102ee610bfd3660046147b0565b612336565b348015610c0e57600080fd5b5061064a610c1d366004614c70565b61236a565b348015610c2e57600080fd5b50610310610c3d366004614cf3565b6123fa565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f000000000000000000000000000000000000000000000000000000001480610c985750610c9882612430565b92915050565b6000610ca9816124c7565b7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa314805474010000000000000000000000000000000000000000900463ffffffff164210610d22576040517f522cb3fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805463ffffffff90931674010000000000000000000000000000000000000000027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff9093169290921790915550565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610de7576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b60208701803590610e0190610dfc908a614ade565b6124d1565b14610e5857610e136020880188614ade565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260208801356024820152604401610dde565b610e6787878787878787612526565b50505050505050565b7f1547499c2288cebb90734de086df09542bec08d95a68d8b95edd1ecc68f74250610e9a816124c7565b610ea26126dd565b81600003610edc576040517f5e85ae7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528490839073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614d0f565b1015610fa6576040517f356680b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fc773ffffffffffffffffffffffffffffffffffffffff82168585612750565b6040805173ffffffffffffffffffffffffffffffffffffffff8088168252861660208201529081018490527fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060600160405180910390a15061102a6001600355565b50505050565b60008281526020819052604090206001015461104b816124c7565b6110558383612824565b505050565b611062612846565b63ffffffff8216600081815260056020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b73ffffffffffffffffffffffffffffffffffffffff8116331461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610dde565b61116682826128c7565b5050565b60006111746128e9565b7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31461119e81612956565b6111aa81868686612a0c565b6111b48187612a9d565b336000908152600a820160205260408120546111d09088614d57565b90506111dd828288612aea565b6111e982888884612bb1565b60028201546112109073ffffffffffffffffffffffffffffffffffffffff1633308a612c60565b600182015460405182815261010090910460ff169033907fa6c963db73174350c08b882c2b6c89902dccdfdb463a6f6fe06659a0320b7a339060200160405180910390a36001925050505b949350505050565b7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa319546000907f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31490829060ff161580156112da57506005820154610100900473ffffffffffffffffffffffffffffffffffffffff1615155b1561137f5760058201546040517ff0a3563c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526000926101009004169063f0a3563c90602401602060405180830381865afa158015611357573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137b9190614d0f565b1190505b600782015460009063ffffffff1642108015906113ae57506007830154640100000000900463ffffffff164211155b73ffffffffffffffffffffffffffffffffffffffff86166000908152600a850160205260408120549192509015801590611436575073ffffffffffffffffffffffffffffffffffffffff86166000908152600a850160205260409020600101547f0100000000000000000000000000000000000000000000000000000000000000900460ff16155b8015611440575082155b905081801561144c5750805b9695505050505050565b6000611461816124c7565b611469612cbe565b50565b6000611477816124c7565b507f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31c55565b600061144c848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805173ffffffffffffffffffffffffffffffffffffffff8c1660208201529081018a905246606082015230608082015286925060a001905060405160208183030381529060405280519060200120612d3b565b6000611532816124c7565b8451865114158061154557508351855114155b8061155257508251845114155b8061155f57508151835114155b15611596576040517f586cb9e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8651811015610e67578681815181106115b4576115b4614d6a565b60200260200101516000148061160b57507f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31554875160ff9091169088908390811061160157611601614d6a565b6020026020010151115b15611642576040517fd7ee10e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85818151811061165457611654614d6a565b6020026020010151600003611695576040517f4e71b03d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8381815181106116a7576116a7614d6a565b60200260200101516000036116e8576040517f5a7aa02000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281815181106116fa576116fa614d6a565b602002602001015160000361173b576040517fa5958dad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060a0016040528087838151811061175857611758614d6a565b6020026020010151815260200186838151811061177757611777614d6a565b6020026020010151815260200185838151811061179657611796614d6a565b60200260200101518152602001600081526020018483815181106117bc576117bc614d6a565b60200260200101518152506117ee7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31490565b600901600089848151811061180557611805614d6a565b6020026020010151815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401559050508080600101915050611599565b6000611868816124c7565b7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa314805474010000000000000000000000000000000000000000900463ffffffff16831115806118b75750428311155b156118ee576040517f8078acb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805463ffffffff9093167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff9093169290921790915550565b611949612846565b6119536000612d51565b565b6000611960816124c7565b611469612dc8565b6000611973816124c7565b7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa319547f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa3149060ff16156119f1576040517fd9a05c4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611a3e576040517ff73706ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005810180547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8616908102919091179091556040517f8fd8ed5c19590ad7762b6aa12ddfd32ccf0d6ec5bf6d79b6d95be33e8bcceea290600090a2505050565b6000828152600160205260408120611ad09083612e23565b9392505050565b611b096040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b5060009081527f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31d6020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260038201546060820152600490910154608082015290565b6000611b82816124c7565b611bad7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa3148585612e2f565b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087811b8216602084015286901b166024820152815180820360080181527fca23d5753579668eca9efcca25db6012a682064285262c08e2752bb9b8bb747580546068840190945234602884019081526000604890940193909352929091611c469163ffffffff16908390879033612ef0565b5060408051878152602081018790527f20cdd2cc77e4b4b71fea0119ae3f943a89372ba5193c37be096c4965fee9cc23910160405180910390a1505050505050565b6000818152600160205260408120610c9890613008565b611ca7612846565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015611d3057600080fd5b505af1158015611d44573d6000803e3d6000fd5b5050505050565b604080516101408101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e082018390526101008201929092526101208101919091527f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa3146040805161014081018252825473ffffffffffffffffffffffffffffffffffffffff808216835263ffffffff74010000000000000000000000000000000000000000830481166020850152780100000000000000000000000000000000000000000000000083048116948401949094527c01000000000000000000000000000000000000000000000000000000009091049092166060820152600183015460ff808216608084015261010080830490911660a084015262010000909104831660c0830152600284015490921660e082015260038301549181019190915260048201805491929161012084019190611eb590614d99565b80601f0160208091040260200160405190810160405280929190818152602001828054611ee190614d99565b8015611f2e5780601f10611f0357610100808354040283529160200191611f2e565b820191906000526020600020905b815481529060010190602001808311611f1157829003601f168201915b505050505081525050905090565b600082815260208190526040902060010154611f57816124c7565b61105583836128c7565b6000611f6c816124c7565b7fca23d5753579668eca9efcca25db6012a682064285262c08e2752bb9b8bb7478547fca23d5753579668eca9efcca25db6012a682064285262c08e2752bb9b8bb747590611fde9073ffffffffffffffffffffffffffffffffffffffff16611fd936869003860186614de6565b613012565b8281611fea8282614e6b565b50611ffd905060408401602085016147b0565b6003820154604080517f416ecebf000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff93841693909216917f51f937e292f244a177e1e09d1c4e7a617d80a2bd7f2b2efb7783fce5a92ccf6a91839163416ecebf916004808201926020929091908290030181865afa158015612097573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120bb9190614fa5565b6120c86020880188614ade565b6040805163ffffffff93841681529290911660208301520160405180910390a3505050565b60006120f8816124c7565b7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa319547f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa3149060ff1615612176576040517fd9a05c4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612181818585612e2f565b60058101546040517fdafc4c2a000000000000000000000000000000000000000000000000000000008152600481018690526024810185905261010090910473ffffffffffffffffffffffffffffffffffffffff169063dafc4c2a90604401600060405180830381600087803b1580156121fa57600080fd5b505af115801561220e573d6000803e3d6000fd5b5050505050505050565b6000612223816124c7565b8160000361225d576040517fd06a5aaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b507f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31755565b61228a612846565b73ffffffffffffffffffffffffffffffffffffffff811661232d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610dde565b61146981612d51565b7f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa314612360816131ad565b611166818361326d565b60008060006123e38888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201829052509250613325915050565b805160209091015190999098509650505050505050565b60006020820180359060059083906124129086614ade565b63ffffffff1681526020810191909152604001600020541492915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610c9857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610c98565b6114698133613413565b63ffffffff811660009081526005602052604081205480610c98576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401610dde565b7fca23d5753579668eca9efcca25db6012a682064285262c08e2752bb9b8bb747580546020890180359163ffffffff1690612561908b614ade565b63ffffffff161415806125965750815473ffffffffffffffffffffffffffffffffffffffff8281166401000000009092041614155b156125ff576125a860208a018a614ade565b6040517f9aa9a49c00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff82166024820152604401610dde565b600061260b88886134cb565b156126215761261a88886134e3565b90506126a7565b61262b8888613586565b1561264557600061263c8989613594565b91506126a79050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e76616c6964206164647265737320747970650000000000000000000000006044820152606401610dde565b6126d17f3dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa3148261326d565b50505050505050505050565b600260035403612749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610dde565b6002600355565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526110559084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526135e9565b61282e82826136f8565b600082815260016020526040902061105590826137e8565b60045473ffffffffffffffffffffffffffffffffffffffff163314611953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610dde565b6128d1828261380a565b600082815260016020526040902061105590826138c1565b60025460ff1615611953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610dde565b805474010000000000000000000000000000000000000000900463ffffffff164210156129af576040517f2d0a346e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80547801000000000000000000000000000000000000000000000000900463ffffffff16421115611469576040517f0bd8a3eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b821580612a1f5750600184015460ff1683115b15612a56576040517f2ba75b2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612a6733848484886008015461149c565b61102a576040517f5fc5fa7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546006830154612ab2908390614d57565b1115611166576040517ffd0ec42100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260098401602052604090206001810154831015612b38576040517fe8e3beb000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020154831115612b76576040517f9534a42900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805483111561102a576040517fe282fe1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82846006016000828254612bc59190614d57565b9091555050600082815260098501602052604081206003018054859290612bed908490614d57565b9091555050336000908152600a90940160205260409093206001810180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093167fff00000000000000000000000000000000000000000000000000000000000000909316929092179091559190915550565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261102a9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016127a2565b612cc66138e3565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b600082612d48858461394f565b14949350505050565b6004805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b612dd06128e9565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612d113390565b6000611ad08383613992565b808210612e68576040517f69ded2d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078301805463ffffffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909216908516171790556040517f20cdd2cc77e4b4b71fea0119ae3f943a89372ba5193c37be096c4965fee9cc2390612ee39084908490918252602082015260400190565b60405180910390a1505050565b612ef86144a3565b6000612f0784600001516139bc565b602085015190915015612f2157612f2184602001516139fd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001612f7e8c6124d1565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401612fba929190614fc2565b60806040518083038185885af1158015612fd8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ffd91906150b5565b979650505050505050565b6000610c98825490565b61301b81613b1f565b61306c81600001518260200151604051602001613054919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60405160208183030381529060405261044290615127565b805160408083015190517f9535ff3000000000000000000000000000000000000000000000000000000000815230600482015263ffffffff909216602483015273ffffffffffffffffffffffffffffffffffffffff9081166044830152831690639535ff3090606401600060405180830381600087803b1580156130ef57600080fd5b505af1158015613103573d6000803e3d6000fd5b5050825160608401516040517f6a14d71500000000000000000000000000000000000000000000000000000000815230600482015263ffffffff909216602483015273ffffffffffffffffffffffffffffffffffffffff90811660448301526000606483015285169250636a14d7159150608401600060405180830381600087803b15801561319157600080fd5b505af11580156131a5573d6000803e3d6000fd5b505050505050565b600581015460ff16156131bd5750565b6005810154610100900473ffffffffffffffffffffffffffffffffffffffff16613213576040517f6743c12700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005810154610100900473ffffffffffffffffffffffffffffffffffffffff163314611469576040517f2654f914000000000000000000000000000000000000000000000000000000008152336004820152602401610dde565b6132778282613c53565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a830160205260409020546132aa838383613d3b565b60028301546132d09073ffffffffffffffffffffffffffffffffffffffff168383612750565b8173ffffffffffffffffffffffffffffffffffffffff167f2aa1a3127b897e6b1805a2208c9b1892bf77f9071ea6e08a3b763af5b68535178260405161331891815260200190565b60405180910390a2505050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001613395896124d1565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b81526004016133ca929190614fc2565b6040805180830381865afa1580156133e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061340a9190615169565b95945050505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166111665761345181613e6c565b61345c836020613e8b565b60405160200161346d929190615185565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610dde91600401615206565b6000806134d884846140ce565b60ff16149392505050565b60006134ef83836134cb565b613525576040517f2ed077ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61352f83836140f0565b51601414613569576040517f8d0242c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61357383836140f0565b61357c90615127565b60601c9392505050565b600060016134d884846140ce565b60006135a08383613586565b6135d6576040517f8ba8720900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6135e083836140f0565b611ad090615127565b600061364b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661413b9092919063ffffffff16565b905080516000148061366c57508080602001905181019061366c9190615219565b611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610dde565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166111665760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561378a3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611ad08373ffffffffffffffffffffffffffffffffffffffff841661414a565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156111665760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611ad08373ffffffffffffffffffffffffffffffffffffffff8416614199565b60025460ff16611953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610dde565b600081815b845181101561398a576139808286838151811061397357613973614d6a565b602002602001015161428c565b9150600101613954565b509392505050565b60008260000182815481106139a9576139a9614d6a565b9060005260206000200154905092915050565b60008134146139f9576040517f9f704120000000000000000000000000000000000000000000000000000000008152346004820152602401610dde565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a8e919061523b565b905073ffffffffffffffffffffffffffffffffffffffff8116613add576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61116673ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000085612c60565b805163ffffffff16600003613b60576040517f6ed946e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015173ffffffffffffffffffffffffffffffffffffffff16613bb1576040517f437e4d4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604081015173ffffffffffffffffffffffffffffffffffffffff16613c02576040517f741d58fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015173ffffffffffffffffffffffffffffffffffffffff16611469576040517fadd8396000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a830160205260408120549003613cb3576040517fb72d21a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a830160205260409020600101547f0100000000000000000000000000000000000000000000000000000000000000900460ff1615611166576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a84016020526040902060010180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790556006830154613dbc908290615258565b600684015573ffffffffffffffffffffffffffffffffffffffff82166000908152600a840160209081526040808320600101547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff168084526009870190925290912060030154613e2c908390615258565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116600090815260099094016020526040909320600301929092555050565b6060610c9873ffffffffffffffffffffffffffffffffffffffff831660145b60606000613e9a83600261526b565b613ea5906002614d57565b67ffffffffffffffff811115613ebd57613ebd614831565b6040519080825280601f01601f191660200182016040528015613ee7576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110613f1e57613f1e614d6a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613f8157613f81614d6a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000613fbd84600261526b565b613fc8906001614d57565b90505b6001811115614065577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061400957614009614d6a565b1a60f81b82828151811061401f5761401f614d6a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361405e81615282565b9050613fcb565b508315611ad0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610dde565b60006140dd60018284866152b7565b6140e6916152e1565b60f81c9392505050565b60606140ff82600181866152b7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606061125b84846000856142bb565b600081815260018301602052604081205461419157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610c98565b506000610c98565b600081815260018301602052604081205480156142825760006141bd600183615258565b85549091506000906141d190600190615258565b90508181146142365760008660000182815481106141f1576141f1614d6a565b906000526020600020015490508087600001848154811061421457614214614d6a565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061424757614247615329565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610c98565b6000915050610c98565b60008183106142a8576000828152602084905260409020611ad0565b6000838152602083905260409020611ad0565b60608247101561434d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610dde565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516143769190615358565b60006040518083038185875af1925050503d80600081146143b3576040519150601f19603f3d011682016040523d82523d6000602084013e6143b8565b606091505b5091509150612ffd878383876060831561445a5782516000036144535773ffffffffffffffffffffffffffffffffffffffff85163b614453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610dde565b508161125b565b61125b838381511561446f5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde9190615206565b604051806060016040528060008019168152602001600067ffffffffffffffff1681526020016144e6604051806040016040528060008152602001600081525090565b905290565b6000602082840312156144fd57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611ad057600080fd5b60006020828403121561453f57600080fd5b5035919050565b60006060828403121561455857600080fd5b50919050565b60008083601f84011261457057600080fd5b50813567ffffffffffffffff81111561458857600080fd5b6020830191508360208285010111156145a057600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461146957600080fd5b600080600080600080600060e0888a0312156145e457600080fd5b6145ee8989614546565b965060608801359550608088013567ffffffffffffffff8082111561461257600080fd5b61461e8b838c0161455e565b909750955060a08a01359150614633826145a7565b90935060c0890135908082111561464957600080fd5b506146568a828b0161455e565b989b979a50959850939692959293505050565b60008060006060848603121561467e57600080fd5b8335614689816145a7565b92506020840135614699816145a7565b929592945050506040919091013590565b600080604083850312156146bd57600080fd5b8235915060208301356146cf816145a7565b809150509250929050565b63ffffffff8116811461146957600080fd5b600080604083850312156146ff57600080fd5b823561470a816146da565b946020939093013593505050565b60008083601f84011261472a57600080fd5b50813567ffffffffffffffff81111561474257600080fd5b6020830191508360208260051b85010111156145a057600080fd5b6000806000806060858703121561477357600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561479857600080fd5b6147a487828801614718565b95989497509550505050565b6000602082840312156147c257600080fd5b8135611ad0816145a7565b6000806000806000608086880312156147e557600080fd5b85356147f0816145a7565b945060208601359350604086013567ffffffffffffffff81111561481357600080fd5b61481f88828901614718565b96999598509660600135949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156148a7576148a7614831565b604052919050565b600082601f8301126148c057600080fd5b8135602067ffffffffffffffff8211156148dc576148dc614831565b8160051b6148eb828201614860565b928352848101820192828101908785111561490557600080fd5b83870192505b84831015612ffd5782358252918301919083019061490b565b600080600080600060a0868803121561493c57600080fd5b853567ffffffffffffffff8082111561495457600080fd5b61496089838a016148af565b9650602088013591508082111561497657600080fd5b61498289838a016148af565b9550604088013591508082111561499857600080fd5b6149a489838a016148af565b945060608801359150808211156149ba57600080fd5b6149c689838a016148af565b935060808801359150808211156149dc57600080fd5b506149e9888289016148af565b9150509295509295909350565b60008060408385031215614a0957600080fd5b50508035926020909101359150565b600080600060608486031215614a2d57600080fd5b833592506020808501359250604085013567ffffffffffffffff80821115614a5457600080fd5b818701915087601f830112614a6857600080fd5b813581811115614a7a57614a7a614831565b614aaa847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614860565b91508082528884828501011115614ac057600080fd5b80848401858401376000848284010152508093505050509250925092565b600060208284031215614af057600080fd5b8135611ad0816146da565b60005b83811015614b16578181015183820152602001614afe565b50506000910152565b60008151808452614b37816020860160208601614afb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152614b9060208201835173ffffffffffffffffffffffffffffffffffffffff169052565b60006020830151614ba9604084018263ffffffff169052565b50604083015163ffffffff8116606084015250606083015163ffffffff8116608084015250608083015160ff811660a08401525060a083015160ff811660c08401525060c083015173ffffffffffffffffffffffffffffffffffffffff811660e08401525060e0830151610100614c378185018373ffffffffffffffffffffffffffffffffffffffff169052565b8401516101208481019190915284015161014080850152905061125b610160840182614b1f565b60006080828403121561455857600080fd5b600080600080600060608688031215614c8857600080fd5b8535614c93816146da565b9450602086013567ffffffffffffffff80821115614cb057600080fd5b614cbc89838a0161455e565b90965094506040880135915080821115614cd557600080fd5b50614ce28882890161455e565b969995985093965092949392505050565b600060608284031215614d0557600080fd5b611ad08383614546565b600060208284031215614d2157600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610c9857610c98614d28565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c90821680614dad57607f821691505b602082108103614558577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060808284031215614df857600080fd5b6040516080810181811067ffffffffffffffff82111715614e1b57614e1b614831565b6040528235614e29816146da565b81526020830135614e39816145a7565b60208201526040830135614e4c816145a7565b60408201526060830135614e5f816145a7565b60608201529392505050565b8135614e76816146da565b63ffffffff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000082161783556020840135614eb6816145a7565b77ffffffffffffffffffffffffffffffffffffffff000000008160201b16837fffffffffffffffff0000000000000000000000000000000000000000000000008416171784555050506040820135614f0d816145a7565b6001820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055506060820135614f5e816145a7565b6002820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055505050565b600060208284031215614fb757600080fd5b8151611ad0816146da565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152614ff860e0840182614b1f565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a08501526150338282614b1f565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b60006040828403121561507857600080fd5b6040516040810181811067ffffffffffffffff8211171561509b5761509b614831565b604052825181526020928301519281019290925250919050565b6000608082840312156150c757600080fd5b6040516060810167ffffffffffffffff82821081831117156150eb576150eb614831565b816040528451835260208501519150808216821461510857600080fd5b50602082015261511b8460408501615066565b60408201529392505050565b80516020808301519190811015614558577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b60006040828403121561517b57600080fd5b611ad08383615066565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516151bd816017850160208801614afb565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516151fa816028840160208801614afb565b01602801949350505050565b602081526000611ad06020830184614b1f565b60006020828403121561522b57600080fd5b81518015158114611ad057600080fd5b60006020828403121561524d57600080fd5b8151611ad0816145a7565b81810381811115610c9857610c98614d28565b8082028115828204841417610c9857610c98614d28565b60008161529157615291614d28565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600080858511156152c757600080fd5b838611156152d457600080fd5b5050820193919092039150565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156153215780818660010360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000825161536a818460208701614afb565b919091019291505056fea2646970667358221220b6f00880004b6e4503d89423840ed845c59e2992bd5e7dbbab57d374fa7cc5b464736f6c634300081700333dc5eab9404468315144de4922835c777672aa872d244af27e2aa0f2940fa31400000000000000000000000000000000000000000000000000000000000000400000000000000000000000001a44076050125825900e736c501f859c50fe728c000000000000000000000000b44889a0da462090922f72d7faf69bceb3adb7c6000000000000000000000000000000000000000000000000000000006899e95000000000000000000000000000000000000000000000000000000000689b3ad0000000000000000000000000000000000000000000000000000000000000037900000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b44889a0da462090922f72d7faf69bceb3adb7c600000000000000000000000055d398326f99059ff775485246999027b3197955000000000000000000000000000000000000000000004a1d89bb94865ec000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000001553757a616b755f5075626c69635f50686173655f310000000000000000000000