0 txs
6 calls
constructor
No constructor.
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
name
viewfunction name() view returns (string)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
pyramidVersion
purefunction pyramidVersion() pure returns (string)
s_arkadaRewarder
viewfunction s_arkadaRewarder() view returns (address)
s_isMintingActive
viewfunction s_isMintingActive() view returns (bool)
s_treasury
viewfunction s_treasury() view returns (address)
SIGNER_ROLE
viewfunction SIGNER_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 _tokenId) view returns (string _tokenURI)
approve
nonpayablefunction approve(address to, uint256 tokenId)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(string _tokenName, string _tokenSymbol, string _signingDomain, string _signatureVersion, address _admin, address _arkadaRewarder)
mintPyramid
payablefunction mintPyramid(tuple pyramidData, bytes signature) payable
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setArkadaRewarder
nonpayablefunction setArkadaRewarder(address _arkadaRewarder)
setIsMintingActive
nonpayablefunction setIsMintingActive(bool _isMintingActive)
setTreasury
nonpayablefunction setTreasury(address _treasury)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
withdraw
nonpayablefunction withdraw()
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
ClaimRewards
event ClaimRewards(address indexed user, uint256 amount)
ContractWithdrawal
event ContractWithdrawal(uint256 amount)
EIP712DomainChanged
event EIP712DomainChanged()
FeePayout
event FeePayout(address indexed recipient, uint256 amount)
Initialized
event Initialized(uint64 version)
MintingSwitch
event MintingSwitch(bool isActive)
PyramidClaim
event PyramidClaim(string questId, uint256 indexed tokenId, address indexed claimer, uint256 price, uint256 rewards, uint256 issueNumber, string walletProvider, string embedOrigin)
PyramidTransaction
event PyramidTransaction(uint256 indexed pyramidTokenId, string txHash, string networkChainId)
QuestDisabled
event QuestDisabled(uint256 indexed questId)
QuestMetadata
event QuestMetadata(uint256 indexed questId, uint8 questType, uint8 difficulty, string title, string[] tags, string[] communities)
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)
TokenReward
event TokenReward(uint256 indexed pyramidTokenId, address indexed tokenAddress, uint256 indexed chainId, uint256 amount, uint256 tokenId, uint8 tokenType)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
TreasuryPayout
event TreasuryPayout(address indexed caller, uint256 amount)
UpdatedArkadaRewarder
event UpdatedArkadaRewarder(address indexed newArkadaRewarder)
UpdatedTreasury
event UpdatedTreasury(address indexed newTreasury)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
Pyramid__BPSTooHigh
error Pyramid__BPSTooHigh()
Pyramid__ClaimRewardsFailed
error Pyramid__ClaimRewardsFailed()
Pyramid__ERC20TransferFailed
error Pyramid__ERC20TransferFailed()
Pyramid__ExceedsContractAllowance
error Pyramid__ExceedsContractAllowance()
Pyramid__ExceedsContractBalance
error Pyramid__ExceedsContractBalance()
Pyramid__ExcessiveFeePayout
error Pyramid__ExcessiveFeePayout()
Pyramid__FeeNotEnough
error Pyramid__FeeNotEnough()
Pyramid__InvalidAdminAddress
error Pyramid__InvalidAdminAddress()
Pyramid__IsNotSigner
error Pyramid__IsNotSigner()
Pyramid__MintedForQuestId
error Pyramid__MintedForQuestId()
Pyramid__MintingIsNotActive
error Pyramid__MintingIsNotActive()
Pyramid__NativePaymentFailed
error Pyramid__NativePaymentFailed()
Pyramid__NonceAlreadyUsed
error Pyramid__NonceAlreadyUsed()
Pyramid__QuestNotActive
error Pyramid__QuestNotActive()
Pyramid__SignatureAndCubesInputMismatch
error Pyramid__SignatureAndCubesInputMismatch()
Pyramid__TransferFailed
error Pyramid__TransferFailed()
Pyramid__TreasuryNotSet
error Pyramid__TreasuryNotSet()
Pyramid__WithdrawFailed
error Pyramid__WithdrawFailed()
Pyramid__ZeroAddress
error Pyramid__ZeroAddress()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
creation bytecode
0x608060405234801561001057600080fd5b50613674806100206000396000f3fe6080604052600436106101dc5760003560e01c806384b0196e11610102578063aab4160111610095578063c87b56dd11610064578063c87b56dd1461057e578063d547741f1461059e578063e985e9c5146105be578063f0f44260146105de57600080fd5b8063aab4160114610504578063b0eacef01461051e578063b88d4fde1461053e578063baea00631461055e57600080fd5b8063a1ebf35d116100d1578063a1ebf35d1461047b578063a217fddf146104af578063a22cb465146104c4578063a35d3d86146104e457600080fd5b806384b0196e1461040b57806391d14854146104335780639247c2f11461045357806395d89b411461046657600080fd5b80632f2ff15d1161017a57806358b80b631161014957806358b80b63146103865780636352211e146103ab57806370a08231146103cb5780637c54d334146103eb57600080fd5b80632f2ff15d1461031157806336568abe146103315780633ccfd60b1461035157806342842e0e1461036657600080fd5b8063095ea7b3116101b6578063095ea7b3146102775780631c8833f41461029957806323b872dd146102c3578063248a9ca3146102e357600080fd5b806301ffc9a7146101e857806306fdde031461021d578063081812fc1461023f57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b50610208610203366004612a4f565b6105fe565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023261060f565b6040516102149190612ab9565b34801561024b57600080fd5b5061025f61025a366004612acc565b6106b3565b6040516001600160a01b039091168152602001610214565b34801561028357600080fd5b50610297610292366004612b01565b6106c8565b005b3480156102a557600080fd5b506040805180820190915260018152603160f81b6020820152610232565b3480156102cf57600080fd5b506102976102de366004612b2b565b6106d7565b3480156102ef57600080fd5b506103036102fe366004612acc565b610767565b604051908152602001610214565b34801561031d57600080fd5b5061029761032c366004612b67565b610789565b34801561033d57600080fd5b5061029761034c366004612b67565b6107a5565b34801561035d57600080fd5b506102976107dd565b34801561037257600080fd5b50610297610381366004612b2b565b61088b565b34801561039257600080fd5b5060015461025f9061010090046001600160a01b031681565b3480156103b757600080fd5b5061025f6103c6366004612acc565b6108a6565b3480156103d757600080fd5b506103036103e6366004612b93565b6108b1565b3480156103f757600080fd5b50610297610406366004612b93565b61090d565b34801561041757600080fd5b50610420610992565b6040516102149796959493929190612bea565b34801561043f57600080fd5b5061020861044e366004612b67565b610a3e565b610297610461366004612c5a565b610a76565b34801561047257600080fd5b50610232610b23565b34801561048757600080fd5b506103037f2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca4081565b3480156104bb57600080fd5b50610303600081565b3480156104d057600080fd5b506102976104df366004612d09565b610b62565b3480156104f057600080fd5b506102976104ff366004612d33565b610b6d565b34801561051057600080fd5b506001546102089060ff1681565b34801561052a57600080fd5b5060065461025f906001600160a01b031681565b34801561054a57600080fd5b50610297610559366004612dd9565b610bc0565b34801561056a57600080fd5b50610297610579366004612e74565b610bd8565b34801561058a57600080fd5b50610232610599366004612acc565b610d81565b3480156105aa57600080fd5b506102976105b9366004612b67565b610e23565b3480156105ca57600080fd5b506102086105d9366004612f40565b610e3f565b3480156105ea57600080fd5b506102976105f9366004612b93565b610e8c565b600061060982610f09565b92915050565b6000805160206135df833981519152805460609190819061062f90612f6a565b80601f016020809104026020016040519081016040528092919081815260200182805461065b90612f6a565b80156106a85780601f1061067d576101008083540402835291602001916106a8565b820191906000526020600020905b81548152906001019060200180831161068b57829003601f168201915b505050505091505090565b60006106be82610f2e565b5061060982610f66565b6106d3828233610fa0565b5050565b6001600160a01b03821661070657604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610713838333610fad565b9050836001600160a01b0316816001600160a01b031614610761576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016106fd565b50505050565b600090815260008051602061361f833981519152602052604090206001015490565b61079282610767565b61079b816110b7565b61076183836110c4565b6001600160a01b03811633146107ce5760405163334bd91960e11b815260040160405180910390fd5b6107d88282611169565b505050565b60006107e8816110b7565b6040514790600090339083908381818185875af1925050503d806000811461082c576040519150601f19603f3d011682016040523d82523d6000602084013e610831565b606091505b50509050806108535760405163ab9c4d9360e01b815260040160405180910390fd5b6040518281527f6c9cf7ce96a10a51ae8b3fc5aca25e4754a77b3e821c133c5cebb1d30abe7e8e9060200160405180910390a1505050565b6107d883838360405180602001604052806000815250610bc0565b600061060982610f2e565b60006000805160206135df8339815191526001600160a01b0383166108ec576040516322718ad960e21b8152600060048201526024016106fd565b6001600160a01b039092166000908152600390920160205250604090205490565b6000610918816110b7565b6001600160a01b03821661093f5760405163dbc4ff9160e01b815260040160405180910390fd5b60018054610100600160a81b0319166101006001600160a01b038516908102919091179091556040517ff360d7fbd1f0e062b85624c921fa06d8812ada41ad0329ffec3b3bcc3c0a238990600090a25050565b600060608082808083816000805160206135ff83398151915280549091501580156109bf57506001810154155b610a035760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016106fd565b610a0b6111e5565b610a13611224565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b600091825260008051602061361f833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610a7e611263565b60015460ff16610aa15760405163316d9ce360e11b815260040160405180910390fd5b8260400135341015610ac657604051630b35bb1b60e21b815260040160405180910390fd5b6006546001600160a01b0316610aef5760405163017fb04160e41b815260040160405180910390fd5b610afa8383836112ad565b6107d860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060916000805160206135df8339815191529161062f90612f6a565b6106d33383836116e5565b6000610b78816110b7565b6001805460ff19168315159081179091556040519081527f7d16763644b2f7d5a11e2b05fe3a9cc4edb4568049295f4e62024269ae2f6eab9060200160405180910390a15050565b610bcb8484846106d7565b6107613385858585611796565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610c1d5750825b90506000826001600160401b03166001148015610c395750303b155b905081158015610c47575080155b15610c655760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c8f57845460ff60401b1916600160401b1785555b6001600160a01b038716610cb657604051638978bee160e01b815260040160405180910390fd5b6001600160a01b038616610cdd57604051638978bee160e01b815260040160405180910390fd5b610ce78b8b6118bf565b610cf189896118d1565b610cf96118e3565b610d016118ed565b600180546001600160a81b0319166101006001600160a01b038916021781179055610d2d6000886110c4565b508315610d7457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b6000818152600360205260409020805460609190610d9e90612f6a565b80601f0160208091040260200160405190810160405280929190818152602001828054610dca90612f6a565b8015610e175780601f10610dec57610100808354040283529160200191610e17565b820191906000526020600020905b815481529060010190602001808311610dfa57829003601f168201915b50505050509050919050565b610e2c82610767565b610e35816110b7565b6107618383611169565b6001600160a01b0391821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b6000610e97816110b7565b6001600160a01b038216610ebe5760405163dbc4ff9160e01b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0384169081179091556040517fa6df481f77da1f4c92eb330341e03585d46106fcf522f8e6b6b2afbea56eefdc90600090a25050565b60006001600160e01b03198216637965db0b60e01b14806106095750610609826118fd565b600080610f3a8361194d565b90506001600160a01b03811661060957604051637e27328960e01b8152600481018490526024016106fd565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031690565b6107d88383836001611987565b60006000805160206135df83398151915281610fc88561194d565b90506001600160a01b03841615610fe457610fe4818587611a9d565b6001600160a01b0381161561102457611001600086600080611987565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615611055576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b6110c18133611b01565b50565b600060008051602061361f8339815191526110df8484610a3e565b61115f576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556111153390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610609565b6000915050610609565b600060008051602061361f8339815191526111848484610a3e565b1561115f576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610609565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060916000805160206135ff8339815191529161062f90612f6a565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060916000805160206135ff8339815191529161062f90612f6a565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008054600119016112a757604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6000546112bb848484611b3a565b60005b6112cb60e0860186612fa4565b905081101561138c57817f0fca616e0a3276669304f4f5ca08302861554297e62031e305658e77b7fd39eb61130360e0880188612fa4565b8481811061131357611313612ff4565b9050602002810190611325919061300a565b61132f908061302a565b61133c60e08a018a612fa4565b8681811061134c5761134c612ff4565b905060200281019061135e919061300a565b61136c90602081019061302a565b60405161137c9493929190613099565b60405180910390a26001016112be565b5061139a60a085018561302a565b6000838152600360205260409020916113b4919083613113565b5060006113c1858061302a565b6040516113cf9291906131d2565b60405190819003902090506000816113ed6080880160608901612b93565b60405160200161141992919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b60408051601f1981840301815291815281516020928301206000818152600590935291205490915060ff161561146257604051636683977760e11b815260040160405180910390fd5b6000818152600560209081526040808320805460ff1916600190811790915585845260029092528220805482019055815401905561149f86611bea565b6114b86114b26080880160608901612b93565b8461205e565b6114c86080870160608801612b93565b6001600160a01b0316837f7b7188b14b1a89406b609ab3d2c18b85c1e7ee16c9165d63fc527274207e494f6114fd898061302a565b6000878152600260205260409081902054908c0135906101608d01359061152760808f018f61302a565b8f8060c00190611537919061302a565b60405161154c999897969594939291906131e2565b60405180910390a3610140860135156116b757600061157361020088016101e08901612b93565b6001600160a01b0316146116405761159361020087016101e08801612b93565b6001600160a01b031663ff02f4c4836115b46101408a016101208b01612b93565b6115c460808b0160608c01612b93565b6101608b01356101808c01356115e26101c08e016101a08f01613240565b8d6101200160a001356040518863ffffffff1660e01b815260040161160d9796959493929190613299565b600060405180830381600087803b15801561162757600080fd5b505af115801561163b573d6000803e3d6000fd5b505050505b6101408601803590611656906101208901612b93565b6001600160a01b0316847f6d6039156ec873b5c217b996d727775a9eea208e1329e87aaa4b617c76d2bb946101608a01356101808b013561169f6101c08d016101a08e01613240565b6040516116ae939291906132e4565b60405180910390a45b505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000805160206135df8339815191526001600160a01b03831661172657604051630b61174360e31b81526001600160a01b03841660048201526024016106fd565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b0383163b156118b857604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906117d89088908890879087906004016132ff565b6020604051808303816000875af1925050508015611813575060408051601f3d908101601f191682019092526118109181019061333c565b60015b61187c573d808015611841576040519150601f19603f3d011682016040523d82523d6000602084013e611846565b606091505b50805160000361187457604051633250574960e11b81526001600160a01b03851660048201526024016106fd565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146116b757604051633250574960e11b81526001600160a01b03851660048201526024016106fd565b5050505050565b6118c7612078565b6106d382826120c1565b6118d9612078565b6106d382826120f2565b6118eb612078565b565b6118f5612078565b6118eb612153565b60006001600160e01b031982166380ac58cd60e01b148061192e57506001600160e01b03198216635b5e139f60e01b145b8061060957506301ffc9a760e01b6001600160e01b0319831614610609565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260409020546001600160a01b031690565b6000805160206135df83398151915281806119aa57506001600160a01b03831615155b15611a6c5760006119ba85610f2e565b90506001600160a01b038416158015906119e65750836001600160a01b0316816001600160a01b031614155b80156119f957506119f78185610e3f565b155b15611a225760405163a9fbf51f60e01b81526001600160a01b03851660048201526024016106fd565b8215611a6a5784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b611aa883838361215b565b6107d8576001600160a01b038316611ad657604051637e27328960e01b8152600481018290526024016106fd565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016106fd565b611b0b8282610a3e565b6106d35760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016106fd565b6000611b478484846121c1565b9050611b737f2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca4082610a3e565b611b905760405163665eb21560e11b815260040160405180910390fd5b60208085013560009081526004909152604090205460ff1615611bc657604051631ed11f5b60e31b815260040160405180910390fd5b5050506020908101356000908152600490915260409020805460ff19166001179055565b600080611bfb610100840184613359565b905090506000816001600160401b03811115611c1957611c19612d4e565b604051908082528060200260200182016040528015611c42578160200160208202803683370190505b5090506000826001600160401b03811115611c5f57611c5f612d4e565b604051908082528060200260200182016040528015611c88578160200160208202803683370190505b5090506000611c9b610100870187613359565b90501115611eb7576127104760005b611cb8610100890189613359565b9050811015611eb35761ffff8316611cd46101008a018a613359565b83818110611ce457611ce4612ff4565b9050604002016020016020810190611cfc91906133a2565b61ffff161115611d1f5760405163bc7a787560e01b815260040160405180910390fd5b600061ffff8416611d346101008b018b613359565b84818110611d4457611d44612ff4565b9050604002016020016020810190611d5c91906133a2565b611d6e9061ffff1660408c01356133dc565b611d7891906133f3565b9050611d848189613415565b97508860400135881115611dab576040516387b8ba2b60e01b815260040160405180910390fd5b82881115611dcc57604051632a90c7cd60e01b815260040160405180910390fd5b6000611ddc6101008b018b613359565b84818110611dec57611dec612ff4565b611e029260206040909202019081019150612b93565b90506001600160a01b03811615611ea95780878481518110611e2657611e26612ff4565b60200260200101906001600160a01b031690816001600160a01b03168152505081868481518110611e5957611e59612ff4565b602002602001018181525050806001600160a01b03167fc9a9861643a061bfa3739f3b26e5d64578cd78bb863dbd5dac0aca396728d9a783604051611ea091815260200190565b60405180910390a25b5050600101611caa565b5050505b600154604051632cad487960e11b81526101009091046001600160a01b03169063595a90f290611eed9085908590600401613428565b600060405180830381600087803b158015611f0757600080fd5b505af1158015611f1b573d6000803e3d6000fd5b5050600154604051600093506101009091046001600160a01b0316915086908381818185875af1925050503d8060008114611f72576040519150601f19603f3d011682016040523d82523d6000602084013e611f77565b606091505b5050905080611f995760405163d6d25e5f60e01b815260040160405180910390fd5b6000611fa986604089013561347f565b6006546040519192506001600160a01b0316908290600081818185875af1925050503d8060008114611ff7576040519150601f19603f3d011682016040523d82523d6000602084013e611ffc565b606091505b5050809250508161202057604051633b8a926f60e11b815260040160405180910390fd5b60405181815233907f6bce7f013e73cb844d353c7d5bb67ee29f888be4311ad86fa3cfbdb63c70ad809060200160405180910390a250505050505050565b6106d382826040518060200160405280600081525061221a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166118eb57604051631afcd79f60e31b815260040160405180910390fd5b6120c9612078565b6000805160206135df833981519152806120e38482613492565b50600181016107618382613492565b6120fa612078565b6000805160206135ff8339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026121348482613492565b50600381016121438382613492565b5060008082556001909101555050565b6116bf612078565b60006001600160a01b038316158015906121b95750826001600160a01b0316846001600160a01b0316148061219557506121958484610e3f565b806121b95750826001600160a01b03166121ae83610f66565b6001600160a01b0316145b949350505050565b6000806121cd85612232565b905061221184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859392505061224c9050565b95945050505050565b6122248383612276565b6107d8336000858585611796565b6000610609612240836122db565b80519060200120612404565b60008060008061225c8686612431565b92509250925061226c828261247e565b5090949350505050565b6001600160a01b0382166122a057604051633250574960e11b8152600060048201526024016106fd565b60006122ae83836000610fad565b90506001600160a01b038116156107d8576040516339e3563760e11b8152600060048201526024016106fd565b60607fd324a507e8b73b2be9ac44e0451b9a05ff7ce0dc7791ef920e0b4cff33050efb61231061230b848061302a565b612537565b6020840135604085013561232a6080870160608801612b93565b61233a61230b608089018961302a565b61234a61230b60a08a018a61302a565b61235a61230b60c08b018b61302a565b61236f61236a60e08c018c612fa4565b612559565b6123856123806101008d018d613359565b612634565b6123928c610120016126d2565b60408051602081019c909c528b019990995260608a019790975260808901959095526001600160a01b0390931660a088015260c087019190915260e0860152610100850152610120840152610140830152610160820152610180015b6040516020818303038152906040529050919050565b600061060961241161276a565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000835160410361246b5760208401516040850151606086015160001a61245d88828585612779565b955095509550505050612477565b50508151600091506002905b9250925092565b600082600381111561249257612492613261565b0361249b575050565b60018260038111156124af576124af613261565b036124cd5760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156124e1576124e1613261565b036125025760405163fce698f760e01b8152600481018290526024016106fd565b600382600381111561251657612516613261565b036106d3576040516335e2f38360e21b8152600481018290526024016106fd565b600082826040516125499291906131d2565b6040518091039020905092915050565b600080826001600160401b0381111561257457612574612d4e565b60405190808252806020026020018201604052801561259d578160200160208202803683370190505b50905060005b83811015612603576125d78585838181106125c0576125c0612ff4565b90506020028101906125d2919061300a565b612848565b805190602001208282815181106125f0576125f0612ff4565b60209081029190910101526001016125a3565b50806040516020016126159190613551565b6040516020818303038152906040528051906020012091505092915050565b600080826001600160401b0381111561264f5761264f612d4e565b604051908082528060200260200182016040528015612678578160200160208202803683370190505b50905060005b83811015612603576126a685858381811061269b5761269b612ff4565b9050604002016128a7565b805190602001208282815181106126bf576126bf612ff4565b602090810291909101015260010161267e565b60007f07dcd7fc8540e6630daaa95c4bf6d1951796f3e22e2e1c1bcbdbd5055c7ab37c6127026020840184612b93565b60208401356040850135606086013561272160a0880160808901613240565b60a088013561273660e08a0160c08b01612b93565b60405160200161274d989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b6000612774612917565b905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156127b4575060009150600390508261283e565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612808573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128345750600092506001915082905061283e565b9250600091508190505b9450945094915050565b60607f93dc1bac6b117acdbb889b9a825b9bc731449f703cc02b69049722fcba5dbe3461287861230b848061302a565b61288861230b602086018661302a565b60408051602081019490945283019190915260608201526080016123ee565b60607fdf3d1189f68f42c28f9fad9d69ff7a974d0a800a2e4420ed400e45a46d2fac2f6128d76020840184612b93565b6128e760408501602086016133a2565b6040516020016123ee939291909283526001600160a01b0391909116602083015261ffff16604082015260600190565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61294261298b565b61294a6129f5565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60006000805160206135ff833981519152816129a56111e5565b8051909150156129bd57805160209091012092915050565b815480156129cc579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b60006000805160206135ff83398151915281612a0f611224565b805190915015612a2757805160209091012092915050565b600182015480156129cc579392505050565b6001600160e01b0319811681146110c157600080fd5b600060208284031215612a6157600080fd5b8135612a6c81612a39565b9392505050565b6000815180845260005b81811015612a9957602081850181015186830182015201612a7d565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000612a6c6020830184612a73565b600060208284031215612ade57600080fd5b5035919050565b80356001600160a01b0381168114612afc57600080fd5b919050565b60008060408385031215612b1457600080fd5b612b1d83612ae5565b946020939093013593505050565b600080600060608486031215612b4057600080fd5b612b4984612ae5565b9250612b5760208501612ae5565b9150604084013590509250925092565b60008060408385031215612b7a57600080fd5b82359150612b8a60208401612ae5565b90509250929050565b600060208284031215612ba557600080fd5b612a6c82612ae5565b60008151808452602080850194506020840160005b83811015612bdf57815187529582019590820190600101612bc3565b509495945050505050565b60ff60f81b8816815260e060208201526000612c0960e0830189612a73565b8281036040840152612c1b8189612a73565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050612c4c8185612bae565b9a9950505050505050505050565b600080600060408486031215612c6f57600080fd5b83356001600160401b0380821115612c8657600080fd5b908501906102008288031215612c9b57600080fd5b90935060208501359080821115612cb157600080fd5b818601915086601f830112612cc557600080fd5b813581811115612cd457600080fd5b876020828501011115612ce657600080fd5b6020830194508093505050509250925092565b80358015158114612afc57600080fd5b60008060408385031215612d1c57600080fd5b612d2583612ae5565b9150612b8a60208401612cf9565b600060208284031215612d4557600080fd5b612a6c82612cf9565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b0380841115612d7e57612d7e612d4e565b604051601f8501601f19908116603f01168101908282118183101715612da657612da6612d4e565b81604052809350858152868686011115612dbf57600080fd5b858560208301376000602087830101525050509392505050565b60008060008060808587031215612def57600080fd5b612df885612ae5565b9350612e0660208601612ae5565b92506040850135915060608501356001600160401b03811115612e2857600080fd5b8501601f81018713612e3957600080fd5b612e4887823560208401612d64565b91505092959194509250565b600082601f830112612e6557600080fd5b612a6c83833560208501612d64565b60008060008060008060c08789031215612e8d57600080fd5b86356001600160401b0380821115612ea457600080fd5b612eb08a838b01612e54565b97506020890135915080821115612ec657600080fd5b612ed28a838b01612e54565b96506040890135915080821115612ee857600080fd5b612ef48a838b01612e54565b95506060890135915080821115612f0a57600080fd5b50612f1789828a01612e54565b935050612f2660808801612ae5565b9150612f3460a08801612ae5565b90509295509295509295565b60008060408385031215612f5357600080fd5b612f5c83612ae5565b9150612b8a60208401612ae5565b600181811c90821680612f7e57607f821691505b602082108103612f9e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e19843603018112612fbb57600080fd5b8301803591506001600160401b03821115612fd557600080fd5b6020019150600581901b3603821315612fed57600080fd5b9250929050565b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261302057600080fd5b9190910192915050565b6000808335601e1984360301811261304157600080fd5b8301803591506001600160401b0382111561305b57600080fd5b602001915036819003821315612fed57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006130ad604083018688613070565b82810360208401526130c0818587613070565b979650505050505050565b601f8211156107d8576000816000526020600020601f850160051c810160208610156130f45750805b601f850160051c820191505b818110156116b757828155600101613100565b6001600160401b0383111561312a5761312a612d4e565b61313e836131388354612f6a565b836130cb565b6000601f841160018114613172576000851561315a5750838201355b600019600387901b1c1916600186901b1783556118b8565b600083815260209020601f19861690835b828110156131a35786850135825560209485019460019092019101613183565b50868210156131c05760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8183823760009101908152919050565b60c0815260006131f660c083018b8d613070565b896020840152886040840152876060840152828103608084015261321b818789613070565b905082810360a0840152613230818587613070565b9c9b505050505050505050505050565b60006020828403121561325257600080fd5b813560048110612a6c57600080fd5b634e487b7160e01b600052602160045260246000fd5b6004811061329557634e487b7160e01b600052602160045260246000fd5b9052565b8781526001600160a01b03878116602083015286166040820152606081018590526080810184905260e081016132d260a0830185613277565b8260c083015298975050505050505050565b83815260208101839052606081016121b96040830184613277565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061333290830184612a73565b9695505050505050565b60006020828403121561334e57600080fd5b8151612a6c81612a39565b6000808335601e1984360301811261337057600080fd5b8301803591506001600160401b0382111561338a57600080fd5b6020019150600681901b3603821315612fed57600080fd5b6000602082840312156133b457600080fd5b813561ffff81168114612a6c57600080fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610609576106096133c6565b60008261341057634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610609576106096133c6565b604080825283519082018190526000906020906060840190828701845b8281101561346a5781516001600160a01b031684529284019290840190600101613445565b50505083810360208501526133328186612bae565b81810381811115610609576106096133c6565b81516001600160401b038111156134ab576134ab612d4e565b6134bf816134b98454612f6a565b846130cb565b602080601f8311600181146134f457600084156134dc5750858301515b600019600386901b1c1916600185901b1785556116b7565b600085815260208120601f198616915b8281101561352357888601518255948401946001909101908401613504565b50858210156135415787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b815160009082906020808601845b8381101561357b5781518552938201939082019060010161355f565b50929695505050505050565b8881526001600160a01b0388811660208301526040820188905260608201879052608082018690526101008201906135c260a0840187613277565b8460c084015280841660e084015250999850505050505050505056fe80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220c00da88857596aa699530d2e43ee22cedc3dac4389e26171d0ae2bb14ccd522164736f6c63430008160033