0 txs
34 calls
constructor
constructor(address _galaxisRegistry)
functions
accountsByToken
viewfunction accountsByToken(uint256 id) view returns (address[])
balanceOf
viewfunction balanceOf(address account, uint256 id) view returns (uint256)
balanceOfBatch
viewfunction balanceOfBatch(address[] accounts, uint256[] ids) view returns (uint256[])
collectionIDs
viewfunction collectionIDs() view returns (uint256[])
collectionTraitNumberIds
viewfunction collectionTraitNumberIds(uint32 _tokenNumber, uint16 _traitID) view returns (uint256[])
collectionTraitNumberIdsByPage
viewfunction collectionTraitNumberIdsByPage(uint32 _tokenNumber, uint16 _traitID, uint256 start, uint256 length) view returns (uint256[])
collectionTraitNumbers
viewfunction collectionTraitNumbers(uint32 _tokenNumber) view returns (uint256[])
communityId
viewfunction communityId() view returns (uint32)
configurationData
viewfunction configurationData(uint32, uint16, uint256) view returns (bytes)
configurationMaxPointer
viewfunction configurationMaxPointer(uint32, uint16) view returns (uint256)
counterByPointer
viewfunction counterByPointer(uint256) view returns (uint256)
galaxisRegistry
viewfunction galaxisRegistry() view returns (address)
getData
viewfunction getData(uint32 tokenNum, uint16 traitNum, uint256 pointer) view returns (bytes)
getInfo
viewfunction getInfo(uint256 _tokenId) view returns (uint32 tokenNum, uint16 traitNum, uint256 pointer, bytes _configurationData, tuple[] traitProperties)
holders
viewfunction holders() view returns (address[] holderz)
holders
viewfunction holders(uint256 start, uint256 count) view returns (address[] holderz)
isApprovedForAll
viewfunction isApprovedForAll(address account, address operator) view returns (bool)
makeId
purefunction makeId(uint32 tokenNumber, uint16 traitNumber, uint256 value) pure returns (uint256)
name
viewfunction name() view returns (string)
numberOfHolders
viewfunction numberOfHolders() view returns (uint256)
numberOfTokenIds
viewfunction numberOfTokenIds() view returns (uint256)
numberOfTraitNumberIds
viewfunction numberOfTraitNumberIds(uint32 _tokenNumber, uint16 _traitID) view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenIds
viewfunction tokenIds() view returns (uint256[] ids)
tokenIds
viewfunction tokenIds(uint256 start, uint256 count) view returns (uint256[] ids)
tokenIdsAndBalances
viewfunction tokenIdsAndBalances(address holder) view returns (uint256[] _ids, uint256[] _balances)
tokenNumberQty
viewfunction tokenNumberQty(uint32) view returns (uint256)
tokensByAccount
viewfunction tokensByAccount(address account) view returns (uint256[])
tokenTraitQty
viewfunction tokenTraitQty(uint32, uint16) view returns (uint256)
totalHolders
viewfunction totalHolders(uint256 id) view returns (uint256)
totalSupply
viewfunction totalSupply(uint256 id) view returns (uint256)
uri
viewfunction uri(uint256 tokenId) view returns (string)
UTILITY_TRAIT_COUPON_ADMIN
viewfunction UTILITY_TRAIT_COUPON_ADMIN() view returns (bytes32)
version
purefunction version() pure returns (uint256)
burn
nonpayablefunction burn(uint256 _tokenId, uint256 quantity)
init
nonpayablefunction init(uint32 _communityId, string _uri)
mint
nonpayablefunction mint(uint32 _tokenNumber, uint16 _traitNumber, address _recipient, uint256 _numberToMint, bytes data, uint256 _counter)
safeBatchTransferFrom
nonpayablefunction safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] amounts, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes data)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool status)
setURI
nonpayablefunction setURI(string _uri)
events
ApprovalForAll
event ApprovalForAll(address indexed account, address indexed operator, bool approved)
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)
URI
event URI(string value, uint256 indexed tokenId)
errors
EnumerableSet__IndexOutOfBounds
error EnumerableSet__IndexOutOfBounds()
ERC1155Base__ArrayLengthMismatch
error ERC1155Base__ArrayLengthMismatch()
ERC1155Base__BalanceQueryZeroAddress
error ERC1155Base__BalanceQueryZeroAddress()
ERC1155Base__BurnExceedsBalance
error ERC1155Base__BurnExceedsBalance()
ERC1155Base__BurnFromZeroAddress
error ERC1155Base__BurnFromZeroAddress()
ERC1155Base__ERC1155ReceiverNotImplemented
error ERC1155Base__ERC1155ReceiverNotImplemented()
ERC1155Base__ERC1155ReceiverRejected
error ERC1155Base__ERC1155ReceiverRejected()
ERC1155Base__MintToZeroAddress
error ERC1155Base__MintToZeroAddress()
ERC1155Base__NotOwnerOrApproved
error ERC1155Base__NotOwnerOrApproved()
ERC1155Base__SelfApproval
error ERC1155Base__SelfApproval()
ERC1155Base__TransferExceedsBalance
error ERC1155Base__TransferExceedsBalance()
ERC1155Base__TransferToZeroAddress
error ERC1155Base__TransferToZeroAddress()
ERC165Base__InvalidInterfaceId
error ERC165Base__InvalidInterfaceId()
creation bytecode
0x60a060405234801561001057600080fd5b506040516141e73803806141e783398101604081905261002f916101da565b6001600160a01b03811660805260408051808201909152601b81527f474f4c44454e5f5554494c4954595f54524149545f434f55504f4e0000000000602082015261007990610091565b61008b6301193f3d60e61b6001610164565b5061036a565b60045460ff16156100fc5760405162461bcd60e51b815260206004820152602b60248201527f4552433131353546756c6c79456e756d657261626c653a20616c72656164792060448201526a1a5b9a5d1a585b1a5cd95960aa1b606482015260840160405180910390fd5b61010e6301ffc9a760e01b6001610164565b610120636cdb3d1360e11b6001610164565b6004805460ff19166001179055806101557f4281b61aefbe70b3d3f684b428efca5f33077bc240e76f2808f9177c307617f490565b9061016090826102ab565b5050565b6001600160e01b0319808316900361018f5760405163b0a19dd560e01b815260040160405180910390fd5b6001600160e01b03199190911660009081527ffc606c433378e3a7e0a6a531deac289b66caa1b4aa8554fd4ab2c6f1570f92d860205260409020805460ff1916911515919091179055565b6000602082840312156101ec57600080fd5b81516001600160a01b038116811461020357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061023457607f821691505b60208210810361025457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156102a6576000816000526020600020601f850160051c810160208610156102835750805b601f850160051c820191505b818110156102a25782815560010161028f565b5050505b505050565b81516001600160401b038111156102c4576102c461020a565b6102d8816102d28454610220565b8461025a565b602080601f83116001811461030d57600084156102f55750858301515b600019600386901b1c1916600185901b1785556102a2565b600085815260208120601f198616915b8281101561033c5788860151825594840194600190910190840161031d565b508582101561035a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051613e466103a16000396000818161046b015281816107ee0152818161108e015281816113ba0152611b240152613e466000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c8063714cff5611610146578063a22cb465116100c3578063dc47b3c111610087578063dc47b3c1146105d6578063e985e9c5146105de578063e9949c58146105f1578063eed8cc3514610604578063f242432a14610617578063f6d465891461062a57600080fd5b8063a22cb46514610577578063aed6176e1461058a578063b390c0ab1461059d578063bd85b039146105b0578063ca0425f2146105c357600080fd5b806383485eed1161010a57806383485eed146104d857806385bff2e7146104f8578063899dfbea1461050b57806395d89b41146105365780639ba12dfa1461055657600080fd5b8063714cff5614610456578063725639a01461045e5780637671114d146104665780637f50861a146104a55780638188f71c146104d057600080fd5b80631972793f116101df5780634860f5ce116101a35780634860f5ce146103e05780634e1273f4146103f35780635272e8821461040657806354fd4d50146104195780635b521461146104235780636dcfd8411461043657600080fd5b80631972793f1461036e5780631a3cd59a146103815780631a81397f146103a55780632eb2c2d6146103b857806343bb6eb8146103cb57600080fd5b806306fdde031161022657806306fdde03146102f35780630807c62d146103085780630e89341c1461032857806313ba55df1461033b57806315473de01461034e57600080fd5b8062fdd58e146102625780630199c7b21461028857806301ffc9a71461029057806302fe5305146102b357806305b2c810146102c8575b600080fd5b610275610270366004612d03565b61063d565b6040519081526020015b60405180910390f35b610275610652565b6102a361029e366004612d45565b610663565b604051901515815260200161027f565b6102c66102c1366004612daa565b6106a4565b005b6102756102d6366004612e14565b600660209081526000928352604080842090915290825290205481565b6102fb61076d565b60405161027f9190612e99565b610275610316366004612eac565b60076020526000908152604090205481565b6102fb610336366004612ec9565b6107ac565b610275610349366004612ec9565b61094c565b61036161035c366004612ee2565b610957565b60405161027f9190612f62565b61027561037c366004612e14565b610a6b565b61039461038f366004612ec9565b610a98565b60405161027f959493929190612f75565b6102fb6103b3366004613092565b610d0a565b6102c66103c636600461324c565b610db5565b610275600080516020613dd183398151915281565b6102fb6103ee366004613092565b610e07565b6103616104013660046132f9565b610ec9565b6102c66104143660046133c5565b611033565b6378a5a051610275565b6102c6610431366004613419565b61137b565b610449610444366004612ec9565b611658565b60405161027f91906134a4565b610361611663565b61036161166f565b61048d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161027f565b6004546104bb9062010000900463ffffffff1681565b60405163ffffffff909116815260200161027f565b61044961167b565b6102756104e6366004612ec9565b600d6020526000908152604090205481565b6103616105063660046134f1565b611687565b610275610519366004612e14565b600860209081526000928352604080842090915290825290205481565b6040805180820190915260048152634755544360e01b60208201526102fb565b6105696105643660046134f1565b611692565b60405161027f92919061350e565b6102c661058536600461354a565b6116b4565b610449610598366004613583565b611768565b6102c66105ab366004613583565b611870565b6102756105be366004612ec9565b61187b565b6102756105d1366004613092565b6118ae565b6102756118c3565b6102a36105ec3660046135a5565b6118cf565b6103616105ff366004612e14565b61191c565b610361610612366004613583565b61194c565b6102c66106253660046135d3565b611a11565b610361610638366004612eac565b611a5c565b60006106498383611a7d565b90505b92915050565b600061065e6000611adb565b905090565b6001600160e01b0319811660009081527ffc606c433378e3a7e0a6a531deac289b66caa1b4aa8554fd4ab2c6f1570f92d8602052604081205460ff1661064c565b6004546106bc9062010000900463ffffffff16611ae5565b604051632474521560e21b8152600080516020613dd183398151915260048201523360248201526001600160a01b0391909116906391d1485490604401602060405180830381865afa158015610716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073a9190613646565b61075f5760405162461bcd60e51b815260040161075690613663565b60405180910390fd5b6107698282611c1b565b5050565b6004546060906107889062010000900463ffffffff16611c47565b60405160200161079891906136aa565b604051602081830303815290604052905090565b604080518082018252601081526f54524149545f434f55504f4e5f55524960801b60208201529051631d2e660b60e21b81526060916000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916374b9982c916108229190600401612e99565b602060405180830381865afa15801561083f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108639190613703565b90506001600160a01b0381166108bb5760405162461bcd60e51b815260206004820152601860248201527f54524149545f434f55504f4e5f555249206e6f742073657400000000000000006044820152606401610756565b600480546040516376391ab760e11b8152309281019290925262010000900463ffffffff166024820152604481018490526001600160a01b0382169063ec72356e90606401600060405180830381865afa15801561091d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610945919081019061376f565b9392505050565b600061064c82611d47565b63ffffffff84166000908152600c6020908152604080832061ffff8716845290915281206060919061098890611adb565b90508061099584866137b9565b11156109a8576109a584826137cc565b92505b6000836001600160401b038111156109c2576109c26130d0565b6040519080825280602002602001820160405280156109eb578160200160208202803683370190505b50905060005b84811015610a60576000610a0582886137b9565b63ffffffff808b166000908152600c6020908152604080832061ffff8e1684529091529020919250610a3a91908390611d7d16565b838381518110610a4c57610a4c6137df565b6020908102919091010152506001016109f1565b509695505050505050565b63ffffffff82166000908152600c6020908152604080832061ffff85168452909152812061064990611adb565b63ffffffff601082901c16600081815260056020908152604080832061ffff8616808552908352818420603087901c8086529352922080546060918291610ade906137f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0a906137f5565b8015610b575780601f10610b2c57610100808354040283529160200191610b57565b820191906000526020600020905b815481529060010190602001808311610b3a57829003601f168201915b505050505091506000610b6f8663ffffffff16611c47565b604051602001610b7f919061382f565b60405160208183030381529060405290506000610bad600460029054906101000a900463ffffffff16611ae5565b90506000816001600160a01b03166374b9982c846040518263ffffffff1660e01b8152600401610bdd9190612e99565b602060405180830381865afa158015610bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1e9190613703565b6040516301db446960e01b815261ffff8916600482015290915081906000906001600160a01b038316906301db446990602401602060405180830381865afa158015610c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c929190613703565b9050806001600160a01b0316636b122fe06040518163ffffffff1660e01b8152600401600060405180830381865afa158015610cd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cfa9190810190613880565b9550505050505091939590929450565b600560209081526000938452604080852082529284528284209052825290208054610d34906137f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d60906137f5565b8015610dad5780601f10610d8257610100808354040283529160200191610dad565b820191906000526020600020905b815481529060010190602001808311610d9057829003601f168201915b505050505081565b6001600160a01b0385163314801590610dd55750610dd385336118cf565b155b15610df2576040516212efed60e91b815260040160405180910390fd5b610e00338686868686611d89565b5050505050565b63ffffffff8316600090815260056020908152604080832061ffff8616845282528083208484529091529020805460609190610e42906137f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6e906137f5565b8015610ebb5780601f10610e9057610100808354040283529160200191610ebb565b820191906000526020600020905b815481529060010190602001808311610e9e57829003601f168201915b505050505090509392505050565b60608151835114610eed57604051633e7e0b6d60e11b815260040160405180910390fd5b8251600080516020613df1833981519152906000906001600160401b03811115610f1957610f196130d0565b604051908082528060200260200182016040528015610f42578160200160208202803683370190505b50905060005b855181101561102a5760006001600160a01b0316868281518110610f6e57610f6e6137df565b60200260200101516001600160a01b031603610f9d5760405163db5d879760e01b815260040160405180910390fd5b826000868381518110610fb257610fb26137df565b602002602001015181526020019081526020016000206000878381518110610fdc57610fdc6137df565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611017576110176137df565b6020908102919091010152600101610f48565b50949350505050565b6110456301193f3d60e61b6001611dad565b604080518082018252601b81527f474f4c44454e5f5554494c4954595f54524149545f434f55504f4e000000000060208201529051631d2e660b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916374b9982c916110c29190600401612e99565b602060405180830381865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111039190613703565b6001600160a01b031630036111805760405162461bcd60e51b815260206004820152603a60248201527f5574696c6974795472616974436f75706f6e3a20476f6c64656e20636f6e747260448201527f616374732063616e6e6f7420626520696e697469616c697365640000000000006064820152608401610756565b600454610100900460ff16156111f15760405162461bcd60e51b815260206004820152603060248201527f5574696c6974795472616974436f75706f6e3a20636f6e747261637420616c7260448201526f1958591e481a5b9a5d1a585b1a5cd95960821b6064820152608401610756565b6004805461ff001916610100179055600061120b84611ae5565b60408051808201825260148152732aaa24a624aa2cafaa2920a4aa2fa1a7aaa827a760611b60208201529051631d2e660b60e21b81526001600160a01b0392909216916374b9982c9161126091600401612e99565b602060405180830381865afa15801561127d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a19190613703565b6001600160a01b03161461131d5760405162461bcd60e51b815260206004820152603a60248201527f5574696c6974795472616974436f75706f6e3a20636f6d6d756e69747920616c60448201527f72656164792068617320612054656c65706f727420546f6b656e0000000000006064820152608401610756565b6004805465ffffffff000019166201000063ffffffff861602179055604080516020601f8401819004810282018101909252828152611376918490849081908401838280828437600092019190915250611e2392505050565b505050565b60408051808201825260138152722a2920a4aa2fa1a7aaa827a72fa6a4a72a22a960691b60208201529051631d2e660b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916374b9982c916113ee9190600401612e99565b602060405180830381865afa15801561140b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142f9190613703565b6001600160a01b0316336001600160a01b031614806114df57506004546114619062010000900463ffffffff16611ae5565b604051632474521560e21b8152600080516020613dd183398151915260048201523360248201526001600160a01b0391909116906391d1485490604401602060405180830381865afa1580156114bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114df9190613646565b8061157b57506004546114fd9062010000900463ffffffff16611ae5565b604051631092dd0160e11b8152600080516020613dd183398151915260048201523360248201526001600160a01b039190911690632125ba0290604401602060405180830381865afa158015611557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157b9190613646565b6115975760405162461bcd60e51b815260040161075690613663565b600082156116235763ffffffff8816600090815260066020908152604080832061ffff8b168452909152812080549091906115d1906139d4565b918290555063ffffffff8916600090815260056020908152604080832061ffff8c16845282528083208484529091529020909150611610848683613a35565b506000818152600d602052604090208290555b6000611630898984611eee565b905060606116408a8a848a611f19565b61164c88838984611fe9565b50505050505050505050565b606061064c826120c3565b606061065e60026120fc565b606061065e60096120fc565b606061065e6000612158565b606061064c826121bd565b60608061169e836121bd565b91506116ad828461063d612200565b9050915091565b6001600160a01b03821633036116dd57604051637b30a93360e11b815260040160405180910390fd5b3360008181527f1799cf914cb0cb442ca7c7ac709ee40d0cb89e87351dc08d517fbda27d50c68c602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b606060006117766000611adb565b90508084106117b45760005b6040519080825280602002602001820160405280156117ab578160200160208202803683370190505b5091505061064c565b806117bf84866137b9565b11156117d2576117cf84826137cc565b92505b826001600160401b038111156117ea576117ea6130d0565b604051908082528060200260200182016040528015611813578160200160208202803683370190505b50915060005b838110156118685761183661182e86836137b9565b600090611d7d565b838281518110611848576118486137df565b6001600160a01b0390921660209283029190910190910152600101611819565b505092915050565b6107693383836122a7565b60008181527fb31c2c74f86ca3ce94d901f5f5bbe66f7161eec2f7b5aa0b75a86371436424ea602052604081205461064c565b60006118bb848484611eee565b949350505050565b600061065e6002611adb565b6001600160a01b0391821660009081527f1799cf914cb0cb442ca7c7ac709ee40d0cb89e87351dc08d517fbda27d50c68c6020908152604080832093909416825291909152205460ff1690565b63ffffffff82166000908152600c6020908152604080832061ffff851684529091529020606090610649906120fc565b6060600061195a6002611adb565b905080841061196a576000611782565b8061197584866137b9565b11156119885761198584826137cc565b92505b826001600160401b038111156119a0576119a06130d0565b6040519080825280602002602001820160405280156119c9578160200160208202803683370190505b50915060005b83811015611868576119ec6119e482876137b9565b600290611d7d565b8382815181106119fe576119fe6137df565b60209081029190910101526001016119cf565b6001600160a01b0385163314801590611a315750611a2f85336118cf565b155b15611a4e576040516212efed60e91b815260040160405180910390fd5b610e003386868686866123a6565b63ffffffff81166000908152600b6020526040902060609061064c906120fc565b60006001600160a01b038316611aa65760405163db5d879760e01b815260040160405180910390fd5b600080516020613df18339815191526000928352602090815260408084206001600160a01b0395909516845293905250205490565b600061064c825490565b604080518082018252600e81526d10d3d353555392551657d31254d560921b60208201529051631d2e660b60e21b815260009182916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916374b9982c91611b589190600401612e99565b602060405180830381865afa158015611b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b999190613703565b60405163d0f4a53760e01b815263ffffffff851660048201529091506000906001600160a01b0383169063d0f4a53790602401600060405180830381865afa158015611be9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c119190810190613af4565b5095945050505050565b7f4281b61aefbe70b3d3f684b428efca5f33077bc240e76f2808f9177c307617f4611376828483613a35565b606081600003611c6e5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611c985780611c82816139d4565b9150611c919050600a83613b6e565b9150611c72565b6000816001600160401b03811115611cb257611cb26130d0565b6040519080825280601f01601f191660200182016040528015611cdc576020820181803683370190505b5090505b84156118bb57611cf16001836137cc565b9150611cfe600a86613b82565b611d099060306137b9565b60f81b818381518110611d1e57611d1e6137df565b60200101906001600160f81b031916908160001a905350611d40600a86613b6e565b9450611ce0565b60008181527fb31c2c74f86ca3ce94d901f5f5bbe66f7161eec2f7b5aa0b75a86371436424eb6020526040812061064c90611adb565b600061064983836123c2565b611d9786868686868661240e565b611da58686868686866125b7565b505050505050565b6001600160e01b03198083169003611dd85760405163b0a19dd560e01b815260040160405180910390fd5b6001600160e01b03199190911660009081527ffc606c433378e3a7e0a6a531deac289b66caa1b4aa8554fd4ab2c6f1570f92d860205260409020805460ff1916911515919091179055565b60045460ff1615611e8a5760405162461bcd60e51b815260206004820152602b60248201527f4552433131353546756c6c79456e756d657261626c653a20616c72656164792060448201526a1a5b9a5d1a585b1a5cd95960aa1b6064820152608401610756565b611e9c6301ffc9a760e01b6001611dad565b611eae636cdb3d1360e11b6001611dad565b6004805460ff1916600117905580611ee37f4281b61aefbe70b3d3f684b428efca5f33077bc240e76f2808f9177c307617f490565b906107699082613b96565b6000603082901b611f0f65ffffffff0000601087901b1661ffff86166137b9565b6118bb91906137b9565b611f2d600963ffffffff808716906126d016565b5063ffffffff8085166000908152600b60205260409020611f549161ffff8616906126d016565b5063ffffffff841660009081526007602052604081208054839290611f7a9084906137b9565b909155505063ffffffff8416600090815260086020908152604080832061ffff8716845290915281208054839290611fb39084906137b9565b909155505063ffffffff8085166000908152600c6020908152604080832061ffff881684529091529020610e009184906126d016565b6001600160a01b038416612010576040516301c8efbf60e11b815260040160405180910390fd5b61202f33600086612020876126dc565b612029876126dc565b86612727565b6000838152600080516020613df1833981519152602090815260408083206001600160a01b03881684529091528120805484929061206e9084906137b9565b909155505060408051848152602081018490526001600160a01b0386169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291015b60405180910390a450505050565b60008181527fb31c2c74f86ca3ce94d901f5f5bbe66f7161eec2f7b5aa0b75a86371436424eb6020526040902060609061064c90612158565b8054604080516020808402820181019092528281526060928492839291839183018282801561214a57602002820191906000526020600020905b815481526020019060010190808311612136575b505050505092505050919050565b8054604080516020808402820181019092528281526060928492839291839183018282801561214a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161219257505050505092505050919050565b6001600160a01b03811660009081527fb31c2c74f86ca3ce94d901f5f5bbe66f7161eec2f7b5aa0b75a86371436424ec6020526040902060609061064c906120fc565b606083516001600160401b0381111561221b5761221b6130d0565b604051908082528060200260200182016040528015612244578160200160208202803683370190505b50905060005b845181101561229f5761227a84868381518110612269576122696137df565b60200260200101518563ffffffff16565b82828151811061228c5761228c6137df565b602090810291909101015260010161224a565b509392505050565b6001600160a01b0383166122ce5760405163baa75df760e01b815260040160405180910390fd5b6122fc338460006122de866126dc565b6122e7866126dc565b60405180602001604052806000815250612727565b6000828152600080516020613df1833981519152602090815260408083206001600160a01b0387168452918290529091205482111561234e57604051634190713d60e01b815260040160405180910390fd5b6001600160a01b03841660008181526020838152604080832080548790039055805187815291820186905291929133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291016120b5565b6123b48686868686866127e1565b611da58686868686866128f7565b815460009082106123e65760405163e637bf3b60e01b815260040160405180910390fd5b8260000182815481106123fb576123fb6137df565b9060005260206000200154905092915050565b6001600160a01b0384166124355760405163f5cadad560e01b815260040160405180910390fd5b815183511461245757604051633e7e0b6d60e11b815260040160405180910390fd5b612465868686868686612727565b600080516020613df183398151915260005b8451811015612556576000858281518110612494576124946137df565b6020026020010151905060008583815181106124b2576124b26137df565b602090810291909101810151600084815286835260408082206001600160a01b038e1683529093529190912054909150808211156125035760405163119ac6bb60e31b815260040160405180910390fd5b6000838152602086815260408083206001600160a01b038e811685529252808320938590039093558a1681529081208054600195909501948392906125499084906137b9565b9091555061247792505050565b50846001600160a01b0316866001600160a01b0316886001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516125a692919061350e565b60405180910390a450505050505050565b6001600160a01b0384163b15611da55760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906125fb9089908990889088908890600401613c55565b6020604051808303816000875af1925050508015612636575060408051601f3d908101601f1916820190925261263391810190613cb3565b60015b61269657612642613cd0565b806308c379a00361267b5750612656613cec565b80612661575061267d565b8060405162461bcd60e51b81526004016107569190612e99565b505b60405163380147a960e01b815260040160405180910390fd5b6001600160e01b0319811663bc197c8160e01b146126c757604051633744db2960e01b815260040160405180910390fd5b50505050505050565b600061064983836129b3565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612716576127166137df565b602090810291909101015292915050565b6127358686868686866129f6565b6001600160a01b03841661276c57600061274e86611687565b9050805160000361276657612764600087612a04565b505b50612779565b612777600085612a19565b505b60005b83518110156126c7576000848281518110612799576127996137df565b6020026020010151905060006127ae82611658565b905080516000036127ca576127c4600283612a2e565b506127d7565b6127d56002836126d0565b505b505060010161277c565b6001600160a01b0384166128085760405163f5cadad560e01b815260040160405180910390fd5b612817868686612020876126dc565b6000838152600080516020613df1833981519152602081815260408084206001600160a01b038a16855290915290912054808411156128695760405163119ac6bb60e31b815260040160405180910390fd5b6000858152602083815260408083206001600160a01b038b811685529252808320938790039093558716815290812080548592906128a89084906137b9565b909155505060408051858152602081018590526001600160a01b038088169289821692918b16917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291016125a6565b6001600160a01b0384163b15611da55760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061293b9089908990889088908890600401613d75565b6020604051808303816000875af1925050508015612976575060408051601f3d908101601f1916820190925261297391810190613cb3565b60015b61298257612642613cd0565b6001600160e01b0319811663f23a6e6160e01b146126c757604051633744db2960e01b815260040160405180910390fd5b600081815260018301602052604081205461064c575081546001808201845560008481526020808220909301849055845493815293810190915260409092205590565b611da5868686868686612a3a565b6000610649836001600160a01b038416612c26565b6000610649836001600160a01b0384166129b3565b60006106498383612c26565b836001600160a01b0316856001600160a01b031614611da5576001600160a01b0385811660009081527fb31c2c74f86ca3ce94d901f5f5bbe66f7161eec2f7b5aa0b75a86371436424ec6020526040808220928716825281207fb31c2c74f86ca3ce94d901f5f5bbe66f7161eec2f7b5aa0b75a86371436424ea927fb31c2c74f86ca3ce94d901f5f5bbe66f7161eec2f7b5aa0b75a86371436424eb929091905b8751811015612c19576000878281518110612af857612af86137df565b602002602001015190506000811115612c10576000898381518110612b1f57612b1f6137df565b6020026020010151905060006001600160a01b03168c6001600160a01b031603612b6c5760008181526020889052604081208054849290612b619084906137b9565b90915550612ba19050565b81612b778d83611a7d565b03612ba1576000818152602087905260409020612b94908d612a04565b50612b9f8582612a2e565b505b6001600160a01b038b16612bd85760008181526020889052604081208054849290612bcd9084906137cc565b90915550612c0e9050565b612be28b82611a7d565b600003612c0e576000818152602087905260409020612c01908c612a19565b50612c0c84826126d0565b505b505b50600101612adb565b5050505050505050505050565b60008181526001830160205260408120548015612ce457835460009085906000198101908110612c5857612c586137df565b9060005260206000200154905080856000016001840381548110612c7e57612c7e6137df565b6000918252602080832090910192909255918252600186019052604090208190558354849080612cb057612cb0613dba565b6001900381819060005260206000200160009055905583600101600084815260200190815260200160002060009055600191505b5092915050565b6001600160a01b0381168114612d0057600080fd5b50565b60008060408385031215612d1657600080fd5b8235612d2181612ceb565b946020939093013593505050565b6001600160e01b031981168114612d0057600080fd5b600060208284031215612d5757600080fd5b813561094581612d2f565b60008083601f840112612d7457600080fd5b5081356001600160401b03811115612d8b57600080fd5b602083019150836020828501011115612da357600080fd5b9250929050565b60008060208385031215612dbd57600080fd5b82356001600160401b03811115612dd357600080fd5b612ddf85828601612d62565b90969095509350505050565b63ffffffff81168114612d0057600080fd5b803561ffff81168114612e0f57600080fd5b919050565b60008060408385031215612e2757600080fd5b8235612e3281612deb565b9150612e4060208401612dfd565b90509250929050565b60005b83811015612e64578181015183820152602001612e4c565b50506000910152565b60008151808452612e85816020860160208601612e49565b601f01601f19169290920160200192915050565b6020815260006106496020830184612e6d565b600060208284031215612ebe57600080fd5b813561094581612deb565b600060208284031215612edb57600080fd5b5035919050565b60008060008060808587031215612ef857600080fd5b8435612f0381612deb565b9350612f1160208601612dfd565b93969395505050506040820135916060013590565b60008151808452602080850194506020840160005b83811015612f5757815187529582019590820190600101612f3b565b509495945050505050565b6020815260006106496020830184612f26565b600060a063ffffffff88168352602061ffff8816818501526040876040860152606060a06060870152612fab60a0870189612e6d565b608087820360808901528189518084528684019150868160051b850101878c016000805b8481101561307957601f198885030186528251610100815186528c8201516014811061300957634e487b7160e01b85526021600452602485fd5b868e0152818c01516001600160e01b0319168c8701528a8201518b870182905261303582880182612e6d565b915050888201516130498a88018215159052565b50818e0151868f015260c0808301519087015260e09182015115159190950152948a0194918a0191600101612fcf565b5050508099505050505050505050509695505050505050565b6000806000606084860312156130a757600080fd5b83356130b281612deb565b92506130c060208501612dfd565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b038111828210171561310b5761310b6130d0565b6040525050565b60405161010081016001600160401b0381118282101715613135576131356130d0565b60405290565b60006001600160401b03821115613154576131546130d0565b5060051b60200190565b600082601f83011261316f57600080fd5b8135602061317c8261313b565b60405161318982826130e6565b80915083815260208101915060208460051b8701019350868411156131ad57600080fd5b602086015b84811015610a6057803583529183019183016131b2565b60006001600160401b038211156131e2576131e26130d0565b50601f01601f191660200190565b600082601f83011261320157600080fd5b813561320c816131c9565b60405161321982826130e6565b82815285602084870101111561322e57600080fd5b82602086016020830137600092810160200192909252509392505050565b600080600080600060a0868803121561326457600080fd5b853561326f81612ceb565b9450602086013561327f81612ceb565b935060408601356001600160401b038082111561329b57600080fd5b6132a789838a0161315e565b945060608801359150808211156132bd57600080fd5b6132c989838a0161315e565b935060808801359150808211156132df57600080fd5b506132ec888289016131f0565b9150509295509295909350565b6000806040838503121561330c57600080fd5b82356001600160401b038082111561332357600080fd5b818501915085601f83011261333757600080fd5b813560206133448261313b565b60405161335182826130e6565b83815260059390931b850182019282810191508984111561337157600080fd5b948201945b8386101561339857853561338981612ceb565b82529482019490820190613376565b965050860135925050808211156133ae57600080fd5b506133bb8582860161315e565b9150509250929050565b6000806000604084860312156133da57600080fd5b83356133e581612deb565b925060208401356001600160401b0381111561340057600080fd5b61340c86828701612d62565b9497909650939450505050565b600080600080600080600060c0888a03121561343457600080fd5b873561343f81612deb565b965061344d60208901612dfd565b9550604088013561345d81612ceb565b94506060880135935060808801356001600160401b0381111561347f57600080fd5b61348b8a828b01612d62565b989b979a5095989497959660a090950135949350505050565b6020808252825182820181905260009190848201906040850190845b818110156134e55783516001600160a01b0316835292840192918401916001016134c0565b50909695505050505050565b60006020828403121561350357600080fd5b813561094581612ceb565b6040815260006135216040830185612f26565b82810360208401526135338185612f26565b95945050505050565b8015158114612d0057600080fd5b6000806040838503121561355d57600080fd5b823561356881612ceb565b915060208301356135788161353c565b809150509250929050565b6000806040838503121561359657600080fd5b50508035926020909101359150565b600080604083850312156135b857600080fd5b82356135c381612ceb565b9150602083013561357881612ceb565b600080600080600060a086880312156135eb57600080fd5b85356135f681612ceb565b9450602086013561360681612ceb565b9350604086013592506060860135915060808601356001600160401b0381111561362f57600080fd5b6132ec888289016131f0565b8051612e0f8161353c565b60006020828403121561365857600080fd5b81516109458161353c565b60208082526027908201527f5574696c6974795472616974436f75706f6e3a20756e617574686f72697365646040820152661036b4b73a32b960c91b606082015260800190565b7f47616c61786973205574696c69747920547261697420436f75706f6e20666f7281526a01031b7b6b6bab734ba3c960ad1b6020820152600082516136f681602b850160208701612e49565b91909101602b0192915050565b60006020828403121561371557600080fd5b815161094581612ceb565b600082601f83011261373157600080fd5b815161373c816131c9565b60405161374982826130e6565b82815285602084870101111561375e57600080fd5b613533836020830160208801612e49565b60006020828403121561378157600080fd5b81516001600160401b0381111561379757600080fd5b6118bb84828501613720565b634e487b7160e01b600052601160045260246000fd5b8082018082111561064c5761064c6137a3565b8181038181111561064c5761064c6137a3565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061380957607f821691505b60208210810361382957634e487b7160e01b600052602260045260246000fd5b50919050565b6e54524149545f52454749535452595f60881b81526000825161385981600f850160208701612e49565b91909101600f0192915050565b805160148110612e0f57600080fd5b8051612e0f81612d2f565b6000602080838503121561389357600080fd5b82516001600160401b03808211156138aa57600080fd5b818501915085601f8301126138be57600080fd5b81516138c98161313b565b6040516138d682826130e6565b82815260059290921b84018501918581019150888311156138f657600080fd5b8585015b838110156139c75780518581111561391157600080fd5b8601610100818c03601f190181131561392957600080fd5b613931613112565b89830151815261394360408401613866565b8a82015261395360608401613875565b60408201526080808401518981111561396c5760008081fd5b61397a8f8d83880101613720565b60608401525060a061398d81860161363b565b8284015260c0915081850151818401525060e080850151828401526139b384860161363b565b9083015250855250509186019186016138fa565b5098975050505050505050565b6000600182016139e6576139e66137a3565b5060010190565b601f821115611376576000816000526020600020601f850160051c81016020861015613a165750805b601f850160051c820191505b81811015611da557828155600101613a22565b6001600160401b03831115613a4c57613a4c6130d0565b613a6083613a5a83546137f5565b836139ed565b6000601f841160018114613a945760008515613a7c5750838201355b600019600387901b1c1916600186901b178355610e00565b600083815260209020601f19861690835b82811015613ac55786850135825560209485019460019092019101613aa5565b5086821015613ae25760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b600080600060608486031215613b0957600080fd5b83516001600160401b03811115613b1f57600080fd5b613b2b86828701613720565b9350506020840151613b3c81612ceb565b6040850151909250613b4d81612deb565b809150509250925092565b634e487b7160e01b600052601260045260246000fd5b600082613b7d57613b7d613b58565b500490565b600082613b9157613b91613b58565b500690565b81516001600160401b03811115613baf57613baf6130d0565b613bc381613bbd84546137f5565b846139ed565b602080601f831160018114613bf85760008415613be05750858301515b600019600386901b1c1916600185901b178555611da5565b600085815260208120601f198616915b82811015613c2757888601518255948401946001909101908401613c08565b5085821015613c455787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b0386811682528516602082015260a060408201819052600090613c8190830186612f26565b8281036060840152613c938186612f26565b90508281036080840152613ca78185612e6d565b98975050505050505050565b600060208284031215613cc557600080fd5b815161094581612d2f565b600060033d1115613ce95760046000803e5060005160e01c5b90565b600060443d1015613cfa5790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715613d2957505050505090565b8285019150815181811115613d415750505050505090565b843d8701016020828501011115613d5b5750505050505090565b613d6a602082860101876130e6565b509095945050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090613daf90830184612e6d565b979650505050505050565b634e487b7160e01b600052603160045260246000fdfe4d22f33240a09dddf495d4955c9f23af3488c8781d110f143c7072ad05e023821799cf914cb0cb442ca7c7ac709ee40d0cb89e87351dc08d517fbda27d50c68ba26469706673582212204cca6f6f0fcce9dc2741a8184da6eb40a930558d6bd53602ac230e7e97fd958c64736f6c63430008190033000000000000000000000000dbd9608fbca959828c1615d29aeb3dc872d40ae2