2 txs
3 calls
constructor
constructor(address _rolesManager, address _initialOwner, address _pauser)
functions
ACCOUNT_MANAGER
viewfunction ACCOUNT_MANAGER() view returns (address)
getMyDirectSponsorAddress
viewfunction getMyDirectSponsorAddress(address _address) view returns (address)
getMyNFTIds
viewfunction getMyNFTIds(address _address) view returns (uint96[])
getMySponsorNFTId
viewfunction getMySponsorNFTId(uint96 _myNFTId) view returns (uint96)
getNFTAccountById
viewfunction getNFTAccountById(uint96 _id) view returns (tuple)
getNftIPFSLinkBulk
viewfunction getNftIPFSLinkBulk(uint96[] _nftIds) view returns (string[])
getNFTLastImageUsed
viewfunction getNFTLastImageUsed() view returns (uint256)
getPOIWalletsWithPOI
viewfunction getPOIWalletsWithPOI() view returns (address[])
getSponsorAddressByReferralLink
viewfunction getSponsorAddressByReferralLink(string _link) view returns (address)
getSponsorDataByAddress
viewfunction getSponsorDataByAddress(address _address) view returns (address[])
getSponsorNFTIdByRefLink
viewfunction getSponsorNFTIdByRefLink(string _link) view returns (uint256)
getTotalUserRegistered
viewfunction getTotalUserRegistered() view returns (uint256)
getUserNftAccDataBulk
viewfunction getUserNftAccDataBulk(uint96[] _ids) view returns (tuple[])
getUserPOIData
viewfunction getUserPOIData(address _address) view returns (tuple)
getUserPOIDataBulk
viewfunction getUserPOIDataBulk(address[] _walletAddresses) view returns (tuple[])
getUsersRegisteredBulk
viewfunction getUsersRegisteredBulk(uint96 _fromIndex, uint96 _limit) view returns (address[])
isPaused
viewfunction isPaused() view returns (bool)
isUserRegistered
viewfunction isUserRegistered(address _address) view returns (bool)
MEMBERSHIP_CONTRACT_ADDRESS
viewfunction MEMBERSHIP_CONTRACT_ADDRESS() view returns (address)
NFT_ID_COUNTER
viewfunction NFT_ID_COUNTER() view returns (uint96)
NFT_STORAGE
viewfunction NFT_STORAGE() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
POI_CONTRACT_ADDRESS
viewfunction POI_CONTRACT_ADDRESS() view returns (address)
POI_STORAGE
viewfunction POI_STORAGE() view returns (address)
ROLES_MANAGER
viewfunction ROLES_MANAGER() view returns (address)
userExists
viewfunction userExists(address _address) view returns (bool)
createNFTAccount
nonpayablefunction createNFTAccount(tuple _data, address _sponsorAddress, uint96 _sponsorNFTId, string _referralLink, uint8 _side, string _ipfsLink)
createPOIUser
nonpayablefunction createPOIUser(tuple _user, address _userAddress)
emergencyPause
nonpayablefunction emergencyPause()
emergencyUnpause
nonpayablefunction emergencyUnpause()
renounceOwnership
nonpayablefunction renounceOwnership()
setContractsAddress
nonpayablefunction setContractsAddress(address _address, uint8 _contract)
transferNFT
nonpayablefunction transferNFT(address _oldOwner, address _newOwner, uint96 _tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updatePOIUserData
nonpayablefunction updatePOIUserData(tuple _userData, address _address)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
errors
AccessDenied
error AccessDenied()
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
V1
error V1()
V8
error V8()
creation bytecode
0x608060405234801562000010575f80fd5b5060405162004d5b38038062004d5b833981810160405281019062000036919062000274565b8160015f819055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000b1575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a89190620002de565b60405180910390fd5b620000c2816200014c60201b60201c565b508260015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620002f9565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200023e8262000213565b9050919050565b620002508162000232565b81146200025b575f80fd5b50565b5f815190506200026e8162000245565b92915050565b5f805f606084860312156200028e576200028d6200020f565b5b5f6200029d868287016200025e565b9350506020620002b0868287016200025e565b9250506040620002c3868287016200025e565b9150509250925092565b620002d88162000232565b82525050565b5f602082019050620002f35f830184620002cd565b92915050565b614a5480620003075f395ff3fe608060405234801561000f575f80fd5b506004361061021a575f3560e01c8063624afeb011610123578063a25eb596116100ab578063ed6a98b31161007a578063ed6a98b314610640578063efb8d49d14610670578063f2fde38b146106a0578063f95cb040146106bc578063ffa2abff146106da5761021a565b8063a25eb596146105b8578063a8def318146105d6578063b187bd26146105f2578063d5463067146106105761021a565b80636ee2e7d9116100f25780636ee2e7d914610538578063715018a61461055657806376a6bf2c146105605780638690e43b1461057c5780638da5cb5b1461059a5761021a565b8063624afeb0146104b257806367eb8560146104ce578063684581c7146104fe5780636b01e7511461051a5761021a565b80633ea7e783116101a6578063527d0b4811610175578063527d0b481461040a57806355c9bcff146104285780635c975abb146104585780635de87bff146104765780635e92e3ed146104945761021a565b80633ea7e783146103a85780634a4e3bd5146103c65780634fffd0b9146103d057806351858e27146104005761021a565b80631c9851fc116101ed5780631c9851fc146102ca578063243717e0146102e85780632ab1c188146103185780632e57096e146103485780633c8bc14c146103785761021a565b8063085a512f1461021e5780630e666e491461024e5780630eea54d61461027e578063163f75221461029a575b5f80fd5b610238600480360381019061023391906125a4565b61070a565b6040516102459190612686565b60405180910390f35b610268600480360381019061026391906125a4565b6107af565b60405161027591906126c0565b60405180910390f35b6102986004803603810190610293919061271a565b610850565b005b6102b460048036038101906102af91906125a4565b610922565b6040516102c191906126c0565b60405180910390f35b6102d26109c3565b6040516102df9190612686565b60405180910390f35b61030260048036038101906102fd919061276a565b610a5b565b60405161030f91906129ef565b60405180910390f35b610332600480360381019061032d919061276a565b610b06565b60405161033f9190612a1e565b60405180910390f35b610362600480360381019061035d9190612b63565b610ba7565b60405161036f9190612bb9565b60405180910390f35b610392600480360381019061038d9190612c2f565b610c56565b60405161039f9190612eb2565b60405180910390f35b6103b0610ce6565b6040516103bd9190612f2d565b60405180910390f35b6103ce610d0b565b005b6103ea60048036038101906103e591906125a4565b610db3565b6040516103f79190612fb2565b60405180910390f35b610408610e58565b005b610412610f00565b60405161041f9190612bb9565b60405180910390f35b610442600480360381019061043d9190613027565b610f94565b60405161044f919061312d565b60405180910390f35b610460611024565b60405161046d91906126c0565b60405180910390f35b61047e61103a565b60405161048b9190612bb9565b60405180910390f35b61049c6110dc565b6040516104a9919061315c565b60405180910390f35b6104cc60048036038101906104c7919061346b565b611101565b005b6104e860048036038101906104e391906125a4565b611233565b6040516104f5919061315c565b60405180910390f35b61051860048036038101906105139190613570565b6112d4565b005b6105226113a3565b60405161052f9190612a1e565b60405180910390f35b6105406113c1565b60405161054d919061315c565b60405180910390f35b61055e6113e6565b005b61057a600480360381019061057591906135ed565b6113f9565b005b61058461170e565b604051610591919061315c565b60405180910390f35b6105a2611733565b6040516105af919061315c565b60405180910390f35b6105c061175b565b6040516105cd919061364b565b60405180910390f35b6105f060048036038101906105eb9190613683565b611780565b005b6105fa611852565b60405161060791906126c0565b60405180910390f35b61062a600480360381019061062591906136dd565b611860565b604051610637919061315c565b60405180910390f35b61065a60048036038101906106559190613027565b611904565b60405161066791906138e4565b60405180910390f35b61068a60048036038101906106859190613904565b611994565b6040516106979190612686565b60405180910390f35b6106ba60048036038101906106b591906125a4565b611a3c565b005b6106c4611ac0565b6040516106d1919061315c565b60405180910390f35b6106f460048036038101906106ef91906125a4565b611ae5565b6040516107019190613a4a565b60405180910390f35b606060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663085a512f836040518263ffffffff1660e01b8152600401610766919061315c565b5f60405180830381865afa158015610780573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906107a89190613b3e565b9050919050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e666e49836040518263ffffffff1660e01b815260040161080a919061315c565b602060405180830381865afa158015610825573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108499190613baf565b9050919050565b610858611b90565b610860611bd1565b61088a60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c15565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630eea54d68484846040518463ffffffff1660e01b81526004016108e893929190613bda565b5f604051808303815f87803b1580156108ff575f80fd5b505af1158015610911573d5f803e3d5ffd5b5050505061091d611c7d565b505050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663163f7522836040518263ffffffff1660e01b815260040161097d919061315c565b602060405180830381865afa158015610998573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bc9190613baf565b9050919050565b606060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e9c99c306040518163ffffffff1660e01b81526004015f60405180830381865afa158015610a2e573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610a569190613b3e565b905090565b610a63612419565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663243717e0836040518263ffffffff1660e01b8152600401610abd9190612a1e565b5f60405180830381865afa158015610ad7573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610aff9190613eb3565b9050919050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ab1c188836040518263ffffffff1660e01b8152600401610b619190612a1e565b602060405180830381865afa158015610b7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba09190613efa565b9050919050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf7e6c7836040518263ffffffff1660e01b8152600401610c029190613f6d565b602060405180830381865afa158015610c1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c419190613efa565b6bffffffffffffffffffffffff169050919050565b6060610cde8383808060200260200160405190810160405280939291908181526020018383602002808284375f81840152601f19601f8201169050808301925050505050505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffa2abff611c86565b905092915050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d13611dc8565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d99576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610da1611bd1565b610da9611dd2565b610db1611c7d565b565b606060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fffd0b9836040518263ffffffff1660e01b8152600401610e0f919061315c565b5f60405180830381865afa158015610e29573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610e519190613f8d565b9050919050565b610e60611dc8565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ee6576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eee611bd1565b610ef6611e34565b610efe611c7d565b565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359c606136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8f9190613fd4565b905090565b606061101c8383808060200260200160405190810160405280939291908181526020018383602002808284375f81840152601f19601f8201169050808301925050505050505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663927ae7c5611e97565b905092915050565b5f600960149054906101000a900460ff16905090565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630d82cfa16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c99190613efa565b6bffffffffffffffffffffffff16905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611109611bd1565b61113360055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c15565b5f6001600660149054906101000a90046bffffffffffffffffffffffff1661115b919061402c565b905060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e14a3910898989898989896040518863ffffffff1660e01b81526004016111c397969594939291906140a6565b5f604051808303815f87803b1580156111da575f80fd5b505af11580156111ec573d5f803e3d5ffd5b5050505080600660146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505061122a611c7d565b50505050505050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166367eb8560836040518263ffffffff1660e01b815260040161128e919061315c565b602060405180830381865afa1580156112a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cd919061411c565b9050919050565b6112dc611b90565b6112e4611bd1565b61130e60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c15565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572d21583836040518363ffffffff1660e01b815260040161136a929190614404565b5f604051808303815f87803b158015611381575f80fd5b505af1158015611393573d5f803e3d5ffd5b5050505061139f611c7d565b5050565b600660149054906101000a90046bffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113ee611fd3565b6113f75f61205a565b565b61145a60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16336040518060400160405280600a81526020017f535550455241444d494e0000000000000000000000000000000000000000000081525061211d565b611462611bd1565b61146a611dc8565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114cf576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60048111156114e2576114e1614432565b5b8160048111156114f5576114f4614432565b5b0361153f578160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611702565b6001600481111561155357611552614432565b5b81600481111561156657611565614432565b5b036115b0578160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611701565b600260048111156115c4576115c3614432565b5b8160048111156115d7576115d6614432565b5b03611621578160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611700565b6003600481111561163557611634614432565b5b81600481111561164857611647614432565b5b03611692578160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506116ff565b6004808111156116a5576116a4614432565b5b8160048111156116b8576116b7614432565b5b036116fe578160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5b5b61170a611c7d565b5050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611788611b90565b611790611bd1565b6117ba60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c15565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e839aee838360016040518463ffffffff1660e01b8152600401611819939291906145c5565b5f604051808303815f87803b158015611830575f80fd5b505af1158015611842573d5f803e3d5ffd5b5050505061184e611c7d565b5050565b5f61185b611024565b905090565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d546306784846040518363ffffffff1660e01b81526004016118bd929190614601565b602060405180830381865afa1580156118d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118fc919061411c565b905092915050565b606061198c8383808060200260200160405190810160405280939291908181526020018383602002808284375f81840152601f19601f8201169050808301925050505050505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663243717e061212d565b905092915050565b606060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663efb8d49d84846040518363ffffffff1660e01b81526004016119f2929190614623565b5f60405180830381865afa158015611a0c573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611a349190613b3e565b905092915050565b611a44611fd3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ab4575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611aab919061315c565b60405180910390fd5b611abd8161205a565b50565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611aed6124ba565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffa2abff836040518263ffffffff1660e01b8152600401611b47919061315c565b5f60405180830381865afa158015611b61573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611b899190614902565b9050919050565b611b98611024565b15611bcf576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60025f5403611c0c576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f81905550565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c7a576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60015f81905550565b6060835167ffffffffffffffff811115611ca357611ca2612a3f565b5b604051908082528060200260200182016040528015611cdc57816020015b611cc96124ba565b815260200190600190039081611cc15790505b5090505f5b8451816bffffffffffffffffffffffff161015611dc057838386836bffffffffffffffffffffffff1681518110611d1b57611d1a614949565b5b60200260200101516040518263ffffffff1660e01b8152600401611d3f919061315c565b5f60405180830381865afa158015611d59573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611d819190614902565b82826bffffffffffffffffffffffff1681518110611da257611da1614949565b5b60200260200101819052508080611db890614976565b915050611ce1565b509392505050565b611dd061226f565b565b611dda612307565b5f600960146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611e1d612347565b604051611e2a919061315c565b60405180910390a1565b611e3c611b90565b6001600960146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611e80612347565b604051611e8d919061315c565b60405180910390a1565b6060835167ffffffffffffffff811115611eb457611eb3612a3f565b5b604051908082528060200260200182016040528015611ee757816020015b6060815260200190600190039081611ed25790505b5090505f5b8451816bffffffffffffffffffffffff161015611fcb57838386836bffffffffffffffffffffffff1681518110611f2657611f25614949565b5b60200260200101516040518263ffffffff1660e01b8152600401611f4a9190612a1e565b5f60405180830381865afa158015611f64573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611f8c91906149a9565b82826bffffffffffffffffffffffff1681518110611fad57611fac614949565b5b60200260200101819052508080611fc390614976565b915050611eec565b509392505050565b611fdb612347565b73ffffffffffffffffffffffffffffffffffffffff16611ff9611733565b73ffffffffffffffffffffffffffffffffffffffff16146120585761201c612347565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161204f919061315c565b60405180910390fd5b565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61212883838361234e565b505050565b6060835167ffffffffffffffff81111561214a57612149612a3f565b5b60405190808252806020026020018201604052801561218357816020015b612170612419565b8152602001906001900390816121685790505b5090505f5b8451816bffffffffffffffffffffffff16101561226757838386836bffffffffffffffffffffffff16815181106121c2576121c1614949565b5b60200260200101516040518263ffffffff1660e01b81526004016121e69190612a1e565b5f60405180830381865afa158015612200573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906122289190613eb3565b82826bffffffffffffffffffffffff168151811061224957612248614949565b5b6020026020010181905250808061225f90614976565b915050612188565b509392505050565b5f80339050803b91505f8211156122b2576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff163b1115612303576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b61230f611024565b612345576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f33905090565b612359838383612394565b61238f576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f8373ffffffffffffffffffffffffffffffffffffffff16637909185184846040518363ffffffff1660e01b81526004016123d09291906149f0565b6020604051808303815f875af11580156123ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124109190613baf565b90509392505050565b604051806101600160405280606081526020015f6bffffffffffffffffffffffff1681526020015f6bffffffffffffffffffffffff1681526020015f6bffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001606081526020015f6bffffffffffffffffffffffff1681526020015f81526020015f81525090565b6040518061014001604052806060815260200160608152602001606081526020016060815260200160608152602001606081526020015f815260200160608152602001612505612511565b81526020015f81525090565b6040518060800160405280606081526020016060815260200160608152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6125738261254a565b9050919050565b61258381612569565b811461258d575f80fd5b50565b5f8135905061259e8161257a565b92915050565b5f602082840312156125b9576125b8612542565b5b5f6125c684828501612590565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61260181612569565b82525050565b5f61261283836125f8565b60208301905092915050565b5f602082019050919050565b5f612634826125cf565b61263e81856125d9565b9350612649836125e9565b805f5b838110156126795781516126608882612607565b975061266b8361261e565b92505060018101905061264c565b5085935050505092915050565b5f6020820190508181035f83015261269e818461262a565b905092915050565b5f8115159050919050565b6126ba816126a6565b82525050565b5f6020820190506126d35f8301846126b1565b92915050565b5f6bffffffffffffffffffffffff82169050919050565b6126f9816126d9565b8114612703575f80fd5b50565b5f81359050612714816126f0565b92915050565b5f805f6060848603121561273157612730612542565b5b5f61273e86828701612590565b935050602061274f86828701612590565b925050604061276086828701612706565b9150509250925092565b5f6020828403121561277f5761277e612542565b5b5f61278c84828501612706565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156127cc5780820151818401526020810190506127b1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6127f182612795565b6127fb818561279f565b935061280b8185602086016127af565b612814816127d7565b840191505092915050565b612828816126d9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f612862838361281f565b60208301905092915050565b5f602082019050919050565b5f6128848261282e565b61288e8185612838565b935061289983612848565b805f5b838110156128c95781516128b08882612857565b97506128bb8361286e565b92505060018101905061289c565b5085935050505092915050565b5f819050919050565b6128e8816128d6565b82525050565b5f61016083015f8301518482035f86015261290982826127e7565b915050602083015161291e602086018261281f565b506040830151612931604086018261281f565b506060830151612944606086018261281f565b50608083015161295760808601826125f8565b5060a083015184820360a086015261296f82826127e7565b91505060c083015184820360c0860152612989828261287a565b91505060e083015184820360e08601526129a3828261287a565b9150506101008301516129ba61010086018261281f565b506101208301516129cf6101208601826128df565b506101408301516129e46101408601826128df565b508091505092915050565b5f6020820190508181035f830152612a0781846128ee565b905092915050565b612a18816126d9565b82525050565b5f602082019050612a315f830184612a0f565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a75826127d7565b810181811067ffffffffffffffff82111715612a9457612a93612a3f565b5b80604052505050565b5f612aa6612539565b9050612ab28282612a6c565b919050565b5f67ffffffffffffffff821115612ad157612ad0612a3f565b5b612ada826127d7565b9050602081019050919050565b828183375f83830152505050565b5f612b07612b0284612ab7565b612a9d565b905082815260208101848484011115612b2357612b22612a3b565b5b612b2e848285612ae7565b509392505050565b5f82601f830112612b4a57612b49612a37565b5b8135612b5a848260208601612af5565b91505092915050565b5f60208284031215612b7857612b77612542565b5b5f82013567ffffffffffffffff811115612b9557612b94612546565b5b612ba184828501612b36565b91505092915050565b612bb3816128d6565b82525050565b5f602082019050612bcc5f830184612baa565b92915050565b5f80fd5b5f80fd5b5f8083601f840112612bef57612bee612a37565b5b8235905067ffffffffffffffff811115612c0c57612c0b612bd2565b5b602083019150836020820283011115612c2857612c27612bd6565b5b9250929050565b5f8060208385031215612c4557612c44612542565b5b5f83013567ffffffffffffffff811115612c6257612c61612546565b5b612c6e85828601612bda565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f608083015f8301518482035f860152612cbd82826127e7565b91505060208301518482036020860152612cd782826127e7565b91505060408301518482036040860152612cf182826127e7565b91505060608301518482036060860152612d0b82826127e7565b9150508091505092915050565b5f61014083015f8301518482035f860152612d3382826127e7565b91505060208301518482036020860152612d4d82826127e7565b91505060408301518482036040860152612d6782826127e7565b91505060608301518482036060860152612d8182826127e7565b91505060808301518482036080860152612d9b82826127e7565b91505060a083015184820360a0860152612db582826127e7565b91505060c0830151612dca60c08601826128df565b5060e083015184820360e0860152612de282826127e7565b915050610100830151848203610100860152612dfe8282612ca3565b915050610120830151612e156101208601826128df565b508091505092915050565b5f612e2b8383612d18565b905092915050565b5f602082019050919050565b5f612e4982612c7a565b612e538185612c84565b935083602082028501612e6585612c94565b805f5b85811015612ea05784840389528151612e818582612e20565b9450612e8c83612e33565b925060208a01995050600181019050612e68565b50829750879550505050505092915050565b5f6020820190508181035f830152612eca8184612e3f565b905092915050565b5f819050919050565b5f612ef5612ef0612eeb8461254a565b612ed2565b61254a565b9050919050565b5f612f0682612edb565b9050919050565b5f612f1782612efc565b9050919050565b612f2781612f0d565b82525050565b5f602082019050612f405f830184612f1e565b92915050565b5f82825260208201905092915050565b5f612f608261282e565b612f6a8185612f46565b9350612f7583612848565b805f5b83811015612fa5578151612f8c8882612857565b9750612f978361286e565b925050600181019050612f78565b5085935050505092915050565b5f6020820190508181035f830152612fca8184612f56565b905092915050565b5f8083601f840112612fe757612fe6612a37565b5b8235905067ffffffffffffffff81111561300457613003612bd2565b5b6020830191508360208202830111156130205761301f612bd6565b5b9250929050565b5f806020838503121561303d5761303c612542565b5b5f83013567ffffffffffffffff81111561305a57613059612546565b5b61306685828601612fd2565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6130a683836127e7565b905092915050565b5f602082019050919050565b5f6130c482613072565b6130ce818561307c565b9350836020820285016130e08561308c565b805f5b8581101561311b57848403895281516130fc858261309b565b9450613107836130ae565b925060208a019950506001810190506130e3565b50829750879550505050505092915050565b5f6020820190508181035f83015261314581846130ba565b905092915050565b61315681612569565b82525050565b5f60208201905061316f5f83018461314d565b92915050565b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561319757613196612a3f565b5b602082029050602081019050919050565b5f6131ba6131b58461317d565b612a9d565b905080838252602082019050602084028301858111156131dd576131dc612bd6565b5b835b8181101561320657806131f28882612706565b8452602084019350506020810190506131df565b5050509392505050565b5f82601f83011261322457613223612a37565b5b81356132348482602086016131a8565b91505092915050565b613246816128d6565b8114613250575f80fd5b50565b5f813590506132618161323d565b92915050565b5f610160828403121561327d5761327c613175565b5b613288610160612a9d565b90505f82013567ffffffffffffffff8111156132a7576132a6613179565b5b6132b384828501612b36565b5f8301525060206132c684828501612706565b60208301525060406132da84828501612706565b60408301525060606132ee84828501612706565b606083015250608061330284828501612590565b60808301525060a082013567ffffffffffffffff81111561332657613325613179565b5b61333284828501612b36565b60a08301525060c082013567ffffffffffffffff81111561335657613355613179565b5b61336284828501613210565b60c08301525060e082013567ffffffffffffffff81111561338657613385613179565b5b61339284828501613210565b60e0830152506101006133a784828501612706565b610100830152506101206133bd84828501613253565b610120830152506101406133d384828501613253565b6101408301525092915050565b5f8083601f8401126133f5576133f4612a37565b5b8235905067ffffffffffffffff81111561341257613411612bd2565b5b60208301915083600182028301111561342e5761342d612bd6565b5b9250929050565b5f60ff82169050919050565b61344a81613435565b8114613454575f80fd5b50565b5f8135905061346581613441565b92915050565b5f805f805f805f60c0888a03121561348657613485612542565b5b5f88013567ffffffffffffffff8111156134a3576134a2612546565b5b6134af8a828b01613267565b97505060206134c08a828b01612590565b96505060406134d18a828b01612706565b955050606088013567ffffffffffffffff8111156134f2576134f1612546565b5b6134fe8a828b016133e0565b945094505060806135118a828b01613457565b92505060a088013567ffffffffffffffff81111561353257613531612546565b5b61353e8a828b01612b36565b91505092959891949750929550565b5f80fd5b5f61012082840312156135675761356661354d565b5b81905092915050565b5f806040838503121561358657613585612542565b5b5f83013567ffffffffffffffff8111156135a3576135a2612546565b5b6135af85828601613551565b92505060206135c085828601612590565b9150509250929050565b600581106135d6575f80fd5b50565b5f813590506135e7816135ca565b92915050565b5f806040838503121561360357613602612542565b5b5f61361085828601612590565b9250506020613621858286016135d9565b9150509250929050565b5f61363582612efc565b9050919050565b6136458161362b565b82525050565b5f60208201905061365e5f83018461363c565b92915050565b5f610140828403121561367a5761367961354d565b5b81905092915050565b5f806040838503121561369957613698612542565b5b5f83013567ffffffffffffffff8111156136b6576136b5612546565b5b6136c285828601613664565b92505060206136d385828601612590565b9150509250929050565b5f80602083850312156136f3576136f2612542565b5b5f83013567ffffffffffffffff8111156137105761370f612546565b5b61371c858286016133e0565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f61016083015f8301518482035f86015261376c82826127e7565b9150506020830151613781602086018261281f565b506040830151613794604086018261281f565b5060608301516137a7606086018261281f565b5060808301516137ba60808601826125f8565b5060a083015184820360a08601526137d282826127e7565b91505060c083015184820360c08601526137ec828261287a565b91505060e083015184820360e0860152613806828261287a565b91505061010083015161381d61010086018261281f565b506101208301516138326101208601826128df565b506101408301516138476101408601826128df565b508091505092915050565b5f61385d8383613751565b905092915050565b5f602082019050919050565b5f61387b82613728565b6138858185613732565b93508360208202850161389785613742565b805f5b858110156138d257848403895281516138b38582613852565b94506138be83613865565b925060208a0199505060018101905061389a565b50829750879550505050505092915050565b5f6020820190508181035f8301526138fc8184613871565b905092915050565b5f806040838503121561391a57613919612542565b5b5f61392785828601612706565b925050602061393885828601612706565b9150509250929050565b5f61014083015f8301518482035f86015261395d82826127e7565b9150506020830151848203602086015261397782826127e7565b9150506040830151848203604086015261399182826127e7565b915050606083015184820360608601526139ab82826127e7565b915050608083015184820360808601526139c582826127e7565b91505060a083015184820360a08601526139df82826127e7565b91505060c08301516139f460c08601826128df565b5060e083015184820360e0860152613a0c82826127e7565b915050610100830151848203610100860152613a288282612ca3565b915050610120830151613a3f6101208601826128df565b508091505092915050565b5f6020820190508181035f830152613a628184613942565b905092915050565b5f67ffffffffffffffff821115613a8457613a83612a3f565b5b602082029050602081019050919050565b5f81519050613aa38161257a565b92915050565b5f613abb613ab684613a6a565b612a9d565b90508083825260208201905060208402830185811115613ade57613add612bd6565b5b835b81811015613b075780613af38882613a95565b845260208401935050602081019050613ae0565b5050509392505050565b5f82601f830112613b2557613b24612a37565b5b8151613b35848260208601613aa9565b91505092915050565b5f60208284031215613b5357613b52612542565b5b5f82015167ffffffffffffffff811115613b7057613b6f612546565b5b613b7c84828501613b11565b91505092915050565b613b8e816126a6565b8114613b98575f80fd5b50565b5f81519050613ba981613b85565b92915050565b5f60208284031215613bc457613bc3612542565b5b5f613bd184828501613b9b565b91505092915050565b5f606082019050613bed5f83018661314d565b613bfa602083018561314d565b613c076040830184612a0f565b949350505050565b5f613c21613c1c84612ab7565b612a9d565b905082815260208101848484011115613c3d57613c3c612a3b565b5b613c488482856127af565b509392505050565b5f82601f830112613c6457613c63612a37565b5b8151613c74848260208601613c0f565b91505092915050565b5f81519050613c8b816126f0565b92915050565b5f613ca3613c9e8461317d565b612a9d565b90508083825260208201905060208402830185811115613cc657613cc5612bd6565b5b835b81811015613cef5780613cdb8882613c7d565b845260208401935050602081019050613cc8565b5050509392505050565b5f82601f830112613d0d57613d0c612a37565b5b8151613d1d848260208601613c91565b91505092915050565b5f81519050613d348161323d565b92915050565b5f6101608284031215613d5057613d4f613175565b5b613d5b610160612a9d565b90505f82015167ffffffffffffffff811115613d7a57613d79613179565b5b613d8684828501613c50565b5f830152506020613d9984828501613c7d565b6020830152506040613dad84828501613c7d565b6040830152506060613dc184828501613c7d565b6060830152506080613dd584828501613a95565b60808301525060a082015167ffffffffffffffff811115613df957613df8613179565b5b613e0584828501613c50565b60a08301525060c082015167ffffffffffffffff811115613e2957613e28613179565b5b613e3584828501613cf9565b60c08301525060e082015167ffffffffffffffff811115613e5957613e58613179565b5b613e6584828501613cf9565b60e083015250610100613e7a84828501613c7d565b61010083015250610120613e9084828501613d26565b61012083015250610140613ea684828501613d26565b6101408301525092915050565b5f60208284031215613ec857613ec7612542565b5b5f82015167ffffffffffffffff811115613ee557613ee4612546565b5b613ef184828501613d3a565b91505092915050565b5f60208284031215613f0f57613f0e612542565b5b5f613f1c84828501613c7d565b91505092915050565b5f82825260208201905092915050565b5f613f3f82612795565b613f498185613f25565b9350613f598185602086016127af565b613f62816127d7565b840191505092915050565b5f6020820190508181035f830152613f858184613f35565b905092915050565b5f60208284031215613fa257613fa1612542565b5b5f82015167ffffffffffffffff811115613fbf57613fbe612546565b5b613fcb84828501613cf9565b91505092915050565b5f60208284031215613fe957613fe8612542565b5b5f613ff684828501613d26565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614036826126d9565b9150614041836126d9565b925082820190506bffffffffffffffffffffffff81111561406557614064613fff565b5b92915050565b5f6140768385613f25565b9350614083838584612ae7565b61408c836127d7565b840190509392505050565b6140a081613435565b82525050565b5f60c0820190508181035f8301526140be818a6128ee565b90506140cd602083018961314d565b6140da6040830188612a0f565b81810360608301526140ed81868861406b565b90506140fc6080830185614097565b81810360a083015261410e8184613f35565b905098975050505050505050565b5f6020828403121561413157614130612542565b5b5f61413e84828501613a95565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261416f5761416e61414f565b5b83810192508235915060208301925067ffffffffffffffff82111561419757614196614147565b5b6001820236038313156141ad576141ac61414b565b5b509250929050565b5f6141c0838561279f565b93506141cd838584612ae7565b6141d6836127d7565b840190509392505050565b5f6141ef6020840184613253565b905092915050565b5f823560016080038336030381126142125761421161414f565b5b82810191505092915050565b5f6080830161422f5f840184614153565b8583035f8701526142418382846141b5565b925050506142526020840184614153565b85830360208701526142658382846141b5565b925050506142766040840184614153565b85830360408701526142898382846141b5565b9250505061429a6060840184614153565b85830360608701526142ad8382846141b5565b925050508091505092915050565b5f61012083016142cd5f840184614153565b8583035f8701526142df8382846141b5565b925050506142f06020840184614153565b85830360208701526143038382846141b5565b925050506143146040840184614153565b85830360408701526143278382846141b5565b925050506143386060840184614153565b858303606087015261434b8382846141b5565b9250505061435c6080840184614153565b858303608087015261436f8382846141b5565b9250505061438060a0840184614153565b85830360a08701526143938382846141b5565b925050506143a460c08401846141e1565b6143b160c08601826128df565b506143bf60e0840184614153565b85830360e08701526143d28382846141b5565b925050506143e46101008401846141f7565b8482036101008601526143f7828261421e565b9150508091505092915050565b5f6040820190508181035f83015261441c81856142bb565b905061442b602083018461314d565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f61014083016144715f840184614153565b8583035f8701526144838382846141b5565b925050506144946020840184614153565b85830360208701526144a78382846141b5565b925050506144b86040840184614153565b85830360408701526144cb8382846141b5565b925050506144dc6060840184614153565b85830360608701526144ef8382846141b5565b925050506145006080840184614153565b85830360808701526145138382846141b5565b9250505061452460a0840184614153565b85830360a08701526145378382846141b5565b9250505061454860c08401846141e1565b61455560c08601826128df565b5061456360e0840184614153565b85830360e08701526145768382846141b5565b925050506145886101008401846141f7565b84820361010086015261459b828261421e565b9150506145ac6101208401846141e1565b6145ba6101208601826128df565b508091505092915050565b5f6060820190508181035f8301526145dd818661445f565b90506145ec602083018561314d565b6145f960408301846126b1565b949350505050565b5f6020820190508181035f83015261461a81848661406b565b90509392505050565b5f6040820190506146365f830185612a0f565b6146436020830184612a0f565b9392505050565b5f6080828403121561465f5761465e613175565b5b6146696080612a9d565b90505f82015167ffffffffffffffff81111561468857614687613179565b5b61469484828501613c50565b5f83015250602082015167ffffffffffffffff8111156146b7576146b6613179565b5b6146c384828501613c50565b602083015250604082015167ffffffffffffffff8111156146e7576146e6613179565b5b6146f384828501613c50565b604083015250606082015167ffffffffffffffff81111561471757614716613179565b5b61472384828501613c50565b60608301525092915050565b5f610140828403121561474557614744613175565b5b614750610140612a9d565b90505f82015167ffffffffffffffff81111561476f5761476e613179565b5b61477b84828501613c50565b5f83015250602082015167ffffffffffffffff81111561479e5761479d613179565b5b6147aa84828501613c50565b602083015250604082015167ffffffffffffffff8111156147ce576147cd613179565b5b6147da84828501613c50565b604083015250606082015167ffffffffffffffff8111156147fe576147fd613179565b5b61480a84828501613c50565b606083015250608082015167ffffffffffffffff81111561482e5761482d613179565b5b61483a84828501613c50565b60808301525060a082015167ffffffffffffffff81111561485e5761485d613179565b5b61486a84828501613c50565b60a08301525060c061487e84828501613d26565b60c08301525060e082015167ffffffffffffffff8111156148a2576148a1613179565b5b6148ae84828501613c50565b60e08301525061010082015167ffffffffffffffff8111156148d3576148d2613179565b5b6148df8482850161464a565b610100830152506101206148f584828501613d26565b6101208301525092915050565b5f6020828403121561491757614916612542565b5b5f82015167ffffffffffffffff81111561493457614933612546565b5b6149408482850161472f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f614980826126d9565b91506bffffffffffffffffffffffff820361499e5761499d613fff565b5b600182019050919050565b5f602082840312156149be576149bd612542565b5b5f82015167ffffffffffffffff8111156149db576149da612546565b5b6149e784828501613c50565b91505092915050565b5f604082019050614a035f83018561314d565b8181036020830152614a158184613f35565b9050939250505056fea26469706673582212202d71a6535d2b2d3a383b486f3377d1f13548d1e9081ba26f7b5d6ca4eaf6a24664736f6c63430008180033000000000000000000000000f79641d66bf22e777f9cf74bdaf535cb253949090000000000000000000000001bd41c988fd8807a73e79cfb465df488e73d6c0d0000000000000000000000002ee70f0585d83f523ae876f86b8df2c6c8677a99