0 txs
0 calls
constructor
constructor(string uri_, address keeper_, address treasury_)
functions
balanceOf
viewfunction balanceOf(address account, uint256 id) view returns (uint256)
balanceOfBatch
viewfunction balanceOfBatch(address[] accounts, uint256[] ids) view returns (uint256[])
buyers
viewfunction buyers(uint256 index) view returns (address)
buyersContains
viewfunction buyersContains(address seller) view returns (bool)
buyersCount
viewfunction buyersCount() view returns (uint256)
EIP712_DOMAIN_NAME
viewfunction EIP712_DOMAIN_NAME() view returns (string)
EIP712_DOMAIN_VERSION
viewfunction EIP712_DOMAIN_VERSION() view returns (string)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
exists
viewfunction exists(uint256 id) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address account, address operator) view returns (bool)
keeper
viewfunction keeper() view returns (address)
MINT_TYPEHASH
viewfunction MINT_TYPEHASH() view returns (bytes32)
nonces
viewfunction nonces(address owner) view returns (uint256)
onERC1155BatchReceived
purefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) pure returns (bytes4)
onERC1155Received
purefunction onERC1155Received(address, address, uint256, uint256, bytes) pure returns (bytes4)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
paymentDataByUser
viewfunction paymentDataByUser(address user, uint256 nonce) view returns (uint256 uuid, uint256 timestamp, uint256 amountNfts, uint256 paymentAmount)
rewardPool
viewfunction rewardPool() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
TOKEN_ID
viewfunction TOKEN_ID() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
totalSupply
viewfunction totalSupply(uint256 id) view returns (uint256)
treasury
viewfunction treasury() view returns (address)
uri
viewfunction uri(uint256) view returns (string)
uuids
viewfunction uuids(uint256 index) view returns (uint256)
uuidsContains
viewfunction uuidsContains(uint256 uuid) view returns (bool)
uuidsCount
viewfunction uuidsCount() view returns (uint256)
whitelist
viewfunction whitelist(uint256 index) view returns (address)
whitelistContains
viewfunction whitelistContains(address account) view returns (bool)
whitelistLength
viewfunction whitelistLength() view returns (uint256)
addWhitelist
nonpayablefunction addWhitelist(address[] accounts)
burn
nonpayablefunction burn(address account, uint256 id, uint256 value)
burnBatch
nonpayablefunction burnBatch(address account, uint256[] ids, uint256[] values)
mint
payablefunction mint(tuple data) payable
pause
nonpayablefunction pause()
removeWhitelist
nonpayablefunction removeWhitelist(address[] accounts)
renounceOwnership
nonpayablefunction renounceOwnership()
safeBatchTransferFrom
nonpayablefunction safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] values, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes data)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateKeeper
nonpayablefunction updateKeeper(address keeper_)
updateRewardPool
nonpayablefunction updateRewardPool(address pool)
updateTreasury
nonpayablefunction updateTreasury(address treasury_)
updateURI
nonpayablefunction updateURI(string uri_)
events
ApprovalForAll
event ApprovalForAll(address indexed account, address indexed operator, bool approved)
EIP712DomainChanged
event EIP712DomainChanged()
KeeperUpdated
event KeeperUpdated(address indexed keeper)
Minted
event Minted(address indexed caller, uint256 indexed nonce, (uint256 uuid, uint256 timestamp, uint256 amountNfts, uint256 paymentAmount) paymentData)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RewardPoolUpdated
event RewardPoolUpdated(address indexed pool)
TransferBatch
event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values)
TransferSingle
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value)
TreasuryUpdated
event TreasuryUpdated(address indexed treasury)
Unpaused
event Unpaused(address account)
URI
event URI(string value, uint256 indexed id)
WhitelistAdded
event WhitelistAdded(address[] indexed accounts)
WhitelistRemoved
event WhitelistRemoved(address[] indexed accounts)
errors
AccountIsZero
error AccountIsZero()
AddressesNotWhitelisted
error AddressesNotWhitelisted(address caller, address from, address to)
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
EnforcedPause
error EnforcedPause()
ERC1155InsufficientBalance
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId)
ERC1155InvalidApprover
error ERC1155InvalidApprover(address approver)
ERC1155InvalidArrayLength
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength)
ERC1155InvalidOperator
error ERC1155InvalidOperator(address operator)
ERC1155InvalidReceiver
error ERC1155InvalidReceiver(address receiver)
ERC1155InvalidSender
error ERC1155InvalidSender(address sender)
ERC1155MissingApprovalForAll
error ERC1155MissingApprovalForAll(address operator, address owner)
ExpectedPause
error ExpectedPause()
InvalidAccountNonce
error InvalidAccountNonce(address account, uint256 currentNonce)
InvalidShortString
error InvalidShortString()
MintIncorrectReceiverNonce
error MintIncorrectReceiverNonce(address receiver, uint256 contractNonce, uint256 dataNonce)
MintSignerNotOwnerOrKeeper
error MintSignerNotOwnerOrKeeper(address signer, address owner, address keeper)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReceiverZero
error ReceiverZero()
SentValueLtPaymentAmount
error SentValueLtPaymentAmount(uint256 msgValue, uint256 paymentAmount)
SignatureTimeExpired
error SignatureTimeExpired(uint256 deadline, uint256 timestamp)
StringTooLong
error StringTooLong(string str)
UpdateKeeperZero
error UpdateKeeperZero()
UpdateTreasuryZero
error UpdateTreasuryZero()
UUIDAlreadyExist
error UUIDAlreadyExist(uint256 uuid)
creation bytecode
0x610160806040523461044b576138d3803803809161001d828561044f565b8339810160608282031261044b5781516001600160401b03811161044b57820181601f8201121561044b5780516001600160401b0381116104375760405192610070601f8301601f19166020018561044f565b8184526020828401011161044b5761008e9160208085019101610472565b6100a6604061009f60208501610493565b9301610493565b906040908151906100b7838361044f565b60088252602082016713919517d093d39160c21b81528351926100da858561044f565b60018452603160f81b60208501908152835190936001600160401b0382116104375760025490600182811c9216801561042d575b60208310146104195781601f8493116103ab575b50602090601f8311600114610345575f9261033a575b50508160011b915f199060031b1c1916176002555b33156103275760058054336001600160a01b0319821681179092556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a361019e816104a7565b610120526101ab8461062d565b61014052519020918260e05251902080610100524660a05282519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84528483015260608201524660808201523060a082015260a0815261021260c08261044f565b5190206080523060c0526009546001600160a01b038416938415610318576001600160a81b031990911660089190911b610100600160a81b03161760095551917f0425bcd291db1d48816f2a98edc7ecaf6dd5c64b973d9e4b3b6b750763dc6c2e5f80a26001600160a01b0316801561030957600a80546001600160a01b031916821790557f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d15f80a261316d9081610766823960805181612867015260a05181612924015260c05181612838015260e051816128b6015261010051816128dc01526101205181610f7301526101405181610f9f0152f35b632e35939560e11b5f5260045ffd5b637199b4a560e01b5f5260045ffd5b631e4fbdf760e01b5f525f60045260245ffd5b015190505f80610138565b60025f9081528281209350601f198516905b818110610393575090846001959493921061037b575b505050811b0160025561014d565b01515f1960f88460031b161c191690555f808061036d565b92936020600181928786015181550195019301610357565b60025f529091507f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace601f840160051c8101916020851061040f575b90601f859493920160051c01905b8181106104015750610122565b5f81558493506001016103f4565b90915081906103e6565b634e487b7160e01b5f52602260045260245ffd5b91607f169161010e565b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761043757604052565b5f5b8381106104835750505f910152565b8181015183820152602001610474565b51906001600160a01b038216820361044b57565b908151602081105f14610520575090601f8151116104e15760208151910151602082106104d2571790565b5f198260200360031b1b161790565b6044604051809263305a27a960e01b8252602060048301526105128151809281602486015260208686019101610472565b601f01601f19168101030190fd5b6001600160401b03811161043757600654600181811c91168015610623575b602082101461041957601f81116105f0575b50602092601f821160011461058f57928192935f92610584575b50508160011b915f199060031b1c19161760065560ff90565b015190505f8061056b565b601f1982169360065f52805f20915f5b8681106105d857508360019596106105c0575b505050811b0160065560ff90565b01515f1960f88460031b161c191690555f80806105b2565b9192602060018192868501518155019401920161059f565b60065f52601f60205f20910160051c810190601f830160051c015b8181106106185750610551565b5f815560010161060b565b90607f169061053f565b908151602081105f14610658575090601f8151116104e15760208151910151602082106104d2571790565b6001600160401b03811161043757600754600181811c9116801561075b575b602082101461041957601f8111610728575b50602092601f82116001146106c757928192935f926106bc575b50508160011b915f199060031b1c19161760075560ff90565b015190505f806106a3565b601f1982169360075f52805f20915f5b86811061071057508360019596106106f8575b505050811b0160075560ff90565b01515f1960f88460031b161c191690555f80806106ea565b919260206001819286850151815501940192016106d7565b60075f52601f60205f20910160051c810190601f830160051c015b8181106107505750610689565b5f8155600101610743565b90607f169061067756fe60806040526004361015610011575f80fd5b5f3560e01c8062fdd58e1461030357806301ffc9a7146102fe5780630e89341c146102f957806318160ddd146102f457806323245216146102ef578063241dce81146102ea57806329d80b7b146102e55780632eb2c2d6146102e05780633f4ba83a146102db5780634e1273f4146102d65780634f558e79146102d15780635b7f9414146102cc5780635c975abb146102c75780635cc33321146102c257806361d027b3146102bd57806366666aa9146102b85780636b20c454146102b3578063715018a6146102ae57806378bb5164146102a95780637943e2e3146102a45780637ebd1b301461029f5780637ecebe001461029a5780637f51bb1f146102955780638456cb591461029057806384b0196e1461028b57806389a89002146102865780638da5cb5b14610281578063977902171461027c578063a22cb46514610277578063aced166114610272578063ba49a08c1461026d578063bc197c8114610268578063bd85b03914610263578063c1e4898f1461025e578063c30f4a5a14610259578063d5fbac3a14610254578063e1ab6e8e1461024f578063e985e9c51461024a578063ecbb91fa14610245578063edac985b14610240578063f23a6e611461023b578063f242432a14610236578063f2aa821814610231578063f2fde38b1461022c578063f5298aca14610227578063f76fc35e146102225763fd0702961461021d575f80fd5b611ab6565b611a7c565b6119d3565b611928565b6118ed565b611800565b6117aa565b6116f3565b6116c9565b61166b565b611629565b611544565b61141c565b611377565b61134d565b6112b2565b611236565b61120d565b611146565b611077565b611051565b611037565b610f5b565b610f02565b610e65565b610e27565b610dec565b610d86565b610d69565b610d03565b610be5565b610bbf565b610b99565b610b3a565b610b04565b610aca565b610a9e565b6109a4565b6108e1565b610852565b61076b565b610716565b6106a0565b61058f565b6104b4565b6103a7565b61034c565b600435906001600160a01b038216820361031e57565b5f80fd5b602435906001600160a01b038216820361031e57565b35906001600160a01b038216820361031e57565b3461031e57604036600319011261031e57602061038c61036a610308565b6024355f525f835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b6001600160e01b031981160361031e57565b3461031e57602036600319011261031e5760206001600160e01b03196004356103cf81610395565b167fd9b67a26000000000000000000000000000000000000000000000000000000008114908115610437575b811561040d575b506040519015158152f35b7f01ffc9a7000000000000000000000000000000000000000000000000000000009150145f610402565b7f0e89341c00000000000000000000000000000000000000000000000000000000811491506103fb565b91908251928382525f5b84811061048b575050825f602080949584010152601f8019910116010190565b8060208092840101518282860101520161046b565b9060206104b1928181520190610461565b90565b3461031e57602036600319011261031e576040515f6002546104d581611b15565b808452906001811690811561056b575060011461050d575b610509836104fd818503826105c0565b604051918291826104a0565b0390f35b60025f9081527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace939250905b808210610551575090915081016020016104fd6104ed565b919260018160209254838588010152019101909291610539565b60ff191660208086019190915291151560051b840190910191506104fd90506104ed565b3461031e575f36600319011261031e576020600454604051908152f35b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176105e257604052565b6105ac565b604051906105f660e0836105c0565b565b67ffffffffffffffff81116105e25760051b60200190565b9080601f8301121561031e578135610627816105f8565b9261063560405194856105c0565b81845260208085019260051b82010192831161031e57602001905b82821061065d5750505090565b6020809161066a84610338565b815201910190610650565b602060031982011261031e576004359067ffffffffffffffff821161031e576104b191600401610610565b3461031e576106ae36610675565b6106b66122d9565b80515f5b8181106106f0576106ca83611bf6565b7f1d474f57a5c483b47a8bf6006e39086f96dd040a00cb348e22f80a4ca2c6f2225f80a2005b8061070f6001600160a01b0361070860019487611be2565b511661251e565b50016106ba565b3461031e57602036600319011261031e57600435600c5481101561076657600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70154604051908152602090f35b611bce565b3461031e575f36600319011261031e576020600c54604051908152f35b9080601f8301121561031e57813561079f816105f8565b926107ad60405194856105c0565b81845260208085019260051b82010192831161031e57602001905b8282106107d55750505090565b81358152602091820191016107c8565b67ffffffffffffffff81116105e257601f01601f191660200190565b92919261080d826107e5565b9161081b60405193846105c0565b82948184528183011161031e578281602093845f960137010152565b9080601f8301121561031e578160206104b193359101610801565b3461031e5760a036600319011261031e5761086b610308565b610873610322565b9060443567ffffffffffffffff811161031e57610894903690600401610788565b60643567ffffffffffffffff811161031e576108b4903690600401610788565b906084359367ffffffffffffffff851161031e576108d96108df953690600401610837565b93611c39565b005b3461031e575f36600319011261031e576108f96122d9565b60095460ff8116156109385760ff19166009557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b7f8dfc202b000000000000000000000000000000000000000000000000000000005f5260045ffd5b90602080835192838152019201905f5b81811061097d5750505090565b8251845260209384019390920191600101610970565b9060206104b1928181520190610960565b3461031e57604036600319011261031e5760043567ffffffffffffffff811161031e576109d5903690600401610610565b60243567ffffffffffffffff811161031e576109f5903690600401610788565b9080518251808203610a70575050610a0d8151611cbe565b915f5b8251811015610a625780610a5060019260051b602080828801015191860101515f525f60205260405f20906001600160a01b03165f5260205260405f2090565b54610a5b8287611be2565b5201610a10565b604051806105098682610993565b7f5b059991000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b3461031e57602036600319011261031e576004355f526003602052602060405f20541515604051908152f35b3461031e57602036600319011261031e576001600160a01b03610aeb610308565b165f52600f602052602060405f20541515604051908152f35b3461031e575f36600319011261031e57602060ff600954166040519015158152f35b60405190610b356020836105c0565b5f8252565b3461031e575f36600319011261031e57610509604051610b5b6040826105c0565b600181527f31000000000000000000000000000000000000000000000000000000000000006020820152604051918291602083526020830190610461565b3461031e575f36600319011261031e5760206001600160a01b03600a5416604051908152f35b3461031e575f36600319011261031e5760206001600160a01b03600b5416604051908152f35b3461031e57606036600319011261031e57610bfe610308565b60243567ffffffffffffffff811161031e57610c1e903690600401610788565b9060443567ffffffffffffffff811161031e57610c3f903690600401610788565b6001600160a01b0382163381141580610cd2575b610ca35715610c77576108df9260405192610c6f6020856105c0565b5f84526125bf565b7f01a83514000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe237d922000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b50805f52600160205260ff610cfb3360405f20906001600160a01b03165f5260205260405f2090565b541615610c53565b3461031e575f36600319011261031e57610d1b6122d9565b5f6001600160a01b0360055473ffffffffffffffffffffffffffffffffffffffff198116600555167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461031e575f36600319011261031e576020601054604051908152f35b3461031e57604036600319011261031e57610d9f610308565b6001600160a01b03165f9081526012602090815260408083206024358452825291829020805460018201546002830154600390930154855192835293820152928301526060820152608090f35b3461031e57602036600319011261031e57600435601054811015610766576001600160a01b0360209160105f52825f20015416604051908152f35b3461031e57602036600319011261031e576020610e5d610e45610308565b6001600160a01b03165f52600860205260405f205490565b604051908152f35b3461031e57602036600319011261031e576001600160a01b03610e86610308565b610e8e6122d9565b168015610eda578073ffffffffffffffffffffffffffffffffffffffff19600a541617600a557f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d15f80a2005b7f5c6b272a000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461031e575f36600319011261031e57610f1a6122d9565b610f22612319565b600160ff1960095416176009557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b3461031e575f36600319011261031e57611009610f977f000000000000000000000000000000000000000000000000000000000000000061277e565b610509610fc37f00000000000000000000000000000000000000000000000000000000000000006127f7565b611017610fce611ca3565b916040519586957f0f00000000000000000000000000000000000000000000000000000000000000875260e0602088015260e0870190610461565b908582036040870152610461565b904660608501523060808501525f60a085015283820360c0850152610960565b3461031e575f36600319011261031e5760206040515f8152f35b3461031e575f36600319011261031e5760206001600160a01b0360055416604051908152f35b3461031e57602036600319011261031e57611090610308565b6110986122d9565b6001600160a01b038116908115611114577fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff006009549260081b169116176009557f0425bcd291db1d48816f2a98edc7ecaf6dd5c64b973d9e4b3b6b750763dc6c2e5f80a2005b7f7199b4a5000000000000000000000000000000000000000000000000000000005f5260045ffd5b8015150361031e57565b3461031e57604036600319011261031e5761115f610308565b60243561116b8161113c565b6001600160a01b0382169182156111e1576111a290335f52600160205260405f20906001600160a01b03165f5260205260405f2090565b60ff1981541660ff8315151617905560405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b7fced3e100000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461031e575f36600319011261031e5760206001600160a01b0360095460081c16604051908152f35b3461031e575f36600319011261031e576020600e54604051908152f35b9181601f8401121561031e5782359167ffffffffffffffff831161031e576020808501948460051b01011161031e57565b9181601f8401121561031e5782359167ffffffffffffffff831161031e576020838186019501011161031e57565b3461031e5760a036600319011261031e576112cb610308565b506112d4610322565b5060443567ffffffffffffffff811161031e576112f5903690600401611253565b505060643567ffffffffffffffff811161031e57611317903690600401611253565b505060843567ffffffffffffffff811161031e57611339903690600401611284565b505060405163bc197c8160e01b8152602090f35b3461031e57602036600319011261031e576004355f526003602052602060405f2054604051908152f35b602036600319011261031e5760043567ffffffffffffffff811161031e5760e0600319823603011261031e576113ab6105e7565b81600401358152602482013560208201526113c860448301610338565b6040820152606482013560608201526084820135608082015260a482013560a082015260c482013567ffffffffffffffff811161031e576108df9260046114129236920101610837565b60c0820152611cf0565b3461031e57602036600319011261031e5760043567ffffffffffffffff811161031e573660238201121561031e5761145e903690602481600401359101610801565b6114666122d9565b805167ffffffffffffffff81116105e25761148b81611486600254611b15565b61247e565b602091601f82116001146114c9576114b9925f91836114be575b50508160011b915f199060031b1c19161790565b600255005b015190505f806114a5565b60025f52601f198216927f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace915f5b85811061152c57508360019510611514575b505050811b01600255005b01515f1960f88460031b161c191690555f8080611509565b919260206001819286850151815501940192016114f7565b3461031e57602036600319011261031e5761155d610308565b6115656122d9565b6001600160a01b03811690811580156115bf575b828073ffffffffffffffffffffffffffffffffffffffff19600b541617600b557f46ba02d3885b5339116a5cbcf41c6b44114be4306638430dc558300e558fccc25f80a2005b6111e1576115e990305f52600160205260405f20906001600160a01b03165f5260205260405f2090565b600160ff1982541617905580604051600181527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203092a35f80611579565b3461031e57602036600319011261031e5760206116616001600160a01b0361164f610308565b165f52601160205260405f2054151590565b6040519015158152f35b3461031e57604036600319011261031e57602060ff6116bd61168b610308565b6001600160a01b0361169b610322565b91165f526001845260405f20906001600160a01b03165f5260205260405f2090565b54166040519015158152f35b3461031e57602036600319011261031e5760206116616004355f52600d60205260405f2054151590565b3461031e5761170136610675565b6117096122d9565b80515f5b8181106117435761171d83611bf6565b7ff74f148a4f930a0f67a2c33ba932a14e3e91b4e6468f21e545932fd8251115385f80a2005b6001600160a01b036117558285611be2565b511615611782578061177b6001600160a01b0361177460019487611be2565b51166123a4565b500161170d565b7f678099ac000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461031e5760a036600319011261031e576117c3610308565b506117cc610322565b5060843567ffffffffffffffff811161031e576117ed903690600401611284565b5050602060405163f23a6e6160e01b8152f35b3461031e5760a036600319011261031e57611819610308565b611821610322565b604435906064359260843567ffffffffffffffff811161031e57611849903690600401610837565b926001600160a01b03821633811415806118bc575b610ca3576001600160a01b038416156118a95715610c77576108df946118a160405192600184526020840152604083019160018352606084015260808301604052565b929091612684565b632bfa23e760e11b5f525f60045260245ffd5b50805f52600160205260ff6118e53360405f20906001600160a01b03165f5260205260405f2090565b54161561185e565b3461031e57602036600319011261031e57600435600e54811015610766576001600160a01b03602091600e5f52825f20015416604051908152f35b3461031e57602036600319011261031e576001600160a01b03611949610308565b6119516122d9565b1680156119a7576001600160a01b036005548273ffffffffffffffffffffffffffffffffffffffff19821617600555167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461031e57606036600319011261031e576119ec610308565b604435906024356001600160a01b0382163381141580611a4b575b610ca35715610c77576108df92611a3b60405192600184526020840152604083019160018352606084015260808301604052565b9060405192610c6f6020856105c0565b50805f52600160205260ff611a743360405f20906001600160a01b03165f5260205260405f2090565b541615611a07565b3461031e575f36600319011261031e5760206040517fb0ac67430752a3fe65deb5a4364b316021c12eca79187e584a9b5ae9853988998152f35b3461031e575f36600319011261031e57610509604051611ad76040826105c0565b600881527f4e46545f424f4e440000000000000000000000000000000000000000000000006020820152604051918291602083526020830190610461565b90600182811c92168015611b43575b6020831014611b2f57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611b24565b5f9291815491611b5c83611b15565b8083529260018116908115611bb15750600114611b7857505050565b5f9081526020812093945091925b838310611b97575060209250010190565b600181602092949394548385870101520191019190611b86565b915050602093945060ff929192191683830152151560051b010190565b634e487b7160e01b5f52603260045260245ffd5b80518210156107665760209160051b010190565b6040518091829160208251919201905f5b818110611c175750505003902090565b82516001600160a01b0316845285945060209384019390920191600101611c07565b939291906001600160a01b0385163381141580611c72575b610ca3576001600160a01b038216156118a95715610c77576105f694612684565b50805f52600160205260ff611c9b3360405f20906001600160a01b03165f5260205260405f2090565b541615611c51565b60405190611cb26020836105c0565b5f808352366020840137565b90611cc8826105f8565b611cd560405191826105c0565b8281528092611ce6601f19916105f8565b0190602036910137565b611cf8612319565b611d20611d18611d1483515f52600d60205260405f2054151590565b1590565b825190612133565b60a08101611d348151429042811015612166565b611d6a60805f808080875196611e32611dff611df460208c019a8c611dec8d51611dde604084019e8f516001600160a01b031690565b93606081019e8f519101998a5190519160405196879560208701998a926001600160a01b039060c095929897969360e08601997fb0ac67430752a3fe65deb5a4364b316021c12eca79187e584a9b5ae985398899875260208701526040860152166060840152608083015260a08201520152565b03601f1981018352826105c0565b51902061234d565b60c08c01519061238e565b6005546001600160a01b038281169116818114929091831561210f575b5060095460081c6001600160a01b03169261219d565b611e566001600160a01b03611e4e89516001600160a01b031690565b1615156121e7565b611e6581513481341015612216565b611edd611e9c611e7c89516001600160a01b031690565b6001600160a01b03165f52600860205260405f2080549060018201905590565b895114611eb089516001600160a01b031690565b611ed4611ecf826001600160a01b03165f52600860205260405f205490565b612261565b908b5192612274565b611ee78951612a69565b50611f01611efc88516001600160a01b031690565b6123b8565b50611f3e611f30611f1989516001600160a01b031690565b6001600160a01b03165f52601260205260405f2090565b89515f5260205260405f2090565b985189554260018a0155855160028a0155518060038a0155611f7a611f6e611f6e600a546001600160a01b031690565b6001600160a01b031690565b828215612106575bf1156120d857611fa0611f6e611f6e600b546001600160a01b031690565b156120dd578061203b92611fc060209351611fb9610b26565b90306123cc565b611fe6611fd8611f6e600b546001600160a01b031690565b91516001600160a01b031690565b9151915f6040518096819582947f6db64d0600000000000000000000000000000000000000000000000000000000845260048401604090939291936001600160a01b0360608201951681525f60208201520152565b03925af180156120d8576120a9575b505b51907f20c97cef20324e3082adb3309366bacf1e1b60ee6a9c4039ef034fa8394d4dab604051806120a43394829190916060600360808301948054845260018101546020850152600281015460408501520154910152565b0390a3565b6120ca9060203d6020116120d1575b6120c281836105c0565b8101906122c4565b505f61204a565b503d6120b8565b6122b9565b6120f161210192516001600160a01b031690565b90516120fb610b26565b916123cc565b61204c565b506108fc611f82565b90925061212b611f6e6009546001600160a01b039060081c1690565b14915f611e1c565b1561213b5750565b7fb40c5874000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b1561216f575050565b7f75082014000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b156121a757505050565b7fe691f4ab000000000000000000000000000000000000000000000000000000005f526001600160a01b039081166004529081166024521660445260645ffd5b156121ee57565b7f441485f6000000000000000000000000000000000000000000000000000000005f5260045ffd5b1561221f575050565b7f7b52f91d000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b634e487b7160e01b5f52601160045260245ffd5b5f1981019190821161226f57565b61224d565b1561227e57505050565b6001600160a01b03907f5bbdd4ba000000000000000000000000000000000000000000000000000000005f521660045260245260445260645ffd5b6040513d5f823e3d90fd5b9081602091031261031e57516104b18161113c565b6001600160a01b036005541633036122ed57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b60ff6009541661232557565b7fd93c0665000000000000000000000000000000000000000000000000000000005f5260045ffd5b60429061235861282e565b90604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b6104b19161239b9161294a565b909291926129a2565b6001600160a01b036104b191166010612ad7565b6001600160a01b036104b19116600e612ad7565b91906001600160a01b038316156118a957612407905f9160405192600184526020840152604083019160018352606084015260808301604052565b906124148282865f612e45565b6001600160a01b038416612429575b50505050565b8051600103612451579060208061244895930151910151915f33612d17565b5f808080612423565b61245c935f33612bec565b612448565b9161247a9183549060031b91821b915f19901b19161790565b9055565b601f811161248a575050565b60025f5260205f20906020601f840160051c830193106124c4575b601f0160051c01905b8181106124b9575050565b5f81556001016124ae565b90915081906124a5565b8054821015610766575f5260205f2001905f90565b8054801561250a575f1901906124f982826124ce565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b5f818152601160205260409020549081156125b9575f1982019082821161226f576010545f1981019390841161226f5783835f95612578950361257e575b50505061256960106124e3565b6011905f5260205260405f2090565b55600190565b6125696125aa916125a06125966125b09560106124ce565b90549060031b1c90565b92839160106124ce565b90612461565b555f808061255c565b50505f90565b9392506001600160a01b0384168015158061267d575b6125e6575b505f6105f69394612e45565b335f52601160205260405f20541590811591612667575b508015612635575b15612610575f6125da565b6304ac22bf60e01b5f908152336004526001600160a01b03851660245260445260645ffd5b505f805260116020527f4ad3b33220dddc71b994a52d72c06b10862965f7d926534c05c00fb7e819e7b7541515612605565b90505f52601160205260405f205415155f6125fd565b505f6125d5565b919392906001600160a01b0383168015158061276c575b6126fa575b506126ad82868386612e45565b6001600160a01b0381166126c3575b5050505050565b84516001036126e9576020806126df9601519201519233612d17565b5f808080806126bc565b6126f594919233612bec565b6126df565b335f52601160205260405f20541590811591612756575b508184821561272c575b612726923390612b29565b5f6126a0565b612726925061274f6001600160a01b0383165f52601160205260405f2054151590565b925061271b565b90505f52601160205260405f205415155f612711565b506001600160a01b038216151561269b565b60ff81146127dd5760ff811690601f82116127b557604051916127a26040846105c0565b6020808452838101919036833783525290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040516104b1816127f0816006611b4d565b03826105c0565b60ff811461281b5760ff811690601f82116127b557604051916127a26040846105c0565b506040516104b1816127f0816007611b4d565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480612921575b15612889577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261291b60c0826105c0565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612860565b815191906041830361297a576129739250602082015190606060408401519301515f1a90612db6565b9192909190565b50505f9160029190565b6004111561298e57565b634e487b7160e01b5f52602160045260245ffd5b6129ab81612984565b806129b4575050565b6129bd81612984565b600181036129ed577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b6129f681612984565b60028103612a2a57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b80612a36600392612984565b14612a3e5750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b5f818152600d6020526040902054612ad257600c54680100000000000000008110156105e257612abb612aa5826001859401600c55600c6124ce565b819391549060031b91821b915f19901b19161790565b9055600c54905f52600d60205260405f2055600190565b505f90565b5f8281526001820160205260409020546125b957805490680100000000000000008210156105e25782612b14612aa58460018096018555846124ce565b90558054925f520160205260405f2055600190565b15612b3357505050565b6304ac22bf60e01b5f526001600160a01b039081166004529081166024521660445260645ffd5b9081602091031261031e57516104b181610395565b93906104b195936001600160a01b03612baf9481612ba19416885216602087015260a0604087015260a0860190610960565b908482036060860152610960565b916080818403910152610461565b3d15612be7573d90612bce826107e5565b91612bdc60405193846105c0565b82523d5f602084013e565b606090565b9091949293853b612c00575b505050505050565b602093612c2291604051968795869563bc197c8160e01b875260048701612b6f565b03815f6001600160a01b0387165af15f9181612cb2575b50612c735750612c47612bbd565b8051919082612c6c57632bfa23e760e11b5f526001600160a01b03821660045260245ffd5b9050602001fd5b6001600160e01b031963bc197c8160e01b911603612c9757505f8080808080612bf8565b632bfa23e760e11b5f526001600160a01b031660045260245ffd5b612cd591925060203d602011612cdc575b612ccd81836105c0565b810190612b5a565b905f612c39565b503d612cc3565b91926001600160a01b0360a094816104b1989794168552166020840152604083015260608201528160808201520190610461565b9091949293853b612d2a57505050505050565b602093612d4c91604051968795869563f23a6e6160e01b875260048701612ce3565b03815f6001600160a01b0387165af15f9181612d95575b50612d715750612c47612bbd565b6001600160e01b031963f23a6e6160e01b911603612c9757505f8080808080612bf8565b612daf91925060203d602011612cdc57612ccd81836105c0565b905f612d63565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612e2d579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156120d8575f516001600160a01b03811615612e2357905f905f90565b505f906001905f90565b5050505f9160039190565b9190820180921161226f57565b6001600160a01b0390949394612e5d86858584612f63565b1615612ecf575b6001600160a01b031615612e7757509050565b5f805b8251821015612ebd57600190612e908387611be2565b5190612eae612e9f8587611be2565b515f52600360205260405f2090565b82815403905501910190612e7a565b9150506105f691925060045403600455565b915f90815b8351831015612f1657612f0e600191612eed8589611be2565b5190612efc612e9f8789611be2565b612f07838254612e38565b9055612e38565b920191612ed4565b6001600160a01b039250612f32612f3791959295600454612e38565b600455565b9050612e64565b9091612f556104b193604084526040840190610960565b916020818403910152610960565b9392918051835190818103610a705750505f5b8151811015613092578060051b9060208083850101519286010151846001600160a01b038916612ffc575b6001936001600160a01b038216612fbc575b50505001612f76565b612ff291612fd4612fea925f525f60205260405f2090565b906001600160a01b03165f5260205260405f2090565b918254612e38565b90555f8481612fb3565b50909161301488612fd4835f525f60205260405f2090565b548281106130425782916001949387920361303a8b612fd4845f525f60205260405f2090565b559350612fa1565b6040517f03dee4c50000000000000000000000000000000000000000000000000000000081526001600160a01b038a16600482015260248101919091526044810183905260648101829052608490fd5b5080519394939192916001036130f5576020908101519181015160408051938452918301526001600160a01b03928316939092169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291819081015b0390a4565b90916001600160a01b037f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb916130f08260405193849316971695339583612f3e56fea26469706673582212209f89a3a8dd4fbc1b466e0c8bc2f01145fae873554fbb3bfe80254b710883b75064736f6c634300081a00330000000000000000000000000000000000000000000000000000000000000060000000000000000000000000d1a1ce23830a48fe87f83379b585f6f6af1599dc000000000000000000000000d4ec4e5b7625fed3c40bfeec206e49396f02dd540000000000000000000000000000000000000000000000000000000000000007697066733a2f2f00000000000000000000000000000000000000000000000000