0 txs
0 calls
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address account, uint256 id) view returns (uint256)
balanceOfBatch
viewfunction balanceOfBatch(address[] accounts, uint256[] ids) view returns (uint256[])
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
exists
viewfunction exists(uint256 id) view returns (bool)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address account, address operator) view returns (bool)
MANAGER_ROLE
viewfunction MANAGER_ROLE() view returns (bytes32)
nftStore
viewfunction nftStore(uint256) view returns (string name, string description, string imageURI, uint256 tokenId, uint256 maxSupply, uint256 price, string properties, address creator, address fundReceiver, uint16 referralBps)
paused
viewfunction paused() view returns (bool)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalSupply
viewfunction totalSupply() view returns (uint256)
totalSupply
viewfunction totalSupply(uint256 id) view returns (uint256)
uri
viewfunction uri(uint256 id) view returns (string)
burn
nonpayablefunction burn(address account, uint256 id, uint256 value)
burnBatch
nonpayablefunction burnBatch(address account, uint256[] ids, uint256[] values)
createProduct
nonpayablefunction createProduct(string name, string description, string imageURI, uint256 price, string properties, uint256 maxSupply, address fundReceiver, uint16 referralBps) returns (tuple)
grantManagerRole
nonpayablefunction grantManagerRole(address account)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
mint
payablefunction mint(address to, uint256 id, uint256 amount, address referrer, bytes data) payable
pause
nonpayablefunction pause()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeManagerRole
nonpayablefunction revokeManagerRole(address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
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)
setURI
nonpayablefunction setURI(string newuri)
unpause
nonpayablefunction unpause()
updateDescription
nonpayablefunction updateDescription(uint256 id, string newDescription)
updateFundReceiver
nonpayablefunction updateFundReceiver(uint256 id, address newFundReceiver)
updateImageURI
nonpayablefunction updateImageURI(uint256 id, string newuri)
updateName
nonpayablefunction updateName(uint256 id, string newName)
updateOwner
nonpayablefunction updateOwner(uint256 id, address newCreator)
updatePrice
nonpayablefunction updatePrice(uint256 id, uint256 newPrice)
updateProperties
nonpayablefunction updateProperties(uint256 id, string newProperties)
updateReferralBps
nonpayablefunction updateReferralBps(uint256 id, uint16 newBps)
updateSupply
nonpayablefunction updateSupply(uint256 id, uint256 newSupply)
events
ApprovalForAll
event ApprovalForAll(address indexed account, address indexed operator, bool approved)
CreateProduct
event CreateProduct(uint256 indexed id, string name, string description, string imageURI, uint256 price, string properties, uint256 maxSupply, address fundReceiver, uint16 referralBps)
Minted
event Minted(address indexed account, uint256 indexed id, uint256 amount, bytes data)
Paused
event Paused(address account)
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)
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)
Unpaused
event Unpaused(address account)
UpdatedDescription
event UpdatedDescription(uint256 indexed id, string newDescription)
UpdatedFundReceiver
event UpdatedFundReceiver(uint256 indexed id, address newFundReceiver)
UpdatedImageURI
event UpdatedImageURI(uint256 indexed id, string newImageURI)
UpdatedName
event UpdatedName(uint256 indexed id, string newName)
UpdatedOwner
event UpdatedOwner(uint256 indexed id, address newOwner)
UpdatedPrice
event UpdatedPrice(uint256 indexed id, uint256 newPrice)
UpdatedProperties
event UpdatedProperties(uint256 indexed id, string newProperties)
UpdatedReferralBps
event UpdatedReferralBps(uint256 indexed id, uint16 newBps)
UpdatedSupply
event UpdatedSupply(uint256 indexed id, uint256 newSupply)
URI
event URI(string value, uint256 indexed id)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
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)
ExceedsMaxSupply
error ExceedsMaxSupply(uint256 requested, uint256 available)
ExpectedPause
error ExpectedPause()
InsufficientEther
error InsufficientEther(uint256 required, uint256 provided)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
creation bytecode
0x608060405234801561001057600080fd5b506040805160208101909152600081526100298161004f565b506004805460ff19169055600160075561004460003361005f565b50600160085561026c565b600261005b82826101ae565b5050565b60008281526003602090815260408083206001600160a01b038516845290915281205460ff166101055760008381526003602090815260408083206001600160a01b03861684529091529020805460ff191660011790556100bd3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610109565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013957607f821691505b60208210810361015957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101a957806000526020600020601f840160051c810160208510156101865750805b601f840160051c820191505b818110156101a65760008155600101610192565b50505b505050565b81516001600160401b038111156101c7576101c761010f565b6101db816101d58454610125565b8461015f565b6020601f82116001811461020f57600083156101f75750848201515b600019600385901b1c1916600184901b1784556101a6565b600084815260208120601f198516915b8281101561023f578785015182556020948501946001909201910161021f565b508482101561025d5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6139b08061027b6000396000f3fe6080604052600436106102245760003560e01c80636b20c45411610123578063a217fddf116100ab578063d547741f1161006f578063d547741f14610696578063e985e9c5146106b6578063ec87621c146106d6578063f242432a146106f8578063f5298aca1461071857600080fd5b8063a217fddf146105e7578063a22cb465146105fc578063b86eeb351461061c578063bd85b03914610649578063be4dc94f1461067657600080fd5b80638e5e6a28116100f25780638e5e6a281461055457806391d1485414610574578063972f9e94146105945780639e2dcbfd146105a7578063a1d20349146105c757600080fd5b80636b20c454146104df5780637192711f146104ff57806382367b2d1461051f5780638456cb591461053f57600080fd5b806326e885e3116101b15780633f4ba83a116101755780633f4ba83a146104365780634e1273f41461044b5780634f558e791461047857806353e76f2c146104a75780635c975abb146104c757600080fd5b806326e885e3146103965780632eb2c2d6146103b65780632f2ff15d146103d657806336568abe146103f65780633dc6a2071461041657600080fd5b80630e89341c116101f85780630e89341c146102e457806314dee4b314610311578063152186a31461033157806318160ddd14610351578063248a9ca31461036657600080fd5b8062fdd58e1461022957806301ffc9a71461025c578063020f41fe1461028c57806302fe5305146102c2575b600080fd5b34801561023557600080fd5b50610249610244366004612a8c565b610738565b6040519081526020015b60405180910390f35b34801561026857600080fd5b5061027c610277366004612acc565b610760565b6040519015158152602001610253565b34801561029857600080fd5b506102ac6102a7366004612af0565b61076b565b6040516102539a99989796959493929190612b59565b3480156102ce57600080fd5b506102e26102dd366004612cab565b6109eb565b005b3480156102f057600080fd5b506103046102ff366004612af0565b610a03565b6040516102539190612cdf565b34801561031d57600080fd5b506102e261032c366004612cf2565b610c7b565b34801561033d57600080fd5b506102e261034c366004612cf2565b610d15565b34801561035d57600080fd5b50600654610249565b34801561037257600080fd5b50610249610381366004612af0565b60009081526003602052604090206001015490565b3480156103a257600080fd5b506102e26103b1366004612d38565b610d9a565b3480156103c257600080fd5b506102e26103d1366004612de3565b610dc2565b3480156103e257600080fd5b506102e26103f1366004612e96565b610e29565b34801561040257600080fd5b506102e2610411366004612e96565b610e54565b34801561042257600080fd5b506102e2610431366004612ed4565b610e87565b34801561044257600080fd5b506102e2610f72565b34801561045757600080fd5b5061046b610466366004612ef7565b610f88565b6040516102539190612ff0565b34801561048457600080fd5b5061027c610493366004612af0565b600090815260056020526040902054151590565b3480156104b357600080fd5b506102e26104c2366004612cf2565b611054565b3480156104d357600080fd5b5060045460ff1661027c565b3480156104eb57600080fd5b506102e26104fa366004613003565b6110d6565b34801561050b57600080fd5b506102e261051a366004612e96565b611135565b34801561052b57600080fd5b506102e261053a36600461307a565b611219565b34801561054b57600080fd5b506102e261129a565b34801561056057600080fd5b506102e261056f366004612cf2565b6112ad565b34801561058057600080fd5b5061027c61058f366004612e96565b611332565b6102e26105a236600461309c565b61135d565b3480156105b357600080fd5b506102e26105c236600461307a565b611480565b3480156105d357600080fd5b506102e26105e2366004612e96565b611501565b3480156105f357600080fd5b50610249600081565b34801561060857600080fd5b506102e26106173660046130f4565b6115f0565b34801561062857600080fd5b5061063c610637366004613130565b6115fb565b6040516102539190613221565b34801561065557600080fd5b50610249610664366004612af0565b60009081526005602052604090205490565b34801561068257600080fd5b506102e2610691366004612d38565b61196b565b3480156106a257600080fd5b506102e26106b1366004612e96565b61198e565b3480156106c257600080fd5b5061027c6106d1366004613302565b6119b3565b3480156106e257600080fd5b5061024960008051602061391b83398151915281565b34801561070457600080fd5b506102e261071336600461332c565b6119e1565b34801561072457600080fd5b506102e2610733366004613384565b611a40565b6000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b600061075a82611a76565b600960205260009081526040902080548190610786906133b7565b80601f01602080910402602001604051908101604052809291908181526020018280546107b2906133b7565b80156107ff5780601f106107d4576101008083540402835291602001916107ff565b820191906000526020600020905b8154815290600101906020018083116107e257829003601f168201915b505050505090806001018054610814906133b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610840906133b7565b801561088d5780601f106108625761010080835404028352916020019161088d565b820191906000526020600020905b81548152906001019060200180831161087057829003601f168201915b5050505050908060020180546108a2906133b7565b80601f01602080910402602001604051908101604052809291908181526020018280546108ce906133b7565b801561091b5780601f106108f05761010080835404028352916020019161091b565b820191906000526020600020905b8154815290600101906020018083116108fe57829003601f168201915b505050505090806003015490806004015490806005015490806006018054610942906133b7565b80601f016020809104026020016040519081016040528092919081815260200182805461096e906133b7565b80156109bb5780601f10610990576101008083540402835291602001916109bb565b820191906000526020600020905b81548152906001019060200180831161099e57829003601f168201915b50505050600783015460089093015491926001600160a01b03908116929081169150600160a01b900461ffff168a565b60006109f681611a9b565b6109ff82611aa5565b5050565b6000818152600960205260409020805460609161075a91610a23906133b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4f906133b7565b8015610a9c5780601f10610a7157610100808354040283529160200191610a9c565b820191906000526020600020905b815481529060010190602001808311610a7f57829003601f168201915b50505060008681526009602052604090206001018054909250610abf91506133b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610aeb906133b7565b8015610b385780601f10610b0d57610100808354040283529160200191610b38565b820191906000526020600020905b815481529060010190602001808311610b1b57829003601f168201915b50505060008781526009602052604090206002018054909250610b5b91506133b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b87906133b7565b8015610bd45780601f10610ba957610100808354040283529160200191610bd4565b820191906000526020600020905b815481529060010190602001808311610bb757829003601f168201915b50505060008881526009602052604090206006018054909250610bf791506133b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610c23906133b7565b8015610c705780601f10610c4557610100808354040283529160200191610c70565b820191906000526020600020905b815481529060010190602001808311610c5357829003601f168201915b505050505086611ab1565b6000828152600960205260409020600701546001600160a01b03163314610cbd5760405162461bcd60e51b8152600401610cb4906133f1565b60405180910390fd5b6000828152600960205260409020600101610cd88282613463565b50817fbaf954ab9ebc0ccf20dd397c25721cabe47e3ff8ce9a6d9e372b4846e0eb541d82604051610d099190612cdf565b60405180910390a25050565b6000828152600960205260409020600701546001600160a01b03163314610d4e5760405162461bcd60e51b8152600401610cb4906133f1565b6000828152600960205260409020600601610d698282613463565b50817ffcc8f23de965fc4b62df47d26b441ef041a65caff001d7327892dc8dd366cd2582604051610d099190612cdf565b6000610da581611a9b565b610dbd60008051602061391b83398151915283611ad8565b505050565b336001600160a01b0386168114801590610de35750610de186826119b3565b155b15610e145760405163711bec9160e11b81526001600160a01b03808316600483015287166024820152604401610cb4565b610e218686868686611b6c565b505050505050565b600082815260036020526040902060010154610e4481611a9b565b610e4e8383611ad8565b50505050565b6001600160a01b0381163314610e7d5760405163334bd91960e11b815260040160405180910390fd5b610dbd8282611bcc565b6000828152600960205260409020600701546001600160a01b03163314610ec05760405162461bcd60e51b8152600401610cb4906133f1565b6107d08161ffff161115610f105760405162461bcd60e51b81526020600482015260176024820152764d617820726566657272616c206665652069732032302560481b6044820152606401610cb4565b600082815260096020908152604091829020600801805461ffff60a01b1916600160a01b61ffff861690810291909117909155915191825283917fccadfcec512cffc4458783bd176a2a733943884f9562fc3fdd6bc745658982809101610d09565b6000610f7d81611a9b565b610f85611c39565b50565b60608151835114610fb95781518351604051635b05999160e01b815260048101929092526024820152604401610cb4565b600083516001600160401b03811115610fd457610fd4612bef565b604051908082528060200260200182016040528015610ffd578160200160208202803683370190505b50905060005b845181101561104c5760208082028601015161102790602080840287010151610738565b82828151811061103957611039613521565b6020908102919091010152600101611003565b509392505050565b6000828152600960205260409020600701546001600160a01b0316331461108d5760405162461bcd60e51b8152600401610cb4906133f1565b60008281526009602052604090206110a58282613463565b50817f0e71fa94ba7a94fcea02f40cb20caf6735abd5ee3155c5039f8681bbf95274aa82604051610d099190612cdf565b6001600160a01b03831633148015906110f657506110f483336119b3565b155b1561112a57335b60405163711bec9160e11b81526001600160a01b0391821660048201529084166024820152604401610cb4565b610dbd838383611c8b565b6000828152600960205260409020600701546001600160a01b0316331461116e5760405162461bcd60e51b8152600401610cb4906133f1565b6001600160a01b0381166111b95760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b2103732bba1b932b0ba37b960711b6044820152606401610cb4565b60008281526009602090815260409182902060070180546001600160a01b0319166001600160a01b038516908117909155915191825283917f2514fca1b908f9e56eaec96306857b98c6daa503c199ba46f5383f8f78035a079101610d09565b6000828152600960205260409020600701546001600160a01b031633146112525760405162461bcd60e51b8152600401610cb4906133f1565b600082815260096020526040908190206005018290555182907f9bdb33962ec269ba46cf891894f92891dcfbcda357db379ca990f7a6e9b951a390610d099084815260200190565b60006112a581611a9b565b610f85611cd1565b6000828152600960205260409020600701546001600160a01b031633146112e65760405162461bcd60e51b8152600401610cb4906133f1565b60008281526009602052604090206002016113018282613463565b50817f1a27032903a93559faddf0cb95776a0d68cf32575baaf89573c42160ef0a7e4a82604051610d099190612cdf565b60009182526003602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611365611d0e565b60008481526009602090815260408083206004015460059092529091205461138d908561354d565b11156113cb5760008481526009602052604090819020600490810154915163adc3cee560e01b81529081018590526024810191909152604401610cb4565b6000848152600960205260408120600501546113e79085613560565b9050803410156114135760405163c108422360e01b815260048101829052346024820152604401610cb4565b61141e858285611d38565b61142a86868685611e3c565b84866001600160a01b03167f3415a4398115f911eb5f94d5d45050a5586f16a7d86ec8c9f749053d3f48d6618685604051611466929190613577565b60405180910390a3506114796001600755565b5050505050565b6000828152600960205260409020600701546001600160a01b031633146114b95760405162461bcd60e51b8152600401610cb4906133f1565b600082815260096020526040908190206004018290555182907f49ca6c84a13f8aa6e1f51b2eccce808ecf7a805f145c6b48e6092e7c232562fb90610d099084815260200190565b6000828152600960205260409020600701546001600160a01b0316331461153a5760405162461bcd60e51b8152600401610cb4906133f1565b6001600160a01b0381166115905760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206e657746756e6452656365697665720000000000000000006044820152606401610cb4565b60008281526009602090815260409182902060080180546001600160a01b0319166001600160a01b038516908117909155915191825283917f9d07222cba7b65a1e686ddca8d578d778be039c02ada40d83eab4e759f6a25e19101610d09565b6109ff338383611e99565b6116676040518061014001604052806060815260200160608152602001606081526020016000815260200160008152602001600081526020016060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600061ffff1681525090565b60008051602061391b83398151915261167f81611a9b565b600085116116d95760405162461bcd60e51b815260206004820152602160248201527f4d617820737570706c79206d7573742062652067726561746572207468616e206044820152600360fc1b6064820152608401610cb4565b600087116117295760405162461bcd60e51b815260206004820152601c60248201527f5072696365206d7573742062652067726561746572207468616e2030000000006044820152606401610cb4565b6107d08361ffff1611156117795760405162461bcd60e51b81526020600482015260176024820152764d617820726566657272616c206665652069732032302560481b6044820152606401610cb4565b6001600160a01b0384166117c75760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b210333ab732103932b1b2b4bb32b960591b6044820152606401610cb4565b60088054600091826117d883613590565b9091555060408051610140810182528d815260208082018e90528183018d905260608201849052608082018a905260a082018c905260c082018b90523360e08301526001600160a01b03891661010083015261ffff881661012083015260008481526009909152919091208151929350909182919081906118599082613463565b506020820151600182019061186e9082613463565b50604082015160028201906118839082613463565b50606082015160038201556080820151600482015560a0820151600582015560c082015160068201906118b69082613463565b5060e08201516007820180546001600160a01b039283166001600160a01b0319909116179055610100830151600890920180546101209094015161ffff16600160a01b026001600160b01b0319909416929091169190911791909117905560405182907fb6de2baaccb642d15bd0892c92ea377f235b459571d750fa646b3892b0c0bfc190611954908f908f908f908f908f908f908f908f906135a9565b60405180910390a29b9a5050505050505050505050565b600061197681611a9b565b610dbd60008051602061391b83398151915283611bcc565b6000828152600360205260409020600101546119a981611a9b565b610e4e8383611bcc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b336001600160a01b0386168114801590611a025750611a0086826119b3565b155b15611a335760405163711bec9160e11b81526001600160a01b03808316600483015287166024820152604401610cb4565b610e218686868686611f2f565b6001600160a01b0383163314801590611a605750611a5e83336119b3565b155b15611a6b57336110fd565b610dbd838383611fbd565b60006001600160e01b03198216637965db0b60e01b148061075a575061075a82612025565b610f858133612075565b60026109ff8282613463565b60606000611ac287878787876120ae565b9050611acd816120f5565b979650505050505050565b6000611ae48383611332565b611b645760008381526003602090815260408083206001600160a01b03861684529091529020805460ff19166001179055611b1c3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161075a565b50600061075a565b6001600160a01b038416611b9657604051632bfa23e760e11b815260006004820152602401610cb4565b6001600160a01b038516611bbf57604051626a0d4560e21b815260006004820152602401610cb4565b6114798585858585612126565b6000611bd88383611332565b15611b645760008381526003602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161075a565b611c41612179565b6004805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316611cb457604051626a0d4560e21b815260006004820152602401610cb4565b610dbd836000848460405180602001604052806000815250612126565b611cd961219e565b6004805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611c6e3390565b600260075403611d3157604051633ee5aeb560e01b815260040160405180910390fd5b6002600755565b81600003611d77573415610dbd5760405162461bcd60e51b81526020600482015260066024820152652156616c756560d01b6044820152606401610cb4565b813414611dba5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964206d73672076616c756560781b6044820152606401610cb4565b6000838152600960205260409020600801546001600160a01b03908116908216611de857610e4e81846121c2565b6000848152600960205260408120600801546107d090611e1390600160a01b900461ffff1686613560565b611e1d9190613642565b9050611e2983826121c2565b61147982611e378387613656565b6121c2565b6001600160a01b038416611e6657604051632bfa23e760e11b815260006004820152602401610cb4565b60408051600180825260208201869052818301908152606082018590526080820190925290610e21600087848487612126565b6001600160a01b038216611ec25760405162ced3e160e81b815260006004820152602401610cb4565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416611f5957604051632bfa23e760e11b815260006004820152602401610cb4565b6001600160a01b038516611f8257604051626a0d4560e21b815260006004820152602401610cb4565b60408051600180825260208201869052818301908152606082018590526080820190925290611fb48787848487612126565b50505050505050565b6001600160a01b038316611fe657604051626a0d4560e21b815260006004820152602401610cb4565b604080516001808252602082018590528183019081526060820184905260a0820190925260006080820181815291929161147991879185908590612126565b60006001600160e01b03198216636cdb3d1360e11b148061205657506001600160e01b031982166303a24d0760e21b145b8061075a57506301ffc9a760e01b6001600160e01b031983161461075a565b61207f8282611332565b6109ff5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610cb4565b6060856120ba83612294565b86866120c586612294565b876040516020016120db96959493929190613685565b604051602081830303815290604052905095945050505050565b60606121008261239c565b60405160200161211091906137de565b6040516020818303038152906040529050919050565b612132858585856124ee565b6001600160a01b03841615611479578251339060010361216b57602084810151908401516121648389898585896124fa565b5050610e21565b610e2181878787878761261e565b60045460ff1661219c57604051638dfc202b60e01b815260040160405180910390fd5b565b60045460ff161561219c5760405163d93c066560e01b815260040160405180910390fd5b806000036121ce575050565b804710156121f15760405163cd78605960e01b8152306004820152602401610cb4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461223e576040519150601f19603f3d011682016040523d82523d6000602084013e612243565b606091505b5050905080610dbd5760405162461bcd60e51b815260206004820152601c60248201527f6e617469766520746f6b656e207472616e73666572206661696c6564000000006044820152606401610cb4565b6060816000036122bb5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156122e557806122cf81613590565b91506122de9050600a83613642565b91506122bf565b6000816001600160401b038111156122ff576122ff612bef565b6040519080825280601f01601f191660200182016040528015612329576020820181803683370190505b5090505b84156123945761233e600183613656565b915061234b600a86613823565b61235690603061354d565b60f81b81838151811061236b5761236b613521565b60200101906001600160f81b031916908160001a90535061238d600a86613642565b945061232d565b949350505050565b606081516000036123bb57505060408051602081019091526000815290565b600060405180606001604052806040815260200161393b60409139905060006003845160026123ea919061354d565b6123f49190613642565b6123ff906004613560565b6001600160401b0381111561241657612416612bef565b6040519080825280601f01601f191660200182016040528015612440576020820181803683370190505b509050600182016020820185865187015b808210156124ac576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f8116850151845350600183019250612451565b50506003865106600181146124c857600281146124db576124e3565b603d6001830353603d60028303536124e3565b603d60018303535b509195945050505050565b610e4e84848484612707565b6001600160a01b0384163b15610e215760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061253e9089908990889088908890600401613837565b6020604051808303816000875af1925050508015612579575060408051601f3d908101601f1916820190925261257691810190613871565b60015b6125e2573d8080156125a7576040519150601f19603f3d011682016040523d82523d6000602084013e6125ac565b606091505b5080516000036125da57604051632bfa23e760e11b81526001600160a01b0386166004820152602401610cb4565b805181602001fd5b6001600160e01b0319811663f23a6e6160e01b14611fb457604051632bfa23e760e11b81526001600160a01b0386166004820152602401610cb4565b6001600160a01b0384163b15610e215760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190612662908990899088908890889060040161388e565b6020604051808303816000875af192505050801561269d575060408051601f3d908101601f1916820190925261269a91810190613871565b60015b6126cb573d8080156125a7576040519150601f19603f3d011682016040523d82523d6000602084013e6125ac565b6001600160e01b0319811663bc197c8160e01b14611fb457604051632bfa23e760e11b81526001600160a01b0386166004820152602401610cb4565b6127138484848461284d565b6001600160a01b0384166127bd576000805b83518110156127a357600083828151811061274257612742613521565b60200260200101519050806005600087858151811061276357612763613521565b602002602001015181526020019081526020016000206000828254612788919061354d565b909155506127989050818461354d565b925050600101612725565b5080600660008282546127b6919061354d565b9091555050505b6001600160a01b038316610e4e576000805b835181101561283c5760008382815181106127ec576127ec613521565b60200260200101519050806005600087858151811061280d5761280d613521565b6020908102919091018101518252810191909152604001600020805491909103905591909101906001016127cf565b506006805491909103905550505050565b61285561219e565b610e4e84848484805182511461288b5781518151604051635b05999160e01b815260048101929092526024820152604401610cb4565b3360005b8351811015612991576020818102858101820151908501909101516001600160a01b03881615612942576000828152602081815260408083206001600160a01b038c1684529091529020548181101561291b576040516303dee4c560e01b81526001600160a01b038a166004820152602481018290526044810183905260648101849052608401610cb4565b6000838152602081815260408083206001600160a01b038d16845290915290209082900390555b6001600160a01b03871615612987576000828152602081815260408083206001600160a01b038b1684529091528120805483929061298190849061354d565b90915550505b505060010161288f565b508251600103612a125760208301516000906020840151909150856001600160a01b0316876001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051612a03929190918252602082015260400190565b60405180910390a45050611479565b836001600160a01b0316856001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051612a619291906138ec565b60405180910390a45050505050565b80356001600160a01b0381168114612a8757600080fd5b919050565b60008060408385031215612a9f57600080fd5b612aa883612a70565b946020939093013593505050565b6001600160e01b031981168114610f8557600080fd5b600060208284031215612ade57600080fd5b8135612ae981612ab6565b9392505050565b600060208284031215612b0257600080fd5b5035919050565b60005b83811015612b24578181015183820152602001612b0c565b50506000910152565b60008151808452612b45816020860160208601612b09565b601f01601f19169290920160200192915050565b61014081526000612b6e61014083018d612b2d565b8281036020840152612b80818d612b2d565b90508281036040840152612b94818c612b2d565b90508960608401528860808401528760a084015282810360c0840152612bba8188612b2d565b6001600160a01b0396871660e0850152949095166101008301525061ffff919091166101209091015298975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612c2d57612c2d612bef565b604052919050565b600082601f830112612c4657600080fd5b8135602083016000806001600160401b03841115612c6657612c66612bef565b50601f8301601f1916602001612c7b81612c05565b915050828152858383011115612c9057600080fd5b82826020830137600092810160200192909252509392505050565b600060208284031215612cbd57600080fd5b81356001600160401b03811115612cd357600080fd5b61239484828501612c35565b602081526000612ae96020830184612b2d565b60008060408385031215612d0557600080fd5b8235915060208301356001600160401b03811115612d2257600080fd5b612d2e85828601612c35565b9150509250929050565b600060208284031215612d4a57600080fd5b612ae982612a70565b60006001600160401b03821115612d6c57612d6c612bef565b5060051b60200190565b600082601f830112612d8757600080fd5b8135612d9a612d9582612d53565b612c05565b8082825260208201915060208360051b860101925085831115612dbc57600080fd5b602085015b83811015612dd9578035835260209283019201612dc1565b5095945050505050565b600080600080600060a08688031215612dfb57600080fd5b612e0486612a70565b9450612e1260208701612a70565b935060408601356001600160401b03811115612e2d57600080fd5b612e3988828901612d76565b93505060608601356001600160401b03811115612e5557600080fd5b612e6188828901612d76565b92505060808601356001600160401b03811115612e7d57600080fd5b612e8988828901612c35565b9150509295509295909350565b60008060408385031215612ea957600080fd5b82359150612eb960208401612a70565b90509250929050565b803561ffff81168114612a8757600080fd5b60008060408385031215612ee757600080fd5b82359150612eb960208401612ec2565b60008060408385031215612f0a57600080fd5b82356001600160401b03811115612f2057600080fd5b8301601f81018513612f3157600080fd5b8035612f3f612d9582612d53565b8082825260208201915060208360051b850101925087831115612f6157600080fd5b6020840193505b82841015612f8a57612f7984612a70565b825260209384019390910190612f68565b945050505060208301356001600160401b03811115612fa857600080fd5b612d2e85828601612d76565b600081518084526020840193506020830160005b82811015612fe6578151865260209586019590910190600101612fc8565b5093949350505050565b602081526000612ae96020830184612fb4565b60008060006060848603121561301857600080fd5b61302184612a70565b925060208401356001600160401b0381111561303c57600080fd5b61304886828701612d76565b92505060408401356001600160401b0381111561306457600080fd5b61307086828701612d76565b9150509250925092565b6000806040838503121561308d57600080fd5b50508035926020909101359150565b600080600080600060a086880312156130b457600080fd5b6130bd86612a70565b945060208601359350604086013592506130d960608701612a70565b915060808601356001600160401b03811115612e7d57600080fd5b6000806040838503121561310757600080fd5b61311083612a70565b91506020830135801515811461312557600080fd5b809150509250929050565b600080600080600080600080610100898b03121561314d57600080fd5b88356001600160401b0381111561316357600080fd5b61316f8b828c01612c35565b98505060208901356001600160401b0381111561318b57600080fd5b6131978b828c01612c35565b97505060408901356001600160401b038111156131b357600080fd5b6131bf8b828c01612c35565b9650506060890135945060808901356001600160401b038111156131e257600080fd5b6131ee8b828c01612c35565b94505060a0890135925061320460c08a01612a70565b915061321260e08a01612ec2565b90509295985092959890939650565b6020815260008251610140602084015261323f610160840182612b2d565b90506020840151601f1984830301604085015261325c8282612b2d565b9150506040840151601f1984830301606085015261327a8282612b2d565b91505060608401516080840152608084015160a084015260a084015160c084015260c0840151601f198483030160e08501526132b68282612b2d565b91505060e08401516132d46101008501826001600160a01b03169052565b506101008401516001600160a01b0381166101208501525061012084015161ffff811661014085015261104c565b6000806040838503121561331557600080fd5b61331e83612a70565b9150612eb960208401612a70565b600080600080600060a0868803121561334457600080fd5b61334d86612a70565b945061335b60208701612a70565b9350604086013592506060860135915060808601356001600160401b03811115612e7d57600080fd5b60008060006060848603121561339957600080fd5b6133a284612a70565b95602085013595506040909401359392505050565b600181811c908216806133cb57607f821691505b6020821081036133eb57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601190820152703737ba103b30b634b21036b0b730b3b2b960791b604082015260600190565b601f821115610dbd57806000526020600020601f840160051c810160208510156134435750805b601f840160051c820191505b81811015611479576000815560010161344f565b81516001600160401b0381111561347c5761347c612bef565b6134908161348a84546133b7565b8461341c565b6020601f8211600181146134c457600083156134ac5750848201515b600019600385901b1c1916600184901b178455611479565b600084815260208120601f198516915b828110156134f457878501518255602094850194600190920191016134d4565b50848210156135125786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561075a5761075a613537565b808202811582820484141761075a5761075a613537565b8281526040602082015260006123946040830184612b2d565b6000600182016135a2576135a2613537565b5060010190565b610100815260006135be61010083018b612b2d565b82810360208401526135d0818b612b2d565b905082810360408401526135e4818a612b2d565b905087606084015282810360808401526135fe8188612b2d565b60a084019690965250506001600160a01b039290921660c083015261ffff1660e09091015295945050505050565b634e487b7160e01b600052601260045260246000fd5b6000826136515761365161362c565b500490565b8181038181111561075a5761075a613537565b6000815161367b818560208601612b09565b9290920192915050565b693d913730b6b2911d101160b11b815286516000906136ab81600a850160208c01612b09565b631037379760e11b600a9184019182015287516136cf81600e840160208c01612b09565b631116101160e11b600e92909101918201526e3232b9b1b934b83a34b7b7111d101160891b60128201528651600a82019161371290829060210160208b01612b09565b6137d06137c16137bb61379d61379761376e61375e61375861374360178b8b0101631116101160e11b815260040190565b6834b6b0b3b2911d101160b91b815260090190565b8e613669565b631116101160e11b815260040190565b7f70726f70657274696573223a207b226e756d626572223a202200000000000000815260190190565b8a613669565b7111161011383937b832b93a34b2b9911d101160711b815260120190565b87613669565b62227d7d60e81b815260030190565b9a9950505050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161381681601d850160208701612b09565b91909101601d0192915050565b6000826138325761383261362c565b500690565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611acd90830184612b2d565b60006020828403121561388357600080fd5b8151612ae981612ab6565b6001600160a01b0386811682528516602082015260a0604082018190526000906138ba90830186612fb4565b82810360608401526138cc8186612fb4565b905082810360808401526138e08185612b2d565b98975050505050505050565b6040815260006138ff6040830185612fb4565b82810360208401526139118185612fb4565b9594505050505056fe241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b084142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212205ba4396d43dba3beb1389e4260c4711855b8ccaaebd55c430ee6c4e16c32c4d164736f6c634300081a0033