0 txs
1 call
constructor
constructor()
functions
canvasHeight
viewfunction canvasHeight() view returns (uint16)
canvasWidth
viewfunction canvasWidth() view returns (uint16)
compositesPerChunk
viewfunction compositesPerChunk() view returns (uint256)
compositesPointers
viewfunction compositesPointers(uint256) view returns (address)
getComposite
viewfunction getComposite(uint256 compositeIndex) view returns (uint256[])
getCompositesCount
viewfunction getCompositesCount() view returns (uint256)
isRevealed
viewfunction isRevealed() view returns (bool)
isSealed
viewfunction isSealed() view returns (bool)
layerNames
viewfunction layerNames(uint256) view returns (string)
mintbayGenerativeContract
viewfunction mintbayGenerativeContract() view returns (address)
numberOfLayers
viewfunction numberOfLayers() view returns (uint256)
owner
viewfunction owner() view returns (address)
palettePointer
viewfunction palettePointer() view returns (address)
revealSeed
viewfunction revealSeed() view returns (uint256)
tokenAttributes
viewfunction tokenAttributes(uint256 compositeIndex) view returns (bytes)
tokenImageSvg
viewfunction tokenImageSvg(uint256 compositeIndex) view returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
traitNames
viewfunction traitNames(uint256, uint256) view returns (string)
traitPointers
viewfunction traitPointers(uint256, uint256) view returns (address)
traits
viewfunction traits(uint256, uint256) view returns (uint256 pointerIndex, uint256 offset, uint256 length)
addComposite
nonpayablefunction addComposite(uint256[] traitIndices)
addCompositesBatch
nonpayablefunction addCompositesBatch(uint256[][] traitIndicesArray)
addTrait
nonpayablefunction addTrait(uint256 layerId, uint256 traitId, bytes data, string name)
addTraitsBatch
nonpayablefunction addTraitsBatch(uint256 layerId, uint256[] traitIds, bytes[] datas, string[] names)
renounceOwnership
nonpayablefunction renounceOwnership()
sealContract
nonpayablefunction sealContract()
setCanvasSize
nonpayablefunction setCanvasSize(uint16 _width, uint16 _height)
setCompositesPerChunk
nonpayablefunction setCompositesPerChunk(uint256 _compositesPerChunk)
setLayer
nonpayablefunction setLayer(uint256 layerId, string name)
setLayersBatch
nonpayablefunction setLayersBatch(uint256[] layerIds, string[] names)
setMintbayGenerativeContract
nonpayablefunction setMintbayGenerativeContract(address _mintbayGenerativeContract)
setPalette
nonpayablefunction setPalette(bytes _palette)
setRevealSeed
nonpayablefunction setRevealSeed(uint256 _seed)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
CanvasSizeSet
event CanvasSizeSet(uint16 width, uint16 height)
CompositeChunkAdded
event CompositeChunkAdded(uint256 chunkId, address pointer)
CompositesPerChunkSet
event CompositesPerChunkSet(uint256 compositesPerChunk)
ContractSealed
event ContractSealed()
LayerSet
event LayerSet(uint256 layerId, string name)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PaletteSet
event PaletteSet(address pointer)
RevealSeedSet
event RevealSeedSet(uint256 seed)
TraitAdded
event TraitAdded(uint256 layerId, uint256 traitId, string name, uint256 pointerIndex, uint256 offset)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x60806040523480156200001157600080fd5b5033806200003957604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000448162000061565b50600a80546001600160a01b03191690556101f4600155620000b1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61429980620000c16000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806393119e0a1161011a578063d56fd88f116100ad578063f253bef31161007c578063f253bef3146104ac578063f2824b53146104b5578063f2fde38b146104c8578063f69d3fad146104db578063f8d4be6d146104ee57600080fd5b8063d56fd88f1461046b578063de9aa5941461047e578063efca8f0814610491578063f132914b146104a457600080fd5b8063aff31edc116100e9578063aff31edc14610417578063bf2d7b321461042a578063c06bb2051461044a578063c87b56dd1461045857600080fd5b806393119e0a146103b757806399b0eb62146103ca5780639c71a380146103dd578063a318a3261461040457600080fd5b8063631f98521161019d57806379d3cd001161016c57806379d3cd0014610318578063844e2cd51461036d578063865dfcd9146103805780638da5cb5b146103935780638f659487146103a457600080fd5b8063631f9852146102e157806368bd580e146102f55780636b3fc695146102fd578063715018a61461031057600080fd5b806340ce89c2116101d957806340ce89c21461025857806354214f691461028a578063561d6225146102ae57806362415a19146102c157600080fd5b8063094441d11461020b57806328c855d4146102205780632fa2acf81461023357806332c2f7f81461024f575b600080fd5b61021e61021936600461336f565b610501565b005b61021e61022e3660046133b0565b610807565b61023c60015481565b6040519081526020015b60405180910390f35b61023c60095481565b60025461027290600160301b90046001600160a01b031681565b6040516001600160a01b039091168152602001610246565b60025461029e90600160281b900460ff1681565b6040519015158152602001610246565b61021e6102bc3660046133d9565b6108a3565b6102d46102cf366004613444565b610a58565b60405161024691906134ad565b60025461029e90600160201b900460ff1681565b61021e610af2565b61021e61030b366004613501565b610b39565b61021e610cc3565b610352610326366004613583565b600760209081526000928352604080842090915290825290208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610246565b61021e61037b3660046135a5565b610cd7565b6102d461038e366004613583565b610ea6565b6000546001600160a01b0316610272565b61021e6103b2366004613444565b610eca565b600a54610272906001600160a01b031681565b61021e6103d8366004613444565b611033565b6002546103f19062010000900461ffff1681565b60405161ffff9091168152602001610246565b61021e61041236600461336f565b61112c565b610272610425366004613444565b61139f565b61043d610438366004613444565b6113c9565b60405161024691906135da565b6002546103f19061ffff1681565b6102d4610466366004613444565b611546565b6102d4610479366004613444565b61163f565b61021e61048c366004613635565b6118f9565b61021e61049f366004613668565b611a03565b61023c611df5565b61023c60065481565b6102d46104c3366004613444565b611e7b565b61021e6104d63660046133b0565b611edc565b61021e6104e936600461370b565b611f1a565b6102726104fc366004613583565b611fb1565b610509611fe9565b600254600160201b900460ff161561053c5760405162461bcd60e51b815260040161053390613756565b60405180910390fd5b80806105785760405162461bcd60e51b815260206004820152600b60248201526a08adae0e8f240c4c2e8c6d60ab1b6044820152606401610533565b60065460006105878284613798565b6001600160401b0381111561059e5761059e6137af565b6040519080825280601f01601f1916602001820160405280156105c8576020820181803683370190505b5090506000805b84811015610767573660008888848181106105ec576105ec6137c5565b90506020028101906105fe91906137db565b909250905085811461064d5760405162461bcd60e51b8152602060048201526018602482015277092dcecc2d8d2c840c6dedae0dee6d2e8ca40d8cadccee8d60431b6044820152606401610533565b60005b8681101561075957600083838381811061066c5761066c6137c5565b90506020020135905060ff80168111156106c05760405162461bcd60e51b8152602060048201526015602482015274547261697420696e64657820746f6f206c6172676560581b6044820152606401610533565b600082815260076020908152604080832084845290915290206002015461071f5760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840e8e4c2d2e840d2dcc8caf606b1b6044820152606401610533565b8060f81b878781518110610735576107356137c5565b60200101906001600160f81b031916908160001a9053505060019485019401610650565b5082600101925050506105cf565b5061077182612016565b6004547f82ed0dca89c66872470f12150bee36c2e71fdadb410898ecb2e7bd2c5bb2f6a9906107a290600190613824565b600480546107b290600190613824565b815481106107c2576107c26137c5565b6000918252602090912001546040516107f792916001600160a01b0316909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050565b61080f611fe9565b600254600160201b900460ff16156108395760405162461bcd60e51b815260040161053390613756565b6001600160a01b0381166108815760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610533565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6108ab611fe9565b600254600160201b900460ff16156108d55760405162461bcd60e51b815260040161053390613756565b8281146109185760405162461bcd60e51b81526020600482015260116024820152704d69736d6174636865642061727261797360781b6044820152606401610533565b60005b83811015610a5157828282818110610935576109356137c5565b90506020028101906109479190613837565b6005600088888681811061095d5761095d6137c5565b905060200201358152602001908152602001600020918261097f929190613906565b50600654858583818110610995576109956137c5565b90506020020135106109ca578484828181106109b3576109b36137c5565b9050602002013560016109c691906139c5565b6006555b7f8821f6df0b2ec72e1cb3c7a521fdf0470f670496d3cc14b51084a427a22eaa118585838181106109fd576109fd6137c5565b90506020020135848484818110610a1657610a166137c5565b9050602002810190610a289190613837565b604051610a37939291906139d8565b60405180910390a180610a4981613a0e565b91505061091b565b5050505050565b60056020526000908152604090208054610a719061387d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9d9061387d565b8015610aea5780601f10610abf57610100808354040283529160200191610aea565b820191906000526020600020905b815481529060010190602001808311610acd57829003601f168201915b505050505081565b610afa611fe9565b6002805464ff000000001916600160201b1790556040517fa0058887862c892ade184993a48c672897bca2e36ebf7fa2b4703d4805fc3a0190600090a1565b610b41611fe9565b600254600160201b900460ff1615610b6b5760405162461bcd60e51b815260040161053390613756565b6006548610610bac5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103630bcb2b960991b6044820152606401610533565b60ff851115610bf25760405162461bcd60e51b8152602060048201526012602482015271547261697420494420746f6f206c6172676560701b6044820152606401610533565b610c3184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061205692505050565b600080610c6488878790508888604051602001610c5093929190613a27565b604051602081830303815290604052612347565b9250925050610cb9888886868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250610cb3915087905060206139c5565b8a612400565b5050505050505050565b610ccb611fe9565b610cd56000612496565b565b610cdf611fe9565b600254600160201b900460ff1615610d095760405162461bcd60e51b815260040161053390613756565b610d14600482613a57565b15610d585760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070616c657474652073697a6560601b6044820152606401610533565b60ff610d65600483613a6b565b1115610db35760405162461bcd60e51b815260206004820152601a60248201527f546f6f206d616e7920636f6c6f727320696e2070616c657474650000000000006044820152606401610533565b616000610dc18260206139c5565b1115610e0f5760405162461bcd60e51b815260206004820152601d60248201527f50616c6574746520746f6f206c6172676520666f72205353544f5245320000006044820152606401610533565b604051610e3c90610e2890839085908290602001613a27565b6040516020818303038152906040526124e6565b600280546601000000000000600160d01b031916600160301b6001600160a01b0393841681029190911791829055604051910490911681527f12dd88e6366a1b048d43c30e6cc0d851079c669a59cb0b42bcda1a3770d2024c906020015b60405180910390a15050565b600860209081526000928352604080842090915290825290208054610a719061387d565b610ed2611fe9565b600254600160201b900460ff1615610efc5760405162461bcd60e51b815260040161053390613756565b60008111610f415760405162461bcd60e51b8152602060048201526012602482015271496e76616c6964206368756e6b2073697a6560701b6044820152606401610533565b60045415610fa15760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206368616e676520616674657220636f6d706f736974657320756044820152661c1b1bd859195960ca1b6064820152608401610533565b61600060065482610fb29190613798565b1115610ff75760405162461bcd60e51b81526020600482015260146024820152734368756e6b2073697a6520746f6f206c6172676560601b6044820152606401610533565b60018190556040518181527f7d8bdfacda5f291d00f98aeade4529328fb3a620c7a4326be7e1109b38278ccc906020015b60405180910390a150565b600a546001600160a01b031633148061105657506000546001600160a01b031633145b6110935760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610533565b600254600160281b900460ff16156110e05760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481c995d99585b195960821b6044820152606401610533565b60098190556002805465ff00000000001916600160281b1790556040517f7d3263796ba5596ebeb4fac93bd3558059760d9281ecf726005ee5751b9e406e906110289083815260200190565b611134611fe9565b600254600160201b900460ff161561115e5760405162461bcd60e51b815260040161053390613756565b60065481146111aa5760405162461bcd60e51b8152602060048201526018602482015277092dcecc2d8d2c840c6dedae0dee6d2e8ca40d8cadccee8d60431b6044820152606401610533565b60005b818110156112a5576000818152600760205260408120818585858181106111d6576111d66137c5565b90506020020135815260200190815260200160002060020154116112325760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840e8e4c2d2e840d2dcc8caf606b1b6044820152606401610533565b60ff838383818110611246576112466137c5565b9050602002013511156112935760405162461bcd60e51b8152602060048201526015602482015274547261697420696e64657820746f6f206c6172676560581b6044820152606401610533565b8061129d81613a0e565b9150506111ad565b50606060005b8281101561130257818484838181106112c6576112c66137c5565b905060200201356040516020016112de929190613a7f565b604051602081830303815290604052915080806112fa90613a0e565b9150506112ab565b5061130c81612016565b6004547f82ed0dca89c66872470f12150bee36c2e71fdadb410898ecb2e7bd2c5bb2f6a99061133d90600190613824565b6004805461134d90600190613824565b8154811061135d5761135d6137c5565b60009182526020909120015460405161139292916001600160a01b0316909182526001600160a01b0316602082015260400190565b60405180910390a1505050565b600481815481106113af57600080fd5b6000918252602090912001546001600160a01b0316905081565b60606113d3611df5565b82106113f15760405162461bcd60e51b815260040161053390613ab1565b600060065460016114029190613798565b90506000600154846114149190613a6b565b9050600082600154866114279190613a57565b6114319190613798565b60045490915082106114555760405162461bcd60e51b815260040161053390613ae8565b60006114926004848154811061146d5761146d6137c5565b6000918252602090912001546001600160a01b03168361148d87826139c5565b61252a565b905060006006546001600160401b038111156114b0576114b06137af565b6040519080825280602002602001820160405280156114d9578160200160208202803683370190505b50905060005b60065481101561153b578281815181106114fb576114fb6137c5565b602001015160f81c60f81b60f81c60ff1682828151811061151e5761151e6137c5565b60209081029190910101528061153381613a0e565b9150506114df565b509695505050505050565b600254606090600160281b900460ff166115725760405162461bcd60e51b815260040161053390613b12565b61157a611df5565b82106115bb5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081d1bdad95b88125160821b6044820152606401610533565b60006115c68361163f565b905060006115d384612593565b905060006115e085612768565b6115e9846127fa565b836040516020016115fc93929190613b38565b6040516020818303038152906040529050611616816127fa565b6040516020016116269190613c30565b6040516020818303038152906040529350505050919050565b600254606090600160281b900460ff1661166b5760405162461bcd60e51b815260040161053390613b12565b611673611df5565b82106116915760405162461bcd60e51b815260040161053390613ab1565b60006040518060a00160405280607b81526020016141a9607b91396002546116bc9061ffff16612768565b6002546116d29062010000900461ffff16612768565b604051806060016040528060318152602001614178603191396040516020016116fe9493929190613c75565b6040516020818303038152906040529050600060065460016117209190613798565b90506000600154856117329190613a6b565b9050600082600154876117459190613a57565b61174f9190613798565b60045490915082106117735760405162461bcd60e51b815260040161053390613ae8565b600061178b6004848154811061146d5761146d6137c5565b905060006117ad600260069054906101000a90046001600160a01b0316612820565b905060005b6006548110156118cb5760008382815181106117d0576117d06137c5565b01602090810151600084815260078352604080822060f89390931c80835292845280822081516060810183528154815260018201549581019590955260020154908401819052919350036118255750506118b9565b600083815260036020526040812082518154611877929190811061184b5761184b6137c5565b600091825260209182902001549084015160408501516001600160a01b039092169161148d90826139c5565b90506000611885828761284e565b8051909150156118b4578a816040516020016118a2929190613cdc565b6040516020818303038152906040529a505b505050505b806118c381613a0e565b9150506117b2565b50856040516020016118dd9190613d0b565b60408051601f1981840301815291905298975050505050505050565b611901611fe9565b600254600160201b900460ff161561192b5760405162461bcd60e51b815260040161053390613756565b60008261ffff16118015611943575060008161ffff16115b801561195557506101008261ffff1611155b801561196757506101008161ffff1611155b6119a95760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642063616e7661732073697a6560681b6044820152606401610533565b6002805461ffff84811663ffffffff19909216821762010000918516918202179092556040805191825260208201929092527f56f34234c034b58bdceb65c0489ea232c011d4eae18d1bed77492846d9754fb29101610e9a565b611a0b611fe9565b600254600160201b900460ff1615611a355760405162461bcd60e51b815260040161053390613756565b6006548710611a765760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103630bcb2b960991b6044820152606401610533565b8483148015611a8457508281145b611ac45760405162461bcd60e51b81526020600482015260116024820152704d69736d6174636865642061727261797360781b6044820152606401610533565b60005b85811015611ba05760ff878783818110611ae357611ae36137c5565b905060200201351115611b2d5760405162461bcd60e51b8152602060048201526012602482015271547261697420494420746f6f206c6172676560701b6044820152606401610533565b611b8e858583818110611b4257611b426137c5565b9050602002810190611b549190613837565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061205692505050565b80611b9881613a0e565b915050611ac7565b50606060005b86811015611c47576000868683818110611bc257611bc26137c5565b9050602002810190611bd49190613837565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250508251604051939450611c22938793509091508490602001613d35565b6040516020818303038152906040529250508080611c3f90613a0e565b915050611ba6565b50600080611c558a84612347565b92509250506000816020611c6991906139c5565b905060005b89811015611de757600019898983818110611c8b57611c8b6137c5565b9050602002810190611c9d9190613837565b9050611caa8460206139c5565b611cb491906139c5565b1115611cf45760405162461bcd60e51b815260206004820152600f60248201526e4f6666736574206f766572666c6f7760881b6044820152606401610533565b611d998c8c8c84818110611d0a57611d0a6137c5565b90506020020135898985818110611d2357611d236137c5565b9050602002810190611d359190613837565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508891508f90508e88818110611d8057611d806137c5565b9050602002810190611d929190613837565b9050612400565b888882818110611dab57611dab6137c5565b9050602002810190611dbd9190613837565b611dc9915060206139c5565b611dd390836139c5565b915080611ddf81613a0e565b915050611c6e565b505050505050505050505050565b60065460009081908190611e0a906001613798565b905060005b600454811015611e735781611e4a60048381548110611e3057611e306137c5565b6000918252602090912001546001600160a01b0316612820565b51611e559190613a6b565b611e5f90846139c5565b925080611e6b81613a0e565b915050611e0f565b509092915050565b600254606090600160281b900460ff16611ea75760405162461bcd60e51b815260040161053390613b12565b611eaf611df5565b8210611ecd5760405162461bcd60e51b815260040161053390613ab1565b611ed682612593565b92915050565b611ee4611fe9565b6001600160a01b038116611f0e57604051631e4fbdf760e01b815260006004820152602401610533565b611f1781612496565b50565b611f22611fe9565b600254600160201b900460ff1615611f4c5760405162461bcd60e51b815260040161053390613756565b6000838152600560205260409020611f65828483613906565b506006548310611f7e57611f7a8360016139c5565b6006555b7f8821f6df0b2ec72e1cb3c7a521fdf0470f670496d3cc14b51084a427a22eaa11838383604051611392939291906139d8565b60036020528160005260406000208181548110611fcd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b6000546001600160a01b03163314610cd55760405163118cdaa760e01b8152336004820152602401610533565b6004612021826124e6565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b0390921691909117905550565b60025460009061207590600160301b90046001600160a01b0316612820565b905060208151116120bf5760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070616c65747465206461746160601b6044820152606401610533565b60006120ca82613d6c565b83519091506120db90600590613a57565b156121285760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642072656374616e676c652064617461206c656e6774680000006044820152606401610533565b60005b8351811015612341576000848281518110612148576121486137c5565b016020015160f81c90506000856121608460016139c5565b81518110612170576121706137c5565b016020015160f81c90506000866121888560026139c5565b81518110612198576121986137c5565b016020015160f81c90506000876121b08660036139c5565b815181106121c0576121c06137c5565b016020015160f81c90506000886121d88760046139c5565b815181106121e8576121e86137c5565b016020015160025460f89190911c915061ffff1661220c60ff858116908816613d90565b61ffff161115801561223d575060025462010000900461ffff1661223660ff848116908716613d90565b61ffff1611155b61227e5760405162461bcd60e51b815260206004820152601260248201527152656374206f7574206f6620626f756e647360701b6044820152606401610533565b60008360ff16118015612294575060008260ff16115b6122d75760405162461bcd60e51b815260206004820152601460248201527316995c9bc81dda591d1a081bdc881a195a59da1d60621b6044820152606401610533565b6122e48160ff1688612c57565b6123285760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e0c2d8cae8e8ca40d2dcc8caf605b1b6044820152606401610533565b505050505060058161233a91906139c5565b905061212b565b50505050565b60008060006160008451111561239f5760405162461bcd60e51b815260206004820152601e60248201527f446174612065786365656473206d617820636f6e74726163742073697a6500006044820152606401610533565b60008581526003602052604090206123b6856124e6565b81546001808201845560008481526020902090910180546001600160a01b0319166001600160a01b03841617905582549195506123f291613824565b925060009150509250925092565b60408051606081018252848152602080820185815282840185815260008b8152600784528581208b825284528581209451855591516001850155516002909301929092558882526008815282822088835290522061245e8582613db2565b507fa10f932fb8c5cf0cf9966c7b46115c687b5a1d40e1962a40c455fce134fd03de86868686866040516107f7959493929190613e71565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081518060401b6bfe61000180600a3d393df3000161fffe8211840152600b8101601584016000f09150816125245763301164256000526004601cfd5b90915290565b60405161ffff821061253c5761ffff91505b818310838303026001810184601f8401873c8082015160ff16612576576001853b038060281c3d3d3e808403818511028203858211029150505b808252600081602084010152806040830101604052509392505050565b6060600060065460016125a69190613798565b90506000600154846125b89190613a6b565b9050600082600154866125cb9190613a57565b6125d59190613798565b60045490915082106125f95760405162461bcd60e51b815260040161053390613ae8565b60006126116004848154811061146d5761146d6137c5565b6040805180820190915260018152605b60f81b60208201529091506000805b60065481101561273a57600084828151811061264e5761264e6137c5565b01602090810151600084815260088352604080822060f89390931c80835292909352919091208054919250906126839061387d565b159050806126ab57506000828152600760209081526040808320848452909152902060020154155b156126b65750612728565b82156126df57836040516020016126cd9190613ea4565b60405160208183030381529060405293505b600082815260056020908152604080832060088352818420858552835292819020905161271193889390929101613f3c565b604051602081830303815290604052935060019250505b8061273281613a0e565b915050612630565b508160405160200161274c9190613fa9565b6040516020818303038152906040529650505050505050919050565b6060600061277583612ccf565b60010190506000816001600160401b03811115612794576127946137af565b6040519080825280601f01601f1916602001820160405280156127be576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846127c857509392505050565b6060611ed682604051806060016040528060408152602001614224604091396001612da7565b60405164ffffffffff600019833b0116602181016000601f8401853c80825260408201810160405250919050565b6060825160000361286e5750604080516020810190915260008152611ed6565b60208251116128b65760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070616c65747465206461746160601b6044820152606401610533565b60006128c183613d6c565b90506128ce600482613a57565b156129145760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e0c2d8cae8e8ca40d8cadccee8d60531b6044820152606401610533565b6000612921600483613a6b565b905061010081106129745760405162461bcd60e51b815260206004820152601860248201527f546f6f206d616e792070616c6574746520696e646963657300000000000000006044820152606401610533565b60006129818260016139c5565b6001600160401b03811115612998576129986137af565b6040519080825280602002602001820160405280156129cb57816020015b60608152602001906001900390816129b65790505b50905060005b8651811015612b785760008782815181106129ee576129ee6137c5565b016020015160f81c9050600088612a068460016139c5565b81518110612a1657612a166137c5565b016020015160f81c9050600089612a2e8560026139c5565b81518110612a3e57612a3e6137c5565b016020015160f81c905060008a612a568660036139c5565b81518110612a6657612a666137c5565b016020015160f81c905060008b612a7e8760046139c5565b81518110612a8e57612a8e6137c5565b016020015160f81c905060ff819003612aab575050505050612b66565b6000612ab98660ff16612768565b612ac58660ff16612768565b612ad18660ff16612768565b612add8660ff16612768565b604051602001612af09493929190613fce565b6040516020818303038152906040529050878260ff1681518110612b1657612b166137c5565b602002602001015181604051602001612b30929190613cdc565b604051602081830303815290604052888360ff1681518110612b5457612b546137c5565b60200260200101819052505050505050505b612b716005826139c5565b90506129d1565b50606060005b8381101561153b57828181518110612b9857612b986137c5565b60200260200101515160000315612c45576000612bb6826004613798565b90506000612bc382612f28565b90506000612bfe8a612bd68560206139c5565b612be19060036139c5565b81518110612bf157612bf16137c5565b016020015160f81c61325f565b9050848282888781518110612c1557612c156137c5565b6020026020010151604051602001612c30949392919061408b565b60405160208183030381529060405294505050505b80612c4f81613a0e565b915050612b7e565b6000612c64600483613a57565b15612caa5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e0c2d8cae8e8ca40d8cadccee8d60531b6044820152606401610533565b6000612cb7600484613a6b565b905080841080612cc757508360ff145b949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612d0e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612d3a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612d5857662386f26fc10000830492506010015b6305f5e1008310612d70576305f5e100830492506008015b6127108310612d8457612710830492506004015b60648310612d96576064830492506002015b600a8310611ed65760010192915050565b60608351600003612dc75750604080516020810190915260008152612f21565b600082612df857600385516004612dde9190613798565b612de99060026139c5565b612df39190613a6b565b612e1d565b600385516002612e0891906139c5565b612e129190613a6b565b612e1d906004613798565b90506000816001600160401b03811115612e3957612e396137af565b6040519080825280601f01601f191660200182016040528015612e63576020820181803683370190505b50905060018501602082018788518901602081018051600082525b82841015612ed9576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865350600185019450612e7e565b905250508515612f1a57600388510660018114612efd5760028114612f1057612f18565b603d6001830353603d6002830353612f18565b603d60018303535b505b5090925050505b9392505050565b60606000612f4a600260069054906101000a90046001600160a01b0316612820565b8051909150612f5a8460036139c5565b10612fa05760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a59081c185b195d1d19481bd9999cd95d60521b6044820152606401610533565b600081612fae8560206139c5565b81518110612fbe57612fbe6137c5565b0160209081015160f81c91506000908390612fda9087906139c5565b612fe59060016139c5565b81518110612ff557612ff56137c5565b0160209081015160f81c915060009084906130119088906139c5565b61301c9060026139c5565b8151811061302c5761302c6137c5565b602001015160f81c60f81b60f81c90506040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525060048460ff16901c60ff1681518110613080576130806137c5565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525084600f1660ff16815181106130cb576130cb6137c5565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525060048560ff16901c60ff168151811061311a5761311a6137c5565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525085600f1660ff1681518110613165576131656137c5565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525060048660ff16901c60ff16815181106131b4576131b46137c5565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525086600f1660ff16815181106131ff576131ff6137c5565b016020908101516040516001600160f81b0319978816928101929092529486166021820152928516602284015290841660238301528316602482015291166025820152602601604051602081830303815290604052945050505050919050565b60608160ff1660ff036132895750506040805180820190915260018152603160f81b602082015290565b8160ff166000036132b15750506040805180820190915260018152600360fc1b602082015290565b600060ff6132c38482166103e8613798565b6132cd9190613a6b565b90506132e26132dd606483613a6b565b612768565b6132fc600a6132f2606485613a57565b6132dd9190613a6b565b60405160200161330d929190614137565b604051602081830303815290604052915050919050565b60008083601f84011261333657600080fd5b5081356001600160401b0381111561334d57600080fd5b6020830191508360208260051b850101111561336857600080fd5b9250929050565b6000806020838503121561338257600080fd5b82356001600160401b0381111561339857600080fd5b6133a485828601613324565b90969095509350505050565b6000602082840312156133c257600080fd5b81356001600160a01b0381168114612f2157600080fd5b600080600080604085870312156133ef57600080fd5b84356001600160401b038082111561340657600080fd5b61341288838901613324565b9096509450602087013591508082111561342b57600080fd5b5061343887828801613324565b95989497509550505050565b60006020828403121561345657600080fd5b5035919050565b60005b83811015613478578181015183820152602001613460565b50506000910152565b6000815180845261349981602086016020860161345d565b601f01601f19169290920160200192915050565b602081526000612f216020830184613481565b60008083601f8401126134d257600080fd5b5081356001600160401b038111156134e957600080fd5b60208301915083602082850101111561336857600080fd5b6000806000806000806080878903121561351a57600080fd5b863595506020870135945060408701356001600160401b038082111561353f57600080fd5b61354b8a838b016134c0565b9096509450606089013591508082111561356457600080fd5b5061357189828a016134c0565b979a9699509497509295939492505050565b6000806040838503121561359657600080fd5b50508035926020909101359150565b600080602083850312156135b857600080fd5b82356001600160401b038111156135ce57600080fd5b6133a4858286016134c0565b6020808252825182820181905260009190848201906040850190845b81811015613612578351835292840192918401916001016135f6565b50909695505050505050565b803561ffff8116811461363057600080fd5b919050565b6000806040838503121561364857600080fd5b6136518361361e565b915061365f6020840161361e565b90509250929050565b60008060008060008060006080888a03121561368357600080fd5b8735965060208801356001600160401b03808211156136a157600080fd5b6136ad8b838c01613324565b909850965060408a01359150808211156136c657600080fd5b6136d28b838c01613324565b909650945060608a01359150808211156136eb57600080fd5b506136f88a828b01613324565b989b979a50959850939692959293505050565b60008060006040848603121561372057600080fd5b8335925060208401356001600160401b0381111561373d57600080fd5b613749868287016134c0565b9497909650939450505050565b60208082526012908201527110dbdb9d1c9858dd081a5cc81cd9585b195960721b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611ed657611ed6613782565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126137f257600080fd5b8301803591506001600160401b0382111561380c57600080fd5b6020019150600581901b360382131561336857600080fd5b81810381811115611ed657611ed6613782565b6000808335601e1984360301811261384e57600080fd5b8301803591506001600160401b0382111561386857600080fd5b60200191503681900382131561336857600080fd5b600181811c9082168061389157607f821691505b6020821081036138b157634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561390157600081815260208120601f850160051c810160208610156138de5750805b601f850160051c820191505b818110156138fd578281556001016138ea565b5050505b505050565b6001600160401b0383111561391d5761391d6137af565b6139318361392b835461387d565b836138b7565b6000601f841160018114613965576000851561394d5750838201355b600019600387901b1c1916600186901b178355610a51565b600083815260209020601f19861690835b828110156139965786850135825560209485019460019092019101613976565b50868210156139b35760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b80820180821115611ed657611ed6613782565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060018201613a2057613a20613782565b5060010190565b838152818360208301376000910160200190815292915050565b634e487b7160e01b600052601260045260246000fd5b600082613a6657613a66613a41565b500690565b600082613a7a57613a7a613a41565b500490565b60008351613a9181846020880161345d565b60f89390931b6001600160f81b0319169190920190815260010192915050565b60208082526017908201527f496e76616c696420636f6d706f7369746520696e646578000000000000000000604082015260600190565b60208082526010908201526f125b9d985b1a590818da1d5b9ac8125160821b604082015260600190565b6020808252600c908201526b139bdd081c995d99585b195960a21b604082015260600190565b727b226e616d65223a22506978656c4e4654202360681b81528351600090613b6781601385016020890161345d565b7f222c226465736372697074696f6e223a2246756c6c79206f6e2d636861696e206013918401918201527f706978656c20617274204e4654222c22696d616765223a22646174613a696d6160338201527119d94bdcdd99cade1b5b0ed8985cd94d8d0b60721b60538201528451613be581606584016020890161345d565b6e11161130ba3a3934b13aba32b9911d60891b606592909101918201528351613c1581607484016020880161345d565b607d60f81b6074929091019182015260750195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251613c6881601d85016020870161345d565b91909101601d0192915050565b60008551613c87818460208a0161345d565b855190830190613c9b818360208a0161345d565b600160fd1b91019081528451613cb881600184016020890161345d565b8451910190613cce81600184016020880161345d565b016001019695505050505050565b60008351613cee81846020880161345d565b835190830190613d0281836020880161345d565b01949350505050565b60008251613d1d81846020870161345d565b651e17b9bb339f60d11b920191825250600601919050565b60008451613d4781846020890161345d565b82018481528351613d5f81602080850190880161345d565b0160200195945050505050565b805160208083015191908110156138b15760001960209190910360031b1b16919050565b61ffff818116838216019080821115613dab57613dab613782565b5092915050565b81516001600160401b03811115613dcb57613dcb6137af565b613ddf81613dd9845461387d565b846138b7565b602080601f831160018114613e145760008415613dfc5750858301515b600019600386901b1c1916600185901b1785556138fd565b600085815260208120601f198616915b82811015613e4357888601518255948401946001909101908401613e24565b5085821015613e615787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b85815284602082015260a060408201526000613e9060a0830186613481565b606083019490945250608001529392505050565b60008251613eb681846020870161345d565b600b60fa1b920191825250600101919050565b60008154613ed68161387d565b60018281168015613eee5760018114613f0357613f32565b60ff1984168752821515830287019450613f32565b8560005260208060002060005b85811015613f295781548a820152908401908201613f10565b50505082870194505b5050505092915050565b60008451613f4e81846020890161345d565b6e3d913a3930b4ba2fba3cb832911d1160891b908301908152613f74600f820186613ec9565b6a1116113b30b63ab2911d1160a91b81529050613f94600b820185613ec9565b61227d60f01b81526002019695505050505050565b60008251613fbb81846020870161345d565b605d60f81b920191825250600101919050565b681e3932b1ba103c1e9160b91b81528451600090613ff3816009850160208a0161345d565b6411103c9e9160d91b600991840191820152855161401881600e840160208a0161345d565b6811103bb4b23a341e9160b91b600e9290910191820152845161404281601784016020890161345d565b6911103432b4b3b43a1e9160b11b60179290910191820152835161406d81602184016020880161345d565b6211179f60e91b602192909101918201526024019695505050505050565b6000855161409d818460208a0161345d565b693c672066696c6c3d222360b01b90830190815285516140c481600a840160208a0161345d565b6f11103334b63616b7b830b1b4ba3c9e9160811b600a929091019182015284516140f581601a84016020890161345d565b61111f60f11b601a9290910191820152835161411881601c84016020880161345d565b631e17b39f60e11b601c92909101918201526020019695505050505050565b61181760f11b81526000835161415481600285016020880161345d565b83519083019061416b81600284016020880161345d565b0160020194935050505056fe223e3c7374796c653e726563747b73686170652d72656e646572696e673a637269737045646765737d3c2f7374796c653e3c7376672077696474683d223132303022206865696768743d2231323030222073686170652d72656e646572696e673d22637269737045646765732220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667222076657273696f6e3d22312e32222076696577426f783d22302030204142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220a67f015cfb5ae941f32173aa19567724e95f56a275f61540229f467bcab45ca364736f6c63430008140033