2 txs
9 calls
constructor
constructor(address _galaxisRegistry)
functions
APP
purefunction APP() pure returns (bytes32)
baseVersion
purefunction baseVersion() pure returns (uint256)
currentTokenOwnerAddress
viewfunction currentTokenOwnerAddress(uint32 _tokenId) view returns (address)
existsData
viewfunction existsData(uint32) view returns (uint8)
galaxisRegistry
viewfunction galaxisRegistry() view returns (address)
getByteAndBit
purefunction getByteAndBit(uint32 _offset) pure returns (uint32 _byte, uint8 _bit)
getData
viewfunction getData(uint32 _tokenId) view returns (bytes)
getData
viewfunction getData(uint32[] _tokenIds) view returns (bytes[])
getDefaultTokenDataOutput
viewfunction getDefaultTokenDataOutput() view returns (bytes)
getOutputBufferLength
viewfunction getOutputBufferLength(uint32 _tokenId) view returns (uint16, uint16)
getProperties
viewfunction getProperties(uint32 _tokenId, bytes32[] _names) view returns (bytes[])
getProperty
viewfunction getProperty(bytes32 _name, uint32 _tokenId) view returns (bytes)
getSchema
viewfunction getSchema() view returns (tuple[])
GTRegistry
viewfunction GTRegistry() view returns (address)
hasTrait
viewfunction hasTrait(uint32 _tokenId) view returns (bool result)
initialized
viewfunction initialized() view returns (bool)
isInitialized
viewfunction isInitialized(uint32 _tokenId) view returns (bool result)
modifier_lock
viewfunction modifier_lock() view returns (bool)
movement_permission
viewfunction movement_permission() view returns (uint8)
redeemMode
viewfunction redeemMode() view returns (uint256)
status
viewfunction status(uint32 _tokenId) view returns (uint8)
tellEverything
viewfunction tellEverything() view returns (tuple)
TRAIT_TYPE
purefunction TRAIT_TYPE() pure returns (uint16)
traitId
viewfunction traitId() view returns (uint16)
vaultID
viewfunction vaultID() view returns (uint256)
version
purefunction version() pure returns (uint256)
addTrait
nonpayablefunction addTrait(uint32[] _tokenIds)
decrementCounter
nonpayablefunction decrementCounter(uint32 _tokenId)
incrementCounter
nonpayablefunction incrementCounter(uint32 _tokenId)
init
nonpayablefunction init()
removeTrait
nonpayablefunction removeTrait(uint32[] _tokenIds) returns (bool)
setData
nonpayablefunction setData(uint32 _tokenId, bytes _bytesData)
setProperties
nonpayablefunction setProperties(uint32 _tokenId, bytes32[] _names, bytes[] inputs)
setProperty
nonpayablefunction setProperty(bytes32 _name, uint32 _tokenId, bytes input)
setup
nonpayablefunction setup(address _registry, uint16 _traitId, tuple _traitConfig, bytes[] _defaultPropValues)
events
tokenTraitChangeEvent
event tokenTraitChangeEvent(uint32 indexed _tokenId)
errors
No errors.
creation bytecode
0x60a06040526000805460ff60b01b191690556003805460ff19169055348015602657600080fd5b50604051614c06380380614c068339810160408190526043916053565b6001600160a01b03166080526081565b600060208284031215606457600080fd5b81516001600160a01b0381168114607a57600080fd5b9392505050565b608051614b326100d460003960008181610381015281816105cd01528181610e3b01528181610fc3015281816113200152818161149d015281816117f601528181611c990152613aeb0152614b326000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80637d4898ef11610125578063b7a11b01116100ad578063e4cf0e291161007c578063e4cf0e29146104dc578063e90cd936146104e4578063e992dd6314610515578063eb76dfea1461051e578063f22cac851461052757600080fd5b8063b7a11b0114610480578063c6402b5f14610493578063c9170a00146104a6578063e1c7392a146104d457600080fd5b80638a3ac327116100f45780638a3ac3271461042057806396b039ed1461042d57806396ec6fec1461044d5780639e81c31514610463578063b2ae54b81461047657600080fd5b80637d4898ef146103d45780638174263b146103e7578063848098db146103fa57806388afafec1461040d57600080fd5b806353bdfa2e116101a857806363f7f7921161017757806363f7f792146103315780636b122fe014610354578063759cd04c146103695780637671114d1461037c57806377c6614a146103bb57600080fd5b806353bdfa2e146102e957806354fd4d50146102fc578063559d86b5146103105780635bf63c881461032357600080fd5b80632f151b76116101e45780632f151b761461028a578063346ab9d01461029f5780633e35701a146102b2578063492a9b17146102c557600080fd5b80630a60854c14610216578063158ef93e1461022b5780632a65a22d146102545780632eed40661461026a575b600080fd5b610229610224366004613d00565b61053a565b005b60005461023f90600160b01b900460ff1681565b60405190151581526020015b60405180910390f35b60065b60405161ffff909116815260200161024b565b61027d610278366004613d9c565b6107bb565b60405161024b9190613e07565b610292610ba4565b60405161024b9190613f10565b61023f6102ad366004613d9c565b610c93565b6102296102c03660046140e1565b610ca6565b600d546102d790610100900460ff1681565b60405160ff909116815260200161024b565b61023f6102f7366004613d00565b610da7565b637895cacd5b60405190815260200161024b565b61022961031e366004614199565b610f30565b6000546102579061ffff1681565b6102d761033f366004613d9c565b600b6020526000908152604090205460ff1681565b61035c611079565b60405161024b91906141e6565b6102296103773660046141f9565b61128d565b6103a37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b6000546103a3906201000090046001600160a01b031681565b6102296103e2366004613d9c565b61140a565b6102d76103f5366004613d9c565b611603565b6102296104083660046142ae565b611763565b61027d61041b366004614317565b611940565b600d5461023f9060ff1681565b61044061043b366004613d00565b611a4d565b60405161024b9190614343565b6c6469676974616c72656465656d60981b610302565b61044061047136600461439a565b611b17565b6378a495e9610302565b61023f61048e366004613d9c565b611be3565b6102296104a1366004613d9c565b611c06565b6104b96104b4366004613d9c565b611e2c565b6040805161ffff93841681529290911660208301520161024b565b6102296120f4565b61027d6121ed565b6104f76104f2366004613d9c565b612402565b6040805163ffffffff909316835260ff90911660208301520161024b565b610302600f5481565b610302600e5481565b6103a3610535366004613d9c565b61242e565b600054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc89161057591339161ffff909116906004016143dd565b602060405180830381865afa158015610592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b691906143fa565b806106545750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c9061060890600401614417565b602060405180830381865afa158015610625573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610649919061443b565b6001600160a01b0316145b6106795760405162461bcd60e51b815260040161067090614458565b60405180910390fd5b60005b81518161ffff1610156107b7576106af828261ffff16815181106106a2576106a2614488565b6020026020010151611be3565b61075d57600d5460021961010090910460ff16016106f2576106ed828261ffff16815181106106e0576106e0614488565b60200260200101516125fc565b6107a5565b61071a828261ffff168151811061070b5761070b614488565b602002602001015160016126b2565b818161ffff168151811061073057610730614488565b602002602001015163ffffffff16600080516020614add83398151915260405160405180910390a26107a5565b60405162461bcd60e51b815260206004820152601f60248201527f54726169743a20546f6b656e20616c72656164792068617320747261697421006044820152606401610670565b806107af816144b4565b91505061067c565b5050565b60606000806107c984611e2c565b9092509050600061ffff83166001600160401b038111156107ec576107ec613c83565b6040519080825280601f01601f191660200182016040528015610816576020820181803683370190505b5063ffffffff861660009081526007602052604081208054929350909161083c906144d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610868906144d5565b80156108b55780601f1061088a576101008083540402835291602001916108b5565b820191906000526020600020905b81548152906001019060200180831161089857829003601f168201915b505050505090506108c586610c93565b61095757600980546108d6906144d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610902906144d5565b801561094f5780601f106109245761010080835404028352916020019161094f565b820191906000526020600020905b81548152906001019060200180831161093257829003601f168201915b505050505090505b80516000036109ba576003546109719060ff166020614509565b61ffff166001600160401b0381111561098c5761098c613c83565b6040519080825280601f01601f1916602001820160405280156109b6576020820181803683370190505b5090505b602082810190848401016000805b60035460ff9081169082161015610b96576109e4602083614527565b60ff808316600090815260026020526040902060010154919350166009816013811115610a1357610a13613e1a565b1480610a305750600a816013811115610a2e57610a2e613e1a565b145b15610b435760ff8216600090815260066020908152604080832063ffffffff8f16845290915281208054610a63906144d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8f906144d5565b8015610adc5780601f10610ab157610100808354040283529160200191610adc565b820191906000526020600020905b815481529060010190602001808311610abf57829003601f168201915b5050505050905088865260208901985080516020810481602082021015610b01576001015b9086526020909501946000905b80821015610b3357602060018301028301518752602087019650600182019150610b0e565b602081028b019a50505050610b86565b610b4c816126cb565b15610b7f5760ff8216600090815260026020526040902060010154610b7a90610100900460e01b8c876127dd565b610b86565b8286015185525b50602093909301926001016109c8565b509398975050505050505050565b610bfb60408051610120810182526000808252602080830182905282840182905260608084018390526080840183905260a084015260c0830182905260e08301829052835190810190935282529061010082015290565b60408051610120810190915260005461ffff16815260208101600661ffff1681526000546201000090046001600160a01b031660208201526040016378a495e98152602001637895cacd8152602001610c52611079565b815260035460ff1660208201526040016c6469676974616c72656465656d60981b815260408051602081810190925260015460ff1615158152910152919050565b6000610ca08260026128df565b92915050565b600054600160b01b900460ff1615610d005760405162461bcd60e51b815260206004820152601b60248201527f54726169743a20616c726561647920696e697469616c697a65642100000000006044820152606401610670565b600080546001600160b01b031916620100006001600160a01b0387160261ffff19161761ffff851617815582516001805460ff19169115159190911790555b81518160ff161015610da057818160ff1681518110610d6057610d60614488565b6020026020010151600a60008360ff1660ff1681526020019081526020016000209081610d8d919061458a565b5080610d9881614649565b915050610d3f565b5050505050565b60008054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc891610de391339161ffff909116906004016143dd565b602060405180830381865afa158015610e00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2491906143fa565b80610ec25750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c90610e7690600401614417565b602060405180830381865afa158015610e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb7919061443b565b6001600160a01b0316145b610ede5760405162461bcd60e51b815260040161067090614458565b60005b82518160ff161015610f2557610f12838260ff1681518110610f0557610f05614488565b60200260200101516129a5565b5080610f1d81614649565b915050610ee1565b50600190505b919050565b600054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc891610f6b91339161ffff909116906004016143dd565b602060405180830381865afa158015610f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fac91906143fa565b8061104a5750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c90610ffe90600401614417565b602060405180830381865afa15801561101b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103f919061443b565b6001600160a01b0316145b6110665760405162461bcd60e51b815260040161067090614458565b6110708282612afb565b6107b7826125fc565b60035460609060009060ff166001600160401b0381111561109c5761109c613c83565b60405190808252806020026020018201604052801561110a57816020015b6040805161010081018252600080825260208083018290529282018190526060808301526080820181905260a0820181905260c0820181905260e082015282526000199092019101816110ba5790505b50905060005b60035460ff90811690821610156112875760ff80821660009081526002602090815260409182902082516101008101909352805483526001810154929390929184019116601381111561116557611165613e1a565b601381111561117657611176613e1a565b81526001820154610100900460e01b6001600160e01b03191660208201526002820180546040909201916111a9906144d5565b80601f01602080910402602001604051908101604052809291908181526020018280546111d5906144d5565b80156112225780601f106111f757610100808354040283529160200191611222565b820191906000526020600020905b81548152906001019060200180831161120557829003601f168201915b5050509183525050600382015460ff9081161515602083015260048301546040830152600583015460608301526006909201548216151560809091015283518491841690811061127457611274614488565b6020908102919091010152600101611110565b50919050565b600054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc8916112c891339161ffff909116906004016143dd565b602060405180830381865afa1580156112e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130991906143fa565b806113a75750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c9061135b90600401614417565b602060405180830381865afa158015611378573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139c919061443b565b6001600160a01b0316145b6113c35760405162461bcd60e51b815260040161067090614458565b6b1bdddb995c97dcdd1bdc995960a21b83036113f15760405162461bcd60e51b815260040161067090614668565b6113fa826125fc565b611405838383612d9a565b505050565b600054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc89161144591339161ffff909116906004016143dd565b602060405180830381865afa158015611462573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148691906143fa565b806115245750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c906114d890600401614417565b602060405180830381865afa1580156114f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611519919061443b565b6001600160a01b0316145b6115405760405162461bcd60e51b815260040161067090614458565b60006115566631b7bab73a32b960c91b83611940565b61155f906146b9565b61156a906001614527565b905061010081106115cd5760405162461bcd60e51b815260206004820152602760248201527f47656e6572696354726169743a20636f756e7465722065786365656473206d616044820152667820283235352960c81b6064820152608401610670565b6107b76631b7bab73a32b960c91b83836040516020016115ef91815260200190565b60405160208183030381529060405261128d565b60008061160f83611be3565b1561174a57600061162d6930b1ba34bb30ba34b7b760b11b85611940565b611636906146b9565b905060006116516932bc3834b930ba34b7b760b11b86611940565b61165a906146b9565b905060006116726631b7bab73a32b960c91b87611940565b61167b906146b9565b905060008290036116955761169242610e10614527565b91505b8015611741574283111580156116ab5750814211155b1561173857600d5460021961010090910460ff160161172f5760006116df6b1bdddb995c97dcdd1bdc995960a21b88611940565b8060200190518101906116f2919061443b565b905060006116ff8861242e565b9050806001600160a01b0316826001600160a01b0316036117235760019550611728565b600295505b5050611746565b60019350611746565b60029350611746565b600393505b5050505b80600381111561175c5761175c613e1a565b9392505050565b600054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc89161179e91339161ffff909116906004016143dd565b602060405180830381865afa1580156117bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117df91906143fa565b8061187d5750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c9061183190600401614417565b602060405180830381865afa15801561184e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611872919061443b565b6001600160a01b0316145b6118995760405162461bcd60e51b815260040161067090614458565b6118a2836125fc565b60005b82518160ff16101561193a576000838260ff16815181106118c8576118c8614488565b602002602001015190506b1bdddb995c97dcdd1bdc995960a21b81036119005760405162461bcd60e51b815260040161067090614668565b6119278186858560ff168151811061191a5761191a614488565b6020026020010151612d9a565b508061193281614649565b9150506118a5565b50505050565b60008281526004602090815260408083205460ff90811680855260029093529220600101546060921661197284610c93565b1580156119855750611983816126cb565b155b15611a325760ff821660009081526002602081905260409091200180546119ab906144d5565b80601f01602080910402602001604051908101604052809291908181526020018280546119d7906144d5565b8015611a245780601f106119f957610100808354040283529160200191611a24565b820191906000526020600020905b815481529060010190602001808311611a0757829003601f168201915b505050505092505050610ca0565b611a3c82856130b6565b92505050610ca0565b505092915050565b6060600082516001600160401b03811115611a6a57611a6a613c83565b604051908082528060200260200182016040528015611a9d57816020015b6060815260200190600190039081611a885790505b50905060005b83518163ffffffff161015611b1057611ada848263ffffffff1681518110611acd57611acd614488565b60200260200101516107bb565b828263ffffffff1681518110611af257611af2614488565b60200260200101819052508080611b08906146dd565b915050611aa3565b5092915050565b6060600082516001600160401b03811115611b3457611b34613c83565b604051908082528060200260200182016040528015611b6757816020015b6060815260200190600190039081611b525790505b50905060005b83518163ffffffff161015611bdb57611ba5848263ffffffff1681518110611b9757611b97614488565b602002602001015186611940565b828263ffffffff1681518110611bbd57611bbd614488565b60200260200101819052508080611bd3906146dd565b915050611b6d565b509392505050565b600080611bf18360016128df565b60015490915060ff1615610ca0571592915050565b600054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc891611c4191339161ffff909116906004016143dd565b602060405180830381865afa158015611c5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8291906143fa565b80611d205750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c90611cd490600401614417565b602060405180830381865afa158015611cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d15919061443b565b6001600160a01b0316145b611d3c5760405162461bcd60e51b815260040161067090614458565b6000611d526631b7bab73a32b960c91b83611940565b611d5b906146b9565b905080611dc25760405162461bcd60e51b815260206004820152602f60248201527f47656e6572696354726169743a20617474656d707420746f2064656372656d6560448201526e373a103d32b9379031b7bab73a32b960891b6064820152608401610670565b6000611dd96731b7b7b63237bbb760c11b84611940565b611de2906146b9565b9050611e106631b7bab73a32b960c91b84611dfe6001866146f6565b6040516020016115ef91815260200190565b6114056930b1ba34bb30ba34b7b760b11b84611dfe8442614527565b600354600090819060ff1681611e43826020614509565b63ffffffff8616600090815260076020526040812080549293508392611e68906144d5565b80601f0160208091040260200160405190810160405280929190818152602001828054611e94906144d5565b8015611ee15780601f10611eb657610100808354040283529160200191611ee1565b820191906000526020600020905b815481529060010190602001808311611ec457829003601f168201915b5050505050905060005b60035460ff90811690821610156120e75760ff808216600090815260026020526040902060010154166009816013811115611f2857611f28613e1a565b1480611f455750600a816013811115611f4357611f43613e1a565b145b156120de576000611f5a60ff84166020614509565b6040805160028082528183019092529192506000919060208201818036833750508651919250501561206f5784611f9283601e614709565b61ffff1681518110611fa657611fa6614488565b602001015160f81c60f81b81600081518110611fc457611fc4614488565b60200101906001600160f81b031916908160001a90535084611fe783601f614709565b61ffff1681518110611ffb57611ffb614488565b602001015160f81c60f81b8160018151811061201957612019614488565b60200101906001600160f81b031916908160001a905350602061203b82614724565b60f01c6120489190614771565b612053906020614509565b61205e906040614709565b6120689088614709565b96506120db565b600060f81b8160008151811061208757612087614488565b60200101906001600160f81b031916908160001a905350600060f81b816001815181106120b6576120b6614488565b60200101906001600160f81b031916908160001a9053506120d8602088614709565b96505b50505b50600101611eeb565b5091969095509350505050565b6120fc6132f3565b612112671d985d5b1d17da5960c21b6007613514565b61212d6c1d1bdad95b9cd7d85b5bdd5b9d609a1b6007613514565b612151751c1cd95d591bd7dc985b991bdb57da5b9d195c9d985b60521b6007613514565b61217171636f696e5f746f6b656e5f6164647265737360701b600b613514565b612183636c75636b60e01b6002613514565b61219c6a72656465656d5f6d6f646560a81b6002613514565b6121a4613520565b6121ba671d985d5b1d17da5960c21b6000611940565b6121c3906146b9565b600e556121df6a72656465656d5f6d6f646560a81b6000611940565b6121e8906146b9565b600f55565b6060600080806121fc83611e2c565b9150915060008261ffff166001600160401b0381111561221e5761221e613c83565b6040519080825280601f01601f191660200182016040528015612248576020820181803683370190505b509050602080820190838301016000805b60035460ff90811690821610156123f557612275602083614527565b60ff8083166000908152600260205260409020600101549193501660098160138111156122a4576122a4613e1a565b14806122c15750600a8160138111156122bf576122bf613e1a565b145b156123c35760ff8216600090815260086020526040812080546122e3906144d5565b80601f016020809104026020016040519081016040528092919081815260200182805461230f906144d5565b801561235c5780601f106123315761010080835404028352916020019161235c565b820191906000526020600020905b81548152906001019060200180831161233f57829003601f168201915b5050505050905087865260208801975080516020810481602082021015612381576001015b9086526020909501946000905b808210156123b35760206001830102830151875260208701965060018201915061238e565b602081028a0199505050506123e5565b60ff8216600090815260026020819052604082206123e19101614792565b8652505b5060209390930192600101612259565b5092979650505050505050565b6000806124106008846147d3565b915061241d8260086147ea565b612427908461480a565b9050915091565b60008060029054906101000a90046001600160a01b03166001600160a01b0316639d759d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a6919061443b565b6001600160a01b03166374b9982c600060029054906101000a90046001600160a01b03166001600160a01b031663b7ace66a6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612507573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261252f9190810190614827565b6040518263ffffffff1660e01b815260040161254b9190613e07565b602060405180830381865afa158015612568573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258c919061443b565b6040516331a9108f60e11b815263ffffffff841660048201526001600160a01b039190911690636352211e90602401602060405180830381865afa1580156125d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca0919061443b565b600d5460021961010090910460ff160161269557600061262b6b1bdddb995c97dcdd1bdc995960a21b83611940565b80602001905181019061263e919061443b565b6001600160a01b031603612692576126926b1bdddb995c97dcdd1bdc995960a21b826126698461242e565b604080516001600160a01b03909216602083015201604051602081830303815290604052612d9a565b50565b6126926b1bdddb995c97dcdd1bdc995960a21b826126698461242e565b60015460ff16156126bf57155b6107b782600183613879565b6000600c8260138111156126e1576126e1613e1a565b036126ee57506001919050565b600d82601381111561270257612702613e1a565b0361270f57506001919050565b600e82601381111561272357612723613e1a565b0361273057506001919050565b600f82601381111561274457612744613e1a565b0361275157506001919050565b601082601381111561276557612765613e1a565b0361277257506001919050565b601182601381111561278657612786613e1a565b0361279357506001919050565b60128260138111156127a7576127a7613e1a565b036127b457506001919050565b60138260138111156127c8576127c8613e1a565b036127d557506001919050565b506000919050565b60405163ffffffff8316602482015260009081903090869060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612836919061489d565b600060405180830381855afa9150503d8060008114612871576040519150601f19603f3d011682016040523d82523d6000602084013e612876565b606091505b5091509150816128d35760405162461bcd60e51b815260206004820152602260248201527f54726169743a20696e7465726e616c206d6574686f642063616c6c206661696c604482015261195960f21b6064820152608401610670565b60200151909152505050565b6000808260028111156128f4576128f4613e1a565b905060008061290286612402565b915091508260ff166001036129515761291c81600261499d565b6129279060016149ac565b63ffffffff9092166000908152600b60205260409020549190911660ff1615159250610ca0915050565b8260ff1660020361299c5761296781600261499d565b6129729060016149ac565b63ffffffff9092166000908152600c60205260409020549190911660ff1615159250610ca0915050565b50505092915050565b60006129b082611be3565b612a065760405162461bcd60e51b815260206004820152602160248201527f54726169743a20546f6b656e20646f6573206e6f7420686176652074726169746044820152602160f81b6064820152608401610670565b63ffffffff82166000908152600760205260408120612a2491613c35565b60005b60035460ff9081169082161015612abb5760ff808216600090815260026020526040902060010154166009816013811115612a6457612a64613e1a565b1480612a815750600a816013811115612a7f57612a7f613e1a565b145b15612ab25760ff8216600090815260066020908152604080832063ffffffff881684529091528120612ab291613c35565b50600101612a27565b50612ac78260006126b2565b612ad48260026000613879565b60405163ffffffff831690600080516020614add83398151915290600090a2506001919050565b612b0482611be3565b612b1357612b138260016126b2565b612b1c82610c93565b612b2d57612b2d8260026001613879565b600354600090612b419060ff166020614509565b90508061ffff1682511015612b985760405162461bcd60e51b815260206004820152601e60248201527f54726169743a204d657373616765206e6f74206c6f6e6720656e6f75676800006044820152606401610670565b60008161ffff166001600160401b03811115612bb657612bb6613c83565b6040519080825280601f01601f191660200182016040528015612be0576020820181803683370190505b509050602080820190840160005b60035460ff9081169082161015612d525760ff80821660009081526002602052604090206001015483519116906009826013811115612c2f57612c2f613e1a565b1480612c4c5750600a826013811115612c4a57612c4a613e1a565b145b15612d2c578781016020018051808752906000826001600160401b03811115612c7757612c77613c83565b6040519080825280601f01601f191660200182016040528015612ca1576020820181803683370190505b509050602081016020840484602082021015612cbb576001015b60005b81811015612cdd57602094850180518452949290920191600101612cbe565b50505080600660008860ff1660ff16815260200190815260200160002060008e63ffffffff1663ffffffff1681526020019081526020016000209081612d23919061458a565b50505050612d3d565b612d35826126cb565b612d3d578085525b50506020928301929190910190600101612bee565b5063ffffffff86166000908152600760205260409020612d72848261458a565b5060405163ffffffff871690600080516020614add83398151915290600090a2505050505050565b612da382611be3565b612db257612db28260016126b2565b612dbb82610c93565b612e6057612dcc8260026001613879565b612e608260098054612ddd906144d5565b80601f0160208091040260200160405190810160405280929190818152602001828054612e09906144d5565b8015612e565780601f10612e2b57610100808354040283529160200191612e56565b820191906000526020600020905b815481529060010190602001808311612e3957829003601f168201915b5050505050612afb565b60008381526004602090815260408083205460ff9081168085526002909352922060010154909116612e91816126cb565b15612ede5760405162461bcd60e51b815260206004820152601e60248201527f54726169743a2043616e6e6f7420736574206c6f6769632076616c75652100006044820152606401610670565b600354600090612ef29060ff166020614509565b63ffffffff8616600090815260076020526040812080549293509091612f17906144d5565b80601f0160208091040260200160405190810160405280929190818152602001828054612f43906144d5565b8015612f905780601f10612f6557610100808354040283529160200191612f90565b820191906000526020600020905b815481529060010190602001808311612f7357829003601f168201915b505050505090508051600003612fea578161ffff166001600160401b03811115612fbc57612fbc613c83565b6040519080825280601f01601f191660200182016040528015612fe6576020820181803683370190505b5090505b6000600984601381111561300057613000613e1a565b148061301d5750600a84601381111561301b5761301b613e1a565b145b15613058575060ff8416600090815260066020908152604080832063ffffffff8a16845290915290208590613052828261458a565b5061305e565b50602085015b80516020868102840181019190915263ffffffff8816600090815260079091526040902061308c838261458a565b5050505060405163ffffffff851690600080516020614add83398151915290600090a25050505050565b60ff828116600090815260026020908152604080832060010154815183815280830190925260609416929160208201818036833701905050905060208101600983601381111561310857613108613e1a565b14806131255750600a83601381111561312357613123613e1a565b145b156131dd5760ff8616600090815260066020908152604080832063ffffffff8916845290915290208054613158906144d5565b80601f0160208091040260200160405190810160405280929190818152602001828054613184906144d5565b80156131d15780601f106131a6576101008083540402835291602001916131d1565b820191906000526020600020905b8154815290600101906020018083116131b457829003601f168201915b505050505091506132ea565b6131e6836126cb565b156132195760ff861660009081526002602052604090206001015461321490610100900460e01b86836127dd565b6132ea565b63ffffffff851660009081526007602052604081208054613239906144d5565b80601f0160208091040260200160405190810160405280929190818152602001828054613265906144d5565b80156132b25780601f10613287576101008083540402835291602001916132b2565b820191906000526020600020905b81548152906001019060200180831161329557829003601f168201915b5050505050905060008760ff1660206132cb9190614509565b6132d6906020614709565b61ffff169190910151602084019081529150505b50949350505050565b600054600160b01b900460ff161561334d5760405162461bcd60e51b815260206004820152601b60248201527f54726169743a20616c726561647920696e697469616c697a65642100000000006044820152606401610670565b6133826565786973747360d01b600c7fb7a11b0101698da6b700a2cbeb884e47cc482bbfbdc8adfa78bfbf389bfab3526139b8565b6133bc6a1a5b9a5d1a585b1a5e995960aa1b600c7f346ab9d0d784b641d01667f58ba89f4b4e1d5c676f04880e7744af0824d02ce76139b8565b6133d66b1bdddb995c97dcdd1bdc995960a21b600b613514565b6134126c1bdddb995c97d8dd5c9c995b9d609a1b60137ff22cac85b6325a870a6880df699bc73f929a1cdbe07090a5c8558e02116389a26139b8565b61342d6c6d6f6469666965725f6c6f636b60981b6001613514565b61344e7236b7bb32b6b2b73a2fb832b936b4b9b9b4b7b760691b6002613514565b6134666930b1ba34bb30ba34b7b760b11b6007613514565b61347c6731b7b7b63237bbb760c11b6007613514565b6134946932bc3834b930ba34b7b760b11b6007613514565b6134a96631b7bab73a32b960c91b6002613514565b6134c1691c9bde585b1d1e57da5960b21b6007613514565b6134dd6d1c9bde585b1d1e57d85b5bdd5b9d60921b6007613514565b6135126573746174757360d01b600d7f8174263b3ef0075354f0562e27c2370f5b2dcd95d8ce34c99c62b222deecc0d86139b8565b565b6107b7828260006139bf565b60008061352b613aa8565b9150915060005b60035460ff90811690821610156137c55760ff80821660009081526002602090815260408083208151610100810190925280548252600181015493949193909284019116601381111561358757613587613e1a565b601381111561359857613598613e1a565b81526001820154610100900460e01b6001600160e01b03191660208201526002820180546040909201916135cb906144d5565b80601f01602080910402602001604051908101604052809291908181526020018280546135f7906144d5565b80156136445780601f1061361957610100808354040283529160200191613644565b820191906000526020600020905b81548152906001019060200180831161362757829003601f168201915b5050509183525050600382015460ff90811615156020830152600483015460408301526005830154606083015260069092015490911615156080909101528051909150691c9bde585b1d1e57da5960b21b14806136b2575080516d1c9bde585b1d1e57d85b5bdd5b9d60921b145b1561376857805160609069236421a7a4e2e1a825a760b21b016136f1576040805160208101879052016040516020818303038152906040529050613728565b81516d236421a7a4e2e1a827a4a422a46360921b016137285760408051602081018690520160405160208183030381529060405290505b60ff83166000908152600a60205260409020613744828261458a565b5060ff8316600090815260026020819052604090912001613765828261458a565b50505b80516b24222466a3682322e42366a760a21b016137bc5760408051600060208201520160408051601f1981840301815291815260ff841660009081526002602081905291902001906137ba908261458a565b505b50600101613532565b5060006137e36c6d6f6469666965725f6c6f636b60981b6000611940565b6137ec906146b9565b600d805460ff19169290911191909117905561381f7236b7bb32b6b2b73a2fb832b936b4b9b9b4b7b760691b6000611940565b80602001905181019061383291906149c3565b600d60016101000a81548160ff021916908360ff1602179055506138546121ed565b600990613861908261458a565b50506000805460ff60b01b1916600160b01b17905550565b60008061388585612402565b9092509050600184600281111561389e5761389e613e1a565b036139205782156138e8576138b481600261499d565b63ffffffff83166000908152600b60205260409020805460ff9283169281169290921760ff19909216919091179055610da0565b6138f381600261499d565b63ffffffff83166000908152600b60205260409020805460ff19811692191660ff16919091179055610da0565b600284600281111561393457613934613e1a565b03610da057821561397e5761394a81600261499d565b63ffffffff83166000908152600c60205260409020805460ff9283169281169290921760ff19909216919091179055610da0565b61398981600261499d565b63ffffffff83166000908152600c60205260409020805460ff19811692191660ff169190911790555050505050565b6114058383835b60035460008481526004602052604090205460ff9182169116156139e257600080fd5b6000848152600460209081526040808320805460ff861660ff199182168117909255908452600290925290912085815560018181018054929387939192911690836013811115613a3457613a34613e1a565b021790555060018101805464ffffffff00191661010060e086901c0217905560ff82166000908152600a602052604090206002820190613a7490826149e6565b506003805460ff16906000613a8883614649565b91906101000a81548160ff021916908360ff160217905550505050505050565b604051631d2e660b60e21b815260206004820152600e60248201526d0a082b29a8a9ca8be9a82a8a492b60931b6044820152600090819081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906374b9982c90606401602060405180830381865afa158015613b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b56919061443b565b90506001600160a01b038116613bc05760405162461bcd60e51b815260206004820152602960248201527f54726169743a205041594d454e545f4d4154524958206164647265737320636160448201526806e6e6f7420626520360bc1b6064820152608401610670565b60408051633583a33f60e21b81526006600482015281516001600160a01b0384169263d60e8cfc92602480820193918290030181865afa158015613c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2c9190614ab8565b92509250509091565b508054613c41906144d5565b6000825580601f10613c51575050565b601f01602090049060005260206000209081019061269291905b80821115613c7f5760008155600101613c6b565b5090565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613cc157613cc1613c83565b604052919050565b60006001600160401b03821115613ce257613ce2613c83565b5060051b60200190565b803563ffffffff81168114610f2b57600080fd5b60006020808385031215613d1357600080fd5b82356001600160401b03811115613d2957600080fd5b8301601f81018513613d3a57600080fd5b8035613d4d613d4882613cc9565b613c99565b81815260059190911b82018301908381019087831115613d6c57600080fd5b928401925b82841015613d9157613d8284613cec565b82529284019290840190613d71565b979650505050505050565b600060208284031215613dae57600080fd5b61175c82613cec565b60005b83811015613dd2578181015183820152602001613dba565b50506000910152565b60008151808452613df3816020860160208601613db7565b601f01601f19169290920160200192915050565b60208152600061175c6020830184613ddb565b634e487b7160e01b600052602160045260246000fd5b600082825180855260208086019550808260051b8401018186016000805b85811015613f0257601f19878503018a528251610100815186528682015160148110613e8857634e487b7160e01b85526021600452602485fd5b868801526040828101516001600160e01b03191690870152606080830151818801839052613eb883890182613ddb565b92505050608080830151613ecf8289018215159052565b505060a0828101519087015260c0808301519087015260e091820151151591909501529884019891840191600101613e4e565b509198975050505050505050565b60208152613f2560208201835161ffff169052565b60006020830151613f3c604084018261ffff169052565b5060408301516001600160a01b03811660608401525060608301516080830152608083015160a083015260a08301516101208060c0850152613f82610140850183613e30565b915060c0850151613f9860e086018260ff169052565b5060e085015161010085810191909152909401515115159390920192909252919050565b6001600160a01b038116811461269257600080fd5b801515811461269257600080fd5b60006001600160401b03821115613ff857613ff8613c83565b50601f01601f191660200190565b600082601f83011261401757600080fd5b8135614025613d4882613fdf565b81815284602083860101111561403a57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261406857600080fd5b81356020614078613d4883613cc9565b82815260059290921b8401810191818101908684111561409757600080fd5b8286015b848110156140d65780356001600160401b038111156140ba5760008081fd5b6140c88986838b0101614006565b84525091830191830161409b565b509695505050505050565b60008060008084860360808112156140f857600080fd5b853561410381613fbc565b9450602086013561ffff8116811461411a57600080fd5b93506020603f198201121561412e57600080fd5b50604051602081016001600160401b03828210818311171561415257614152613c83565b816040526040880135915061416682613fd1565b8183529193506060870135918083111561417f57600080fd5b505061418d87828801614057565b91505092959194509250565b600080604083850312156141ac57600080fd5b6141b583613cec565b915060208301356001600160401b038111156141d057600080fd5b6141dc85828601614006565b9150509250929050565b60208152600061175c6020830184613e30565b60008060006060848603121561420e57600080fd5b8335925061421e60208501613cec565b915060408401356001600160401b0381111561423957600080fd5b61424586828701614006565b9150509250925092565b600082601f83011261426057600080fd5b81356020614270613d4883613cc9565b8083825260208201915060208460051b87010193508684111561429257600080fd5b602086015b848110156140d65780358352918301918301614297565b6000806000606084860312156142c357600080fd5b6142cc84613cec565b925060208401356001600160401b03808211156142e857600080fd5b6142f48783880161424f565b9350604086013591508082111561430a57600080fd5b5061424586828701614057565b6000806040838503121561432a57600080fd5b8235915061433a60208401613cec565b90509250929050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156123f557603f19888603018452614388858351613ddb565b9450928501929085019060010161436c565b600080604083850312156143ad57600080fd5b6143b683613cec565b915060208301356001600160401b038111156143d157600080fd5b6141dc8582860161424f565b6001600160a01b0392909216825261ffff16602082015260400190565b60006020828403121561440c57600080fd5b815161175c81613fd1565b6020808252600a908201526920a1aa24a7a72fa42aa160b11b604082015260600190565b60006020828403121561444d57600080fd5b815161175c81613fbc565b6020808252601690820152752a3930b4ba1d102737ba1030baba3437b934bd32b21760511b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff8083168181036144cb576144cb61449e565b6001019392505050565b600181811c908216806144e957607f821691505b60208210810361128757634e487b7160e01b600052602260045260246000fd5b61ffff818116838216028082169190828114611a4557611a4561449e565b80820180821115610ca057610ca061449e565b601f821115611405576000816000526020600020601f850160051c810160208610156145635750805b601f850160051c820191505b818110156145825782815560010161456f565b505050505050565b81516001600160401b038111156145a3576145a3613c83565b6145b7816145b184546144d5565b8461453a565b602080601f8311600181146145ec57600084156145d45750858301515b600019600386901b1c1916600185901b178555614582565b600085815260208120601f198616915b8281101561461b578886015182559484019460019091019084016145fc565b50858210156146395787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060ff821660ff810361465f5761465f61449e565b60010192915050565b60208082526031908201527f54726169743a2064697373616c6f776564212043616e6e6f7420736574206f776040820152706e65725f73746f7265642076616c75652160781b606082015260800190565b805160208083015191908110156112875760001960209190910360031b1b16919050565b600063ffffffff8083168181036144cb576144cb61449e565b81810381811115610ca057610ca061449e565b61ffff818116838216019080821115611b1057611b1061449e565b805160208201516001600160f01b031980821692919060028310156147535780818460020360031b1b83161693505b505050919050565b634e487b7160e01b600052601260045260246000fd5b600061ffff808416806147865761478661475b565b92169190910492915050565b600061479e82546144d5565b82601f8211156147b45783600052602060002090505b54915060208110156112875760001960209190910360031b1b16919050565b600063ffffffff808416806147865761478661475b565b63ffffffff818116838216028082169190828114611a4557611a4561449e565b63ffffffff828116828216039080821115611b1057611b1061449e565b60006020828403121561483957600080fd5b81516001600160401b0381111561484f57600080fd5b8201601f8101841361486057600080fd5b805161486e613d4882613fdf565b81815285602083850101111561488357600080fd5b614894826020830160208601613db7565b95945050505050565b600082516148af818460208701613db7565b9190910192915050565b600181815b808511156148f45781600019048211156148da576148da61449e565b808516156148e757918102915b93841c93908002906148be565b509250929050565b60008261490b57506001610ca0565b8161491857506000610ca0565b816001811461492e576002811461493857614954565b6001915050610ca0565b60ff8411156149495761494961449e565b50506001821b610ca0565b5060208310610133831016604e8410600b8410161715614977575081810a610ca0565b61498183836148b9565b80600019048211156149955761499561449e565b029392505050565b600061175c60ff8416836148fc565b8082028115828204841417610ca057610ca061449e565b6000602082840312156149d557600080fd5b815160ff8116811461175c57600080fd5b8181036149f1575050565b6149fb82546144d5565b6001600160401b03811115614a1257614a12613c83565b614a20816145b184546144d5565b6000601f821160018114614a545760008315614a3c5750848201545b600019600385901b1c1916600184901b178455610da0565b600085815260209020601f19841690600086815260209020845b83811015614a8e5782860154825560019586019590910190602001614a6e565b50858310156146395793015460001960f8600387901b161c19169092555050600190811b01905550565b60008060408385031215614acb57600080fd5b50508051602090910151909290915056fe00de82671dd733bef7e0b3d4c4929c757de4d6e09dd1facc73a334311aeeeb77a2646970667358221220284a69f5b6041ad6b056030c69ad71ad12c1089ae4f0196d2ab4149776b1c85f64736f6c63430008190033000000000000000000000000dbd9608fbca959828c1615d29aeb3dc872d40ae2