0 txs
36 calls
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
cubeVersion
purefunction cubeVersion() pure returns (string)
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)
isQuestActive
viewfunction isQuestActive(uint256 questId) view returns (bool)
name
viewfunction name() view returns (string)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
s_isMintingActive
viewfunction s_isMintingActive() view returns (bool)
s_l3Token
viewfunction s_l3Token() view returns (address)
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)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
UPGRADER_ROLE
viewfunction UPGRADER_ROLE() view returns (bytes32)
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)
initializeQuest
nonpayablefunction initializeQuest(uint256 questId, string[] communities, string title, uint8 difficulty, uint8 questType, string[] tags)
mintCube
payablefunction mintCube(tuple cubeData, 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)
setIsMintingActive
nonpayablefunction setIsMintingActive(bool _isMintingActive)
setL3TokenAddress
nonpayablefunction setL3TokenAddress(address _l3)
setTreasury
nonpayablefunction setTreasury(address _treasury)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
unpublishQuest
nonpayablefunction unpublishQuest(uint256 questId)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
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)
ContractWithdrawal
event ContractWithdrawal(uint256 amount)
CubeClaim
event CubeClaim(uint256 indexed questId, uint256 indexed tokenId, address indexed claimer, bool isNative, uint256 price, uint256 issueNumber, string walletProvider, string embedOrigin)
CubeTransaction
event CubeTransaction(uint256 indexed cubeTokenId, string txHash, string networkChainId)
EIP712DomainChanged
event EIP712DomainChanged()
FeePayout
event FeePayout(address indexed recipient, uint256 amount, bool isNative)
Initialized
event Initialized(uint64 version)
MintingSwitch
event MintingSwitch(bool isActive)
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 cubeTokenId, address indexed tokenAddress, uint256 indexed chainId, uint256 amount, uint256 tokenId, uint8 tokenType)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
UpdatedL3Address
event UpdatedL3Address(address indexed token)
UpdatedTreasury
event UpdatedTreasury(address indexed newTreasury)
Upgraded
event Upgraded(address indexed implementation)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
CUBE__BPSTooHigh
error CUBE__BPSTooHigh()
CUBE__ERC20TransferFailed
error CUBE__ERC20TransferFailed()
CUBE__ExceedsContractAllowance
error CUBE__ExceedsContractAllowance()
CUBE__ExceedsContractBalance
error CUBE__ExceedsContractBalance()
CUBE__ExcessiveFeePayout
error CUBE__ExcessiveFeePayout()
CUBE__FeeNotEnough
error CUBE__FeeNotEnough()
CUBE__InvalidAdminAddress
error CUBE__InvalidAdminAddress()
CUBE__IsNotSigner
error CUBE__IsNotSigner()
CUBE__L3TokenNotSet
error CUBE__L3TokenNotSet()
CUBE__MintingIsNotActive
error CUBE__MintingIsNotActive()
CUBE__NativePaymentFailed
error CUBE__NativePaymentFailed()
CUBE__NonceAlreadyUsed
error CUBE__NonceAlreadyUsed()
CUBE__QuestNotActive
error CUBE__QuestNotActive()
CUBE__SignatureAndCubesInputMismatch
error CUBE__SignatureAndCubesInputMismatch()
CUBE__TransferFailed
error CUBE__TransferFailed()
CUBE__TreasuryNotSet
error CUBE__TreasuryNotSet()
CUBE__WithdrawFailed
error CUBE__WithdrawFailed()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
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)
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614d6f620001046000396000818161189a015281816118c30152611a950152614d6f6000f3fe6080604052600436106102855760003560e01c806386954d5b11610153578063ad170ff7116100cb578063d547741f1161007f578063f0f4426011610064578063f0f4426014610810578063f72c0d8b14610830578063f907497c1461086457600080fd5b8063d547741f14610788578063e985e9c5146107a857600080fd5b8063b0eacef0116100b0578063b0eacef014610728578063b88d4fde14610748578063c87b56dd1461076857600080fd5b8063ad170ff7146106bf578063ad3cb1cc146106df57600080fd5b8063a1ebf35d11610122578063a22cb46511610107578063a22cb46514610665578063a35d3d8614610685578063aab41601146106a557600080fd5b8063a1ebf35d1461061c578063a217fddf1461065057600080fd5b806386954d5b1461055f57806391d148541461058f57806395d89b41146105f45780639aaa78781461060957600080fd5b80632f2ff15d116102015780634f1ef286116101b55780636352211e1161019a5780636352211e146104f757806370a082311461051757806384b0196e1461053757600080fd5b80634f1ef286146104cf57806352d1902d146104e257600080fd5b806336873808116101e6578063368738081461047a5780633ccfd60b1461049a57806342842e0e146104af57600080fd5b80632f2ff15d1461043a57806336568abe1461045a57600080fd5b8063095ea7b311610258578063248a9ca31161023d578063248a9ca31461039d5780632c639104146103fa5780632e6400241461041a57600080fd5b8063095ea7b31461035b57806323b872dd1461037d57600080fd5b806301ffc9a71461028a57806302e4da09146102bf57806306fdde031461030e578063081812fc14610323575b600080fd5b34801561029657600080fd5b506102aa6102a5366004613db2565b610884565b60405190151581526020015b60405180910390f35b3480156102cb57600080fd5b5060408051808201909152600181527f330000000000000000000000000000000000000000000000000000000000000060208201525b6040516102b69190613e1f565b34801561031a57600080fd5b50610301610895565b34801561032f57600080fd5b5061034361033e366004613e32565b61094b565b6040516001600160a01b0390911681526020016102b6565b34801561036757600080fd5b5061037b610376366004613e67565b610993565b005b34801561038957600080fd5b5061037b610398366004613e91565b6109a2565b3480156103a957600080fd5b506103ec6103b8366004613e32565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016102b6565b34801561040657600080fd5b5061037b610415366004613ecd565b610a64565b34801561042657600080fd5b5061037b610435366004613fb8565b610ad2565b34801561044657600080fd5b5061037b610455366004614076565b610cd1565b34801561046657600080fd5b5061037b610475366004614076565b610d15565b34801561048657600080fd5b50600754610343906001600160a01b031681565b3480156104a657600080fd5b5061037b610d66565b3480156104bb57600080fd5b5061037b6104ca366004613e91565b610e2d565b61037b6104dd3660046140a2565b610e48565b3480156104ee57600080fd5b506103ec610e63565b34801561050357600080fd5b50610343610512366004613e32565b610e92565b34801561052357600080fd5b506103ec610532366004613ecd565b610e9d565b34801561054357600080fd5b5061054c610f24565b6040516102b697969594939291906140f0565b34801561056b57600080fd5b506102aa61057a366004613e32565b60009081526005602052604090205460ff1690565b34801561059b57600080fd5b506102aa6105aa366004614076565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561060057600080fd5b50610301611020565b61037b6106173660046141a2565b611071565b34801561062857600080fd5b506103ec7f2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca4081565b34801561065c57600080fd5b506103ec600081565b34801561067157600080fd5b5061037b610680366004614250565b6111c0565b34801561069157600080fd5b5061037b6106a0366004614287565b6111cb565b3480156106b157600080fd5b506001546102aa9060ff1681565b3480156106cb57600080fd5b5061037b6106da366004613e32565b61121e565b3480156106eb57600080fd5b506103016040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561073457600080fd5b50600654610343906001600160a01b031681565b34801561075457600080fd5b5061037b6107633660046142a4565b611289565b34801561077457600080fd5b50610301610783366004613e32565b6112a0565b34801561079457600080fd5b5061037b6107a3366004614076565b611342565b3480156107b457600080fd5b506102aa6107c336600461430c565b6001600160a01b0391821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b34801561081c57600080fd5b5061037b61082b366004613ecd565b611386565b34801561083c57600080fd5b506103ec7fa615a8afb6fffcb8c6809ac0997b5c9c12b8cc97651150f14c8f6203168cff4c81565b34801561087057600080fd5b5061037b61087f3660046143e4565b6113f4565b600061088f82611482565b92915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930080546060919081906108c79061449f565b80601f01602080910402602001604051908101604052809291908181526020018280546108f39061449f565b80156109405780601f1061091557610100808354040283529160200191610940565b820191906000526020600020905b81548152906001019060200180831161092357829003601f168201915b505050505091505090565b6000610956826114d8565b5060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031661088f565b61099e828233611549565b5050565b6001600160a01b0382166109ea576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b60006109f7838333611556565b9050836001600160a01b0316816001600160a01b031614610a5e576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b03808616600483015260248201849052821660448201526064016109e1565b50505050565b6000610a6f816116cf565b600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556040517f88df21fc982b8dd1cc9fd7a32963b30aa30883b5c3d4e4fd3278688b9e41384e90600090a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610b1d5750825b905060008267ffffffffffffffff166001148015610b3a5750303b155b905081158015610b48575080155b15610b7f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610be05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616610c20576040517feebe105b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c2a8a8a6116dc565b610c3488886116ee565b610c3c611700565b610c44611700565b610c4c61170a565b6001805460ff191681179055610c6360008761171a565b508315610cc55784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610d0b816116cf565b610a5e838361171a565b6001600160a01b0381163314610d57576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d6182826117e9565b505050565b6000610d71816116cf565b6040514790600090339083908381818185875af1925050503d8060008114610db5576040519150601f19603f3d011682016040523d82523d6000602084013e610dba565b606091505b5050905080610df5576040517f2baafbf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518281527f6c9cf7ce96a10a51ae8b3fc5aca25e4754a77b3e821c133c5cebb1d30abe7e8e9060200160405180910390a1505050565b610d6183838360405180602001604052806000815250611289565b610e5061188f565b610e598261195f565b61099e8282611989565b6000610e6d611a8a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061088f826114d8565b60007f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793006001600160a01b038316610f03576040517f89c62b64000000000000000000000000000000000000000000000000000000008152600060048201526024016109e1565b6001600160a01b039092166000908152600390920160205250604090205490565b600060608082808083817fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008054909150158015610f6357506001810154155b610fc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a6564000000000000000000000060448201526064016109e1565b610fd1611aec565b610fd9611b3d565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009c939b5091995046985030975095509350915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300916108c79061449f565b611079611b8e565b60015460ff166110b5576040517f9d2c8e7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110c56080840160608501614287565b15611108578260400135341015611108576040517fea259f9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007546001600160a01b031661114a576040517f0222575700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006546001600160a01b031661118c576040517f52d02b4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611197838383611c0f565b610d6160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61099e338383611fc0565b60006111d6816116cf565b6001805460ff19168315159081179091556040519081527f7d16763644b2f7d5a11e2b05fe3a9cc4edb4568049295f4e62024269ae2f6eab9060200160405180910390a15050565b7f2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca40611248816116cf565b600082815260056020526040808220805460ff191690555183917f5de3fc4fb6d1f5f0d44014df7fcc3824b081ef3fc3946a361a7cc926a499035191a25050565b6112948484846109a2565b610a5e8484848461209c565b60008181526003602052604090208054606091906112bd9061449f565b80601f01602080910402602001604051908101604052809291908181526020018280546112e99061449f565b80156113365780601f1061130b57610100808354040283529160200191611336565b820191906000526020600020905b81548152906001019060200180831161131957829003601f168201915b50505050509050919050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461137c816116cf565b610a5e83836117e9565b6000611391816116cf565b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556040517fa6df481f77da1f4c92eb330341e03585d46106fcf522f8e6b6b2afbea56eefdc90600090a25050565b7f2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca4061141e816116cf565b60008781526005602052604090819020805460ff191660011790555187907f8a2c815542d43af541960cd9124f5ec6a55c4b8c69f0dda02ed413b401e309cd9061147190869088908a9088908d90614576565b60405180910390a250505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061088f575061088f82612241565b60008181527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120546001600160a01b03168061088f576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018490526024016109e1565b610d618383836001612324565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120547f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300906001600160a01b03908116908416156115c4576115c48185876124bb565b6001600160a01b03811615611622576115e1600086600080612324565b6001600160a01b0381166000908152600383016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b6001600160a01b03861615611653576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a49150505b9392505050565b6116d98133612551565b50565b6116e46125de565b61099e8282612645565b6116f66125de565b61099e8282612688565b6117086125de565b565b6117126125de565b6117086126fb565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166117df576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117953390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061088f565b600091505061088f565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156117df576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061088f565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061192857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661191c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611708576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa615a8afb6fffcb8c6809ac0997b5c9c12b8cc97651150f14c8f6203168cff4c61099e816116cf565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119e3575060408051601f3d908101601f191682019092526119e0918101906145db565b60015b611a24576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016109e1565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611a80576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016109e1565b610d618383612703565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611708576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100916108c79061449f565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100916108c79061449f565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611c09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b600054611c1d848484612759565b60005b611c2e6101008601866145f4565b9050811015611cf157817fabd48d213cb20ec6f191e95c191131c8fc3832f194f53febcb53d4834baae507611c676101008801886145f4565b84818110611c7757611c77614663565b9050602002810190611c899190614692565b611c9390806146d0565b611ca16101008a018a6145f4565b86818110611cb157611cb1614663565b9050602002810190611cc39190614692565b611cd19060208101906146d0565b604051611ce19493929190614760565b60405180910390a2600101611c20565b50611cff60c08501856146d0565b600083815260036020526040902091611d199190836147e0565b5083356000908152600260205260408120805460019081019091558154019055611d496080850160608601614287565b611d5b57611d568461284d565b611d64565b611d6484612e04565b611d7d611d7760a0860160808701613ecd565b82613162565b611d8d60a0850160808601613ecd565b6001600160a01b03168185357f930704bea5bf0c2a8d5d407a6b83b3b0ad8cf3248cc1e4dff5cd4d667710da48611dca6080890160608a01614287565b88356000908152600260205260409081902054908a013590611def60a08c018c6146d0565b611dfc60e08e018e6146d0565b604051611e0f97969594939291906148dc565b60405180910390a461016084013515610a5e576000611e3661022086016102008701613ecd565b6001600160a01b031614611f1e57611e5661022085016102008601613ecd565b6001600160a01b031663e836239c8535611e7861016088016101408901613ecd565b611e8860a0890160808a01613ecd565b6101808901356101a08a0135611ea66101e08c016101c08d01614925565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168152611eeb969594939291906101e08e01359060040161495a565b600060405180830381600087803b158015611f0557600080fd5b505af1158015611f19573d6000803e3d6000fd5b505050505b6101608401803590611f34906101408701613ecd565b6001600160a01b0316827f6d6039156ec873b5c217b996d727775a9eea208e1329e87aaa4b617c76d2bb946101808801356101a0890135611f7d6101e08b016101c08c01614925565b604051611f8c939291906149a5565b60405180910390a450505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793006001600160a01b03831661202c576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016109e1565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b0383163b15610a5e576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063150b7a02906120f79033908890879087906004016149c0565b6020604051808303816000875af1925050508015612132575060408051601f3d908101601f1916820190925261212f918101906149fc565b60015b6121b4573d808015612160576040519150601f19603f3d011682016040523d82523d6000602084013e612165565b606091505b5080516000036121ac576040517f64a0ae920000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016109e1565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a02000000000000000000000000000000000000000000000000000000001461223a576040517f64a0ae920000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016109e1565b5050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806122d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061088f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461088f565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300818061235957506001600160a01b03831615155b15612472576000612369856114d8565b90506001600160a01b038416158015906123955750836001600160a01b0316816001600160a01b031614155b80156123e657506001600160a01b0380821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209388168352929052205460ff16155b15612428576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016109e1565b82156124705784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6124c683838361317c565b610d61576001600160a01b03831661250d576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018290526024016109e1565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602481018290526044016109e1565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661099e576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016109e1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611708576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61264d6125de565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300806126798482614a19565b5060018101610a5e8382614a19565b6126906125de565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026126dc8482614a19565b50600381016126eb8382614a19565b5060008082556001909101555050565b611f9a6125de565b61270c82613240565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561275157610d6182826132e8565b61099e61335e565b6000612766848484613396565b6001600160a01b03811660009081527fbc6704768de17ac743a4c41122099f7a3464fc20363467b8527e22c7572f5d3a602052604090205490915060ff166127da576040517f0f3c13fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208085013560009081526004909152604090205460ff1615612829576040517f76abf21400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050506020908101356000908152600490915260409020805460ff19166001179055565b60008061285e610120840184614b15565b90501115612c7f576007546040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152612710916000916001600160a01b039091169063dd62ed3e90604401602060405180830381865afa1580156128d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f891906145db565b905060005b61290b610120860186614b15565b9050811015612c7b5761ffff8316612927610120870187614b15565b8381811061293757612937614663565b905060400201602001602081019061294f9190614b7d565b61ffff16111561298b576040517f635015ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061ffff84166129a0610120880188614b15565b848181106129b0576129b0614663565b90506040020160200160208101906129c89190614b7d565b6129da9061ffff166040890135614bd0565b6129e49190614be7565b90506129f08186614c22565b94508560400135851115612a30576040517fcc3b3ebc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82851115612a6a576040517f714f10f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612a7a610120880188614b15565b84818110612a8a57612a8a614663565b612aa09260206040909202019081019150613ecd565b90506001600160a01b03811615612c71576007546040805160608101909152602580825260009283926001600160a01b0390911691614d15602083013980516020909101206040513360248201526001600160a01b03861660448201526064810187905260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051612b729190614c35565b6000604051808303816000865af19150503d8060008114612baf576040519150601f19603f3d011682016040523d82523d6000602084013e612bb4565b606091505b5091509150811580612be3575060008151118015612be3575080806020019051810190612be19190614c47565b155b15612c1a576040517fe6fbf80200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383167ffe712e2041ac22747996060fcaf7287e627bbbd537f7e9edb81d85916a3a31b585612c5660808d0160608e01614287565b6040805192835290151560208301520160405180910390a250505b50506001016128fd565b5050505b6000612c8f826040850135614c64565b90508015610d61576007546040805160608101909152602580825260009283926001600160a01b0390911691614d15602083013980516020909101206006546040513360248201526001600160a01b0390911660448201526064810186905260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051612d5c9190614c35565b6000604051808303816000865af19150503d8060008114612d99576040519150601f19603f3d011682016040523d82523d6000602084013e612d9e565b606091505b5091509150811580612dcd575060008151118015612dcd575080806020019051810190612dcb9190614c47565b155b1561223a576040517fe6fbf80200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080612e15610120840184614b15565b905011156130c9576127104760005b612e32610120860186614b15565b90508110156130c55761ffff8316612e4e610120870187614b15565b83818110612e5e57612e5e614663565b9050604002016020016020810190612e769190614b7d565b61ffff161115612eb2576040517f635015ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061ffff8416612ec7610120880188614b15565b84818110612ed757612ed7614663565b9050604002016020016020810190612eef9190614b7d565b612f019061ffff166040890135614bd0565b612f0b9190614be7565b9050612f178186614c22565b94508560400135851115612f57576040517fcc3b3ebc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82851115612f91576040517f2c2cae9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612fa1610120880188614b15565b84818110612fb157612fb1614663565b612fc79260206040909202019081019150613ecd565b90506001600160a01b038116156130bb576000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114613025576040519150601f19603f3d011682016040523d82523d6000602084013e61302a565b606091505b5050905080613065576040517f7327470c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382167ffe712e2041ac22747996060fcaf7287e627bbbd537f7e9edb81d85916a3a31b5846130a160808c0160608d01614287565b6040805192835290151560208301520160405180910390a2505b5050600101612e24565b5050505b6006546000906001600160a01b03166130e6836040860135614c64565b604051600081818185875af1925050503d8060008114613122576040519150601f19603f3d011682016040523d82523d6000602084013e613127565b606091505b5050905080610d61576040517f66b95c0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61099e8282604051806020016040528060008152506133e6565b60006001600160a01b038316158015906132385750826001600160a01b0316846001600160a01b031614806131f557506001600160a01b0380851660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209387168352929052205460ff165b80613238575060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b038481169116145b949350505050565b806001600160a01b03163b60000361328f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016109e1565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516133059190614c35565b600060405180830381855af49150503d8060008114613340576040519150601f19603f3d011682016040523d82523d6000602084013e613345565b606091505b50915091506133558583836133fd565b95945050505050565b3415611708576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806133a285613472565b905061335584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859392505061348c9050565b6133f083836134b6565b610d61600084848461209c565b6060826134125761340d8261354d565b6116c8565b815115801561342957506001600160a01b0384163b155b1561346b576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016109e1565b50806116c8565b600061088f6134808361358f565b805190602001206136c3565b60008060008061349c868661370b565b9250925092506134ac8282613758565b5090949350505050565b6001600160a01b0382166134f9576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024016109e1565b600061350783836000611556565b90506001600160a01b03811615610d61576040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600060048201526024016109e1565b80511561355d5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60607f94aa1e5f765026e7807de2f569b3d72abc1bc613857637bf74dca424d02ff9b98235602084013560408501356135cd60808701878701614287565b6135dd60a0880160808901613ecd565b6135f26135ed60a08a018a6146d0565b61385c565b6136026135ed60c08b018b6146d0565b6136126135ed60e08c018c6146d0565b6136286136236101008d018d6145f4565b61387e565b61363e6136396101208e018e614b15565b61395a565b61364b8d610140016139f9565b60408051602081019d909d528c019a909a5260608b019890985260808a019690965293151560a08901526001600160a01b0390921660c088015260e08701526101008601526101208501526101408401526101608301526101808201526101a0015b6040516020818303038152906040529050919050565b600061088f6136d0613a91565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b600080600083516041036137455760208401516040850151606086015160001a61373788828585613aa0565b955095509550505050613751565b50508151600091506002905b9250925092565b600082600381111561376c5761376c6144f2565b03613775575050565b6001826003811115613789576137896144f2565b036137c0576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156137d4576137d46144f2565b0361380e576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016109e1565b6003826003811115613822576138226144f2565b0361099e576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016109e1565b6000828260405161386e929190614c77565b6040518091039020905092915050565b6000808267ffffffffffffffff81111561389a5761389a613ee8565b6040519080825280602002602001820160405280156138c3578160200160208202803683370190505b50905060005b83811015613929576138fd8585838181106138e6576138e6614663565b90506020028101906138f89190614692565b613b6f565b8051906020012082828151811061391657613916614663565b60209081029190910101526001016138c9565b508060405160200161393b9190614c87565b6040516020818303038152906040528051906020012091505092915050565b6000808267ffffffffffffffff81111561397657613976613ee8565b60405190808252806020026020018201604052801561399f578160200160208202803683370190505b50905060005b83811015613929576139cd8585838181106139c2576139c2614663565b905060400201613bce565b805190602001208282815181106139e6576139e6614663565b60209081029190910101526001016139a5565b60007f07dcd7fc8540e6630daaa95c4bf6d1951796f3e22e2e1c1bcbdbd5055c7ab37c613a296020840184613ecd565b602084013560408501356060860135613a4860a0880160808901614925565b60a0880135613a5d60e08a0160c08b01613ecd565b604051602001613a74989796959493929190614cbd565b604051602081830303815290604052805190602001209050919050565b6000613a9b613c3e565b905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115613adb5750600091506003905082613b65565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015613b2f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613b5b57506000925060019150829050613b65565b9250600091508190505b9450945094915050565b60607f93dc1bac6b117acdbb889b9a825b9bc731449f703cc02b69049722fcba5dbe34613b9f6135ed84806146d0565b613baf6135ed60208601866146d0565b60408051602081019490945283019190915260608201526080016136ad565b60607fdf3d1189f68f42c28f9fad9d69ff7a974d0a800a2e4420ed400e45a46d2fac2f613bfe6020840184613ecd565b613c0e6040850160208601614b7d565b6040516020016136ad939291909283526001600160a01b0391909116602083015261ffff16604082015260600190565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f613c69613cb2565b613c71613d2e565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10081613cde611aec565b805190915015613cf657805160209091012092915050565b81548015613d05579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b60007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10081613d5a611b3d565b805190915015613d7257805160209091012092915050565b60018201548015613d05579392505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146116d957600080fd5b600060208284031215613dc457600080fd5b81356116c881613d84565b60005b83811015613dea578181015183820152602001613dd2565b50506000910152565b60008151808452613e0b816020860160208601613dcf565b601f01601f19169290920160200192915050565b6020815260006116c86020830184613df3565b600060208284031215613e4457600080fd5b5035919050565b80356001600160a01b0381168114613e6257600080fd5b919050565b60008060408385031215613e7a57600080fd5b613e8383613e4b565b946020939093013593505050565b600080600060608486031215613ea657600080fd5b613eaf84613e4b565b9250613ebd60208501613e4b565b9150604084013590509250925092565b600060208284031215613edf57600080fd5b6116c882613e4b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613f4057613f40613ee8565b604052919050565b600082601f830112613f5957600080fd5b813567ffffffffffffffff811115613f7357613f73613ee8565b613f866020601f19601f84011601613f17565b818152846020838601011115613f9b57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215613fd057600080fd5b853567ffffffffffffffff80821115613fe857600080fd5b613ff489838a01613f48565b9650602088013591508082111561400a57600080fd5b61401689838a01613f48565b9550604088013591508082111561402c57600080fd5b61403889838a01613f48565b9450606088013591508082111561404e57600080fd5b5061405b88828901613f48565b92505061406a60808701613e4b565b90509295509295909350565b6000806040838503121561408957600080fd5b8235915061409960208401613e4b565b90509250929050565b600080604083850312156140b557600080fd5b6140be83613e4b565b9150602083013567ffffffffffffffff8111156140da57600080fd5b6140e685828601613f48565b9150509250929050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e08184015261412c60e084018a613df3565b838103604085015261413e818a613df3565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561419057835183529284019291840191600101614174565b50909c9b505050505050505050505050565b6000806000604084860312156141b757600080fd5b833567ffffffffffffffff808211156141cf57600080fd5b9085019061022082880312156141e457600080fd5b909350602085013590808211156141fa57600080fd5b818601915086601f83011261420e57600080fd5b81358181111561421d57600080fd5b87602082850101111561422f57600080fd5b6020830194508093505050509250925092565b80151581146116d957600080fd5b6000806040838503121561426357600080fd5b61426c83613e4b565b9150602083013561427c81614242565b809150509250929050565b60006020828403121561429957600080fd5b81356116c881614242565b600080600080608085870312156142ba57600080fd5b6142c385613e4b565b93506142d160208601613e4b565b925060408501359150606085013567ffffffffffffffff8111156142f457600080fd5b61430087828801613f48565b91505092959194509250565b6000806040838503121561431f57600080fd5b61432883613e4b565b915061409960208401613e4b565b600082601f83011261434757600080fd5b8135602067ffffffffffffffff8083111561436457614364613ee8565b8260051b614373838201613f17565b938452858101830193838101908886111561438d57600080fd5b84880192505b858310156143c9578235848111156143ab5760008081fd5b6143b98a87838c0101613f48565b8352509184019190840190614393565b98975050505050505050565b803560028110613e6257600080fd5b60008060008060008060c087890312156143fd57600080fd5b86359550602087013567ffffffffffffffff8082111561441c57600080fd5b6144288a838b01614336565b9650604089013591508082111561443e57600080fd5b61444a8a838b01613f48565b9550606089013591506003821061446057600080fd5b81945061446f60808a016143d5565b935060a089013591508082111561448557600080fd5b5061449289828a01614336565b9150509295509295509295565b600181811c908216806144b357607f821691505b6020821081036144ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b85811015614569578284038952614557848351613df3565b9885019893509084019060010161453f565b5091979650505050505050565b600060028710614588576145886144f2565b8682526003861061459b5761459b6144f2565b85602083015260a060408301526145b560a0830186613df3565b82810360608401526145c78186614521565b905082810360808401526143c98185614521565b6000602082840312156145ed57600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261462957600080fd5b83018035915067ffffffffffffffff82111561464457600080fd5b6020019150600581901b360382131561465c57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126146c657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261470557600080fd5b83018035915067ffffffffffffffff82111561472057600080fd5b60200191503681900382131561465c57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b604081526000614774604083018688614735565b8281036020840152614787818587614735565b979650505050505050565b601f821115610d6157600081815260208120601f850160051c810160208610156147b95750805b601f850160051c820191505b818110156147d8578281556001016147c5565b505050505050565b67ffffffffffffffff8311156147f8576147f8613ee8565b61480c83614806835461449f565b83614792565b6000601f84116001811461485e57600085156148285750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835561223a565b600083815260209020601f19861690835b8281101561488f578685013582556020948501946001909201910161486f565b50868210156148ca577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b871515815286602082015285604082015260a06060820152600061490460a083018688614735565b8281036080840152614917818587614735565b9a9950505050505050505050565b60006020828403121561493757600080fd5b8135600481106116c857600080fd5b60048110614956576149566144f2565b9052565b8781526001600160a01b03878116602083015286166040820152606081018590526080810184905260e0810161499360a0830185614946565b8260c083015298975050505050505050565b83815260208101839052606081016132386040830184614946565b60006001600160a01b038087168352808616602084015250836040830152608060608301526149f26080830184613df3565b9695505050505050565b600060208284031215614a0e57600080fd5b81516116c881613d84565b815167ffffffffffffffff811115614a3357614a33613ee8565b614a4781614a41845461449f565b84614792565b602080601f831160018114614a9a5760008415614a645750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556147d8565b600085815260208120601f198616915b82811015614ac957888601518255948401946001909101908401614aaa565b5085821015614b0557878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614b4a57600080fd5b83018035915067ffffffffffffffff821115614b6557600080fd5b6020019150600681901b360382131561465c57600080fd5b600060208284031215614b8f57600080fd5b813561ffff811681146116c857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761088f5761088f614ba1565b600082614c1d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082018082111561088f5761088f614ba1565b600082516146c6818460208701613dcf565b600060208284031215614c5957600080fd5b81516116c881614242565b8181038181111561088f5761088f614ba1565b8183823760009101908152919050565b815160009082906020808601845b83811015614cb157815185529382019390820190600101614c95565b50929695505050505050565b6000610100820190508982526001600160a01b03808a166020840152886040840152876060840152866080840152614cf860a0840187614946565b8460c084015280841660e084015250999850505050505050505056fe7472616e7366657246726f6d28616464726573732c616464726573732c75696e7432353629a264697066735822122045a7e645557ee0580be48c52a1191366b1629af16b3b4509610712fd585146fd64736f6c63430008140033