2 txs
3 calls
@openzeppelin/contracts/access/AccessControl.sol
constructor
constructor(address _galaxisRegistry)
functions
APP
purefunction APP() pure returns (bytes32)
baseVersion
purefunction baseVersion() pure returns (uint256)
boardScore
viewfunction boardScore(uint32 _tokenId) view returns (uint256)
boardScores
viewfunction boardScores(uint32[] _tokenIds) view returns (tuple[] result)
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)
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)
version
purefunction version() pure returns (uint256)
addTrait
nonpayablefunction addTrait(uint32[] _tokenIds)
decrementCounter
nonpayablefunction decrementCounter(uint32 _tokenId)
incrementCounter
nonpayablefunction incrementCounter(uint32 _tokenId)
init
nonpayablefunction init()
registerCard
nonpayablefunction registerCard(uint32 _tokenId, address owner)
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)
updateScore
nonpayablefunction updateScore(uint32 _tokenId, int256 _delta)
updateScores
nonpayablefunction updateScores(uint32[] _tokenIds, int256[] _deltas)
events
tokenTraitChangeEvent
event tokenTraitChangeEvent(uint32 indexed _tokenId)
errors
No errors.
creation bytecode
0x60a06040526000805460ff60b01b191690556003805460ff19169055348015602657600080fd5b506040516158353803806158358339810160408190526043916053565b6001600160a01b03166080526081565b600060208284031215606457600080fd5b81516001600160a01b0381168114607a57600080fd5b9392505050565b6080516157456100f0600039600081816103f20152818161064a0152818161084c01528181610ac401528181611222015281816113d80152818161155e015281816118bb01528181611a3301528181611d78015281816123710152818161310601526144dd01526157456000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80637671114d116101305780639e81c315116100b8578063c9170a001161007c578063c9170a0014610535578063e1c7392a14610563578063e4cf0e291461056b578063e90cd93614610573578063f22cac85146105a457600080fd5b80639e81c315146104d2578063b2ae54b8146104e5578063b7a11b01146104ef578063bde63bde14610502578063c6402b5f1461052257600080fd5b8063848098db116100ff578063848098db1461046b57806388afafec1461047e5780638a3ac3271461049157806396b039ed1461049e57806396ec6fec146104be57600080fd5b80637671114d146103ed57806377c6614a1461042c5780637d4898ef146104455780638174263b1461045857600080fd5b80633e35701a116101be578063559d86b511610182578063559d86b5146103815780635bf63c881461039457806363f7f792146103a25780636b122fe0146103c5578063759cd04c146103da57600080fd5b80633e35701a1461031a5780633f102e931461032d578063492a9b171461034057806353bdfa2e1461036457806354fd4d501461037757600080fd5b80632a65a22d116102055780632a65a22d1461029b5780632eed4066146102b15780632f151b76146102d1578063346ab9d0146102e65780633d0326e3146102f957600080fd5b80630154db72146102375780630a60854c1461024c578063158ef93e1461025f5780632217861714610288575b600080fd5b61024a6102453660046146c0565b6105b7565b005b61024a61025a3660046147a6565b6107b9565b60005461027390600160b01b900460ff1681565b60405190151581526020015b60405180910390f35b61024a610296366004614844565b610a31565b60085b60405161ffff909116815260200161027f565b6102c46102bf366004614870565b610b71565b60405161027f91906148dd565b6102d9610f5a565b60405161027f91906149e6565b6102736102f4366004614870565b611047565b61030c610307366004614870565b61105a565b60405190815260200161027f565b61024a610328366004614bb7565b611095565b61024a61033b366004614c6f565b61118f565b600d5461035290610100900460ff1681565b60405160ff909116815260200161027f565b6102736103723660046147a6565b611344565b6378a467d161030c565b61024a61038f366004614ca8565b6114cb565b60005461029e9061ffff1681565b6103526103b0366004614870565b600b6020526000908152604090205460ff1681565b6103cd611614565b60405161027f9190614cf7565b61024a6103e8366004614d0a565b611828565b6104147f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161027f565b600054610414906201000090046001600160a01b031681565b61024a610453366004614870565b6119a0565b610352610466366004614870565b611b85565b61024a610479366004614dc1565b611ce5565b6102c461048c366004614e2c565b611ec2565b600d546102739060ff1681565b6104b16104ac3660046147a6565b611fcf565b60405161027f9190614e51565b6a13195859195c909bd85c9960aa1b61030c565b6104b16104e0366004614ea8565b612099565b6378a495e961030c565b6102736104fd366004614870565b612165565b610515610510366004614eed565b612188565b60405161027f9190614f2e565b61024a610530366004614870565b6122de565b610548610543366004614870565b612504565b6040805161ffff93841681529290911660208301520161027f565b61024a6127cc565b6102c461284e565b610586610581366004614870565b612a63565b6040805163ffffffff909316835260ff90911660208301520161027f565b6104146105b2366004614870565b612a8f565b600054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc8916105f291339161ffff90911690600401614f7f565b602060405180830381865afa15801561060f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106339190614f9c565b806106d15750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c9061068590600401614fb9565b602060405180830381865afa1580156106a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c69190614fdd565b6001600160a01b0316145b6106f65760405162461bcd60e51b81526004016106ed90614ffa565b60405180910390fd5b8281146107575760405162461bcd60e51b815260206004820152602960248201527f4c6561646572426f617264203a20617272617973206f6620646966666572696e60448201526867206c656e6774687360b81b60648201526084016106ed565b60005b838110156107b2576107aa8585838181106107775761077761502a565b905060200201602081019061078c9190614870565b84848481811061079e5761079e61502a565b90506020020135612c5d565b60010161075a565b5050505050565b600054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc8916107f491339161ffff90911690600401614f7f565b602060405180830381865afa158015610811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108359190614f9c565b806108d35750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c9061088790600401614fb9565b602060405180830381865afa1580156108a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c89190614fdd565b6001600160a01b0316145b6108ef5760405162461bcd60e51b81526004016106ed90614ffa565b60005b81518161ffff161015610a2d57610925828261ffff16815181106109185761091861502a565b6020026020010151612165565b6109d357600d5460021961010090910460ff160161096857610963828261ffff16815181106109565761095661502a565b6020026020010151612cee565b610a1b565b610990828261ffff16815181106109815761098161502a565b60200260200101516001612da4565b818161ffff16815181106109a6576109a661502a565b602002602001015163ffffffff166000805160206156f083398151915260405160405180910390a2610a1b565b60405162461bcd60e51b815260206004820152601f60248201527f54726169743a20546f6b656e20616c726561647920686173207472616974210060448201526064016106ed565b80610a2581615056565b9150506108f2565b5050565b600054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc891610a6c91339161ffff90911690600401614f7f565b602060405180830381865afa158015610a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aad9190614f9c565b80610b4b5750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c90610aff90600401614fb9565b602060405180830381865afa158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b409190614fdd565b6001600160a01b0316145b610b675760405162461bcd60e51b81526004016106ed90614ffa565b610a2d8282612c5d565b6060600080610b7f84612504565b9092509050600061ffff83166001600160401b03811115610ba257610ba261472b565b6040519080825280601f01601f191660200182016040528015610bcc576020820181803683370190505b5063ffffffff8616600090815260076020526040812080549293509091610bf290615077565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1e90615077565b8015610c6b5780601f10610c4057610100808354040283529160200191610c6b565b820191906000526020600020905b815481529060010190602001808311610c4e57829003601f168201915b50505050509050610c7b86611047565b610d0d5760098054610c8c90615077565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb890615077565b8015610d055780601f10610cda57610100808354040283529160200191610d05565b820191906000526020600020905b815481529060010190602001808311610ce857829003601f168201915b505050505090505b8051600003610d7057600354610d279060ff1660206150ab565b61ffff166001600160401b03811115610d4257610d4261472b565b6040519080825280601f01601f191660200182016040528015610d6c576020820181803683370190505b5090505b602082810190848401016000805b60035460ff9081169082161015610f4c57610d9a6020836150c9565b60ff808316600090815260026020526040902060010154919350166009816013811115610dc957610dc96148f0565b1480610de65750600a816013811115610de457610de46148f0565b145b15610ef95760ff8216600090815260066020908152604080832063ffffffff8f16845290915281208054610e1990615077565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4590615077565b8015610e925780601f10610e6757610100808354040283529160200191610e92565b820191906000526020600020905b815481529060010190602001808311610e7557829003601f168201915b5050505050905088865260208901985080516020810481602082021015610eb7576001015b9086526020909501946000905b80821015610ee957602060018301028301518752602087019650600182019150610ec4565b602081028b019a50505050610f3c565b610f0281612dbd565b15610f355760ff8216600090815260026020526040902060010154610f3090610100900460e01b8c87612ecf565b610f3c565b8286015185525b5060209390930192600101610d7e565b509398975050505050505050565b610fb160408051610120810182526000808252602080830182905282840182905260608084018390526080840183905260a084015260c0830182905260e08301829052835190810190935282529061010082015290565b60408051610120810190915260005461ffff16815260208101600861ffff1681526000546201000090046001600160a01b031660208201526040016378a495e981526020016378a467d18152602001611008611614565b815260035460ff1660208201526040016a13195859195c909bd85c9960aa1b815260408051602081810190925260015460ff1615158152910152919050565b6000611054826002612fd1565b92915050565b600061106582613097565b61107157506000919050565b61108c6d696e7465726e616c5f73636f726560901b83611ec2565b611054906150dc565b600054600160b01b900460ff16156110ef5760405162461bcd60e51b815260206004820152601b60248201527f54726169743a20616c726561647920696e697469616c697a656421000000000060448201526064016106ed565b600080546001600160b01b031916620100006001600160a01b0387160261ffff19161761ffff851617815582516001805460ff19169115159190911790555b81518160ff1610156107b257818160ff168151811061114f5761114f61502a565b6020026020010151600a60008360ff1660ff168152602001908152602001600020908161117c9190615150565b50806111878161520f565b91505061112e565b600054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc8916111ca91339161ffff90911690600401614f7f565b602060405180830381865afa1580156111e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120b9190614f9c565b806112a95750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c9061125d90600401614fb9565b602060405180830381865afa15801561127a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129e9190614fdd565b6001600160a01b0316145b6112c55760405162461bcd60e51b81526004016106ed90614ffa565b60006113046d696e7465726e616c5f73636f726560901b84836040516020016112f091815260200190565b604051602081830303815290604052611828565b6040516bffffffffffffffffffffffff19606084901b16602082015261133f906b686f6d655f6164647265737360a01b9085906034016112f0565b505050565b60008054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc89161138091339161ffff90911690600401614f7f565b602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c19190614f9c565b8061145f5750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c9061141390600401614fb9565b602060405180830381865afa158015611430573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114549190614fdd565b6001600160a01b0316145b61147b5760405162461bcd60e51b81526004016106ed90614ffa565b60005b82518160ff1610156114c2576114af838260ff16815181106114a2576114a261502a565b6020026020010151613395565b50806114ba8161520f565b91505061147e565b50600192915050565b600054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc89161150691339161ffff90911690600401614f7f565b602060405180830381865afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115479190614f9c565b806115e55750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c9061159990600401614fb9565b602060405180830381865afa1580156115b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115da9190614fdd565b6001600160a01b0316145b6116015760405162461bcd60e51b81526004016106ed90614ffa565b61160b82826134eb565b610a2d82612cee565b60035460609060009060ff166001600160401b038111156116375761163761472b565b6040519080825280602002602001820160405280156116a557816020015b6040805161010081018252600080825260208083018290529282018190526060808301526080820181905260a0820181905260c0820181905260e082015282526000199092019101816116555790505b50905060005b60035460ff90811690821610156118225760ff808216600090815260026020908152604091829020825161010081019093528054835260018101549293909291840191166013811115611700576117006148f0565b6013811115611711576117116148f0565b81526001820154610100900460e01b6001600160e01b031916602082015260028201805460409092019161174490615077565b80601f016020809104026020016040519081016040528092919081815260200182805461177090615077565b80156117bd5780601f10611792576101008083540402835291602001916117bd565b820191906000526020600020905b8154815290600101906020018083116117a057829003601f168201915b5050509183525050600382015460ff9081161515602083015260048301546040830152600583015460608301526006909201548216151560809091015283518491841690811061180f5761180f61502a565b60209081029190910101526001016116ab565b50919050565b600054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc89161186391339161ffff90911690600401614f7f565b602060405180830381865afa158015611880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a49190614f9c565b806119425750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c906118f690600401614fb9565b602060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119379190614fdd565b6001600160a01b0316145b61195e5760405162461bcd60e51b81526004016106ed90614ffa565b6b1bdddb995c97dcdd1bdc995960a21b830361198c5760405162461bcd60e51b81526004016106ed9061522e565b61199582612cee565b61133f83838361378a565b600054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc8916119db91339161ffff90911690600401614f7f565b602060405180830381865afa1580156119f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1c9190614f9c565b80611aba5750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c90611a6e90600401614fb9565b602060405180830381865afa158015611a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaf9190614fdd565b6001600160a01b0316145b611ad65760405162461bcd60e51b81526004016106ed90614ffa565b6000611aec6631b7bab73a32b960c91b83611ec2565b611af5906150dc565b611b009060016150c9565b90506101008110611b635760405162461bcd60e51b815260206004820152602760248201527f47656e6572696354726169743a20636f756e7465722065786365656473206d616044820152667820283235352960c81b60648201526084016106ed565b610a2d6631b7bab73a32b960c91b83836040516020016112f091815260200190565b600080611b9183612165565b15611ccc576000611baf6930b1ba34bb30ba34b7b760b11b85611ec2565b611bb8906150dc565b90506000611bd36932bc3834b930ba34b7b760b11b86611ec2565b611bdc906150dc565b90506000611bf46631b7bab73a32b960c91b87611ec2565b611bfd906150dc565b90506000829003611c1757611c1442610e106150c9565b91505b8015611cc357428311158015611c2d5750814211155b15611cba57600d5460021961010090910460ff1601611cb1576000611c616b1bdddb995c97dcdd1bdc995960a21b88611ec2565b806020019051810190611c749190614fdd565b90506000611c8188612a8f565b9050806001600160a01b0316826001600160a01b031603611ca55760019550611caa565b600295505b5050611cc8565b60019350611cc8565b60029350611cc8565b600393505b5050505b806003811115611cde57611cde6148f0565b9392505050565b600054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc891611d2091339161ffff90911690600401614f7f565b602060405180830381865afa158015611d3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d619190614f9c565b80611dff5750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c90611db390600401614fb9565b602060405180830381865afa158015611dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df49190614fdd565b6001600160a01b0316145b611e1b5760405162461bcd60e51b81526004016106ed90614ffa565b611e2483612cee565b60005b82518160ff161015611ebc576000838260ff1681518110611e4a57611e4a61502a565b602002602001015190506b1bdddb995c97dcdd1bdc995960a21b8103611e825760405162461bcd60e51b81526004016106ed9061522e565b611ea98186858560ff1681518110611e9c57611e9c61502a565b602002602001015161378a565b5080611eb48161520f565b915050611e27565b50505050565b60008281526004602090815260408083205460ff908116808552600290935292206001015460609216611ef484611047565b158015611f075750611f0581612dbd565b155b15611fb45760ff82166000908152600260208190526040909120018054611f2d90615077565b80601f0160208091040260200160405190810160405280929190818152602001828054611f5990615077565b8015611fa65780601f10611f7b57610100808354040283529160200191611fa6565b820191906000526020600020905b815481529060010190602001808311611f8957829003601f168201915b505050505092505050611054565b611fbe8285613aa6565b92505050611054565b505092915050565b6060600082516001600160401b03811115611fec57611fec61472b565b60405190808252806020026020018201604052801561201f57816020015b606081526020019060019003908161200a5790505b50905060005b83518163ffffffff1610156120925761205c848263ffffffff168151811061204f5761204f61502a565b6020026020010151610b71565b828263ffffffff16815181106120745761207461502a565b6020026020010181905250808061208a9061527f565b915050612025565b5092915050565b6060600082516001600160401b038111156120b6576120b661472b565b6040519080825280602002602001820160405280156120e957816020015b60608152602001906001900390816120d45790505b50905060005b83518163ffffffff16101561215d57612127848263ffffffff16815181106121195761211961502a565b602002602001015186611ec2565b828263ffffffff168151811061213f5761213f61502a565b602002602001018190525080806121559061527f565b9150506120ef565b509392505050565b600080612173836001612fd1565b60015490915060ff1615611054571592915050565b6060816001600160401b038111156121a2576121a261472b565b6040519080825280602002602001820160405280156121e757816020015b60408051808201909152600080825260208201528152602001906001900390816121c05790505b50905060005b828110156120925761222484848381811061220a5761220a61502a565b905060200201602081019061221f9190614870565b613097565b8282815181106122365761223661502a565b6020026020010151602001901515908115158152505081818151811061225e5761225e61502a565b602002602001015160200151156122d6576122ab6d696e7465726e616c5f73636f726560901b8585848181106122965761229661502a565b905060200201602081019061048c9190614870565b6122b4906150dc565b60001c8282815181106122c9576122c961502a565b6020908102919091010151525b6001016121ed565b600054604051630403639960e31b81526001600160a01b03620100008304169163201b1cc89161231991339161ffff90911690600401614f7f565b602060405180830381865afa158015612336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235a9190614f9c565b806123f85750604051631d2e660b60e21b815233907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906374b9982c906123ac90600401614fb9565b602060405180830381865afa1580156123c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ed9190614fdd565b6001600160a01b0316145b6124145760405162461bcd60e51b81526004016106ed90614ffa565b600061242a6631b7bab73a32b960c91b83611ec2565b612433906150dc565b90508061249a5760405162461bcd60e51b815260206004820152602f60248201527f47656e6572696354726169743a20617474656d707420746f2064656372656d6560448201526e373a103d32b9379031b7bab73a32b960891b60648201526084016106ed565b60006124b16731b7b7b63237bbb760c11b84611ec2565b6124ba906150dc565b90506124e86631b7bab73a32b960c91b846124d6600186615298565b6040516020016112f091815260200190565b61133f6930b1ba34bb30ba34b7b760b11b846124d684426150c9565b600354600090819060ff168161251b8260206150ab565b63ffffffff861660009081526007602052604081208054929350839261254090615077565b80601f016020809104026020016040519081016040528092919081815260200182805461256c90615077565b80156125b95780601f1061258e576101008083540402835291602001916125b9565b820191906000526020600020905b81548152906001019060200180831161259c57829003601f168201915b5050505050905060005b60035460ff90811690821610156127bf5760ff808216600090815260026020526040902060010154166009816013811115612600576126006148f0565b148061261d5750600a81601381111561261b5761261b6148f0565b145b156127b657600061263260ff841660206150ab565b60408051600280825281830190925291925060009190602082018180368337505086519192505015612747578461266a83601e6152ab565b61ffff168151811061267e5761267e61502a565b602001015160f81c60f81b8160008151811061269c5761269c61502a565b60200101906001600160f81b031916908160001a905350846126bf83601f6152ab565b61ffff16815181106126d3576126d361502a565b602001015160f81c60f81b816001815181106126f1576126f161502a565b60200101906001600160f81b031916908160001a9053506020612713826152c6565b60f01c6127209190615313565b61272b9060206150ab565b6127369060406152ab565b61274090886152ab565b96506127b3565b600060f81b8160008151811061275f5761275f61502a565b60200101906001600160f81b031916908160001a905350600060f81b8160018151811061278e5761278e61502a565b60200101906001600160f81b031916908160001a9053506127b06020886152ab565b96505b50505b506001016125c3565b5091969095509350505050565b6127d4613ce3565b6127f06d696e7465726e616c5f73636f726560901b6007613f02565b61280a6b686f6d655f6164647265737360a01b600b613f02565b6128446a626f6172645f73636f726560a81b60117f3d0326e38f6ed6af33a2963dbd567c6257ba519f51331d082fbc93ff227b3203613f0e565b61284c613f19565b565b60606000808061285d83612504565b9150915060008261ffff166001600160401b0381111561287f5761287f61472b565b6040519080825280601f01601f1916602001820160405280156128a9576020820181803683370190505b509050602080820190838301016000805b60035460ff9081169082161015612a56576128d66020836150c9565b60ff808316600090815260026020526040902060010154919350166009816013811115612905576129056148f0565b14806129225750600a816013811115612920576129206148f0565b145b15612a245760ff82166000908152600860205260408120805461294490615077565b80601f016020809104026020016040519081016040528092919081815260200182805461297090615077565b80156129bd5780601f10612992576101008083540402835291602001916129bd565b820191906000526020600020905b8154815290600101906020018083116129a057829003601f168201915b50505050509050878652602088019750805160208104816020820210156129e2576001015b9086526020909501946000905b80821015612a14576020600183010283015187526020870196506001820191506129ef565b602081028a019950505050612a46565b60ff821660009081526002602081905260408220612a429101615334565b8652505b50602093909301926001016128ba565b5092979650505050505050565b600080612a71600884615375565b9150612a7e82600861538c565b612a8890846153ac565b9050915091565b60008060029054906101000a90046001600160a01b03166001600160a01b0316639d759d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b079190614fdd565b6001600160a01b03166374b9982c600060029054906101000a90046001600160a01b03166001600160a01b031663b7ace66a6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612b68573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b9091908101906153c9565b6040518263ffffffff1660e01b8152600401612bac91906148dd565b602060405180830381865afa158015612bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bed9190614fdd565b6040516331a9108f60e11b815263ffffffff841660048201526001600160a01b039190911690636352211e90602401602060405180830381865afa158015612c39573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110549190614fdd565b6000612c7a6d696e7465726e616c5f73636f726560901b84611ec2565b612c83906150dc565b905060008212612c9e57612c9782826150c9565b9050612cc5565b612ca78261543f565b811115612cc157612cb78261543f565b612c979082615298565b5060005b61133f6d696e7465726e616c5f73636f726560901b84836040516020016112f091815260200190565b600d5460021961010090910460ff1601612d87576000612d1d6b1bdddb995c97dcdd1bdc995960a21b83611ec2565b806020019051810190612d309190614fdd565b6001600160a01b031603612d8457612d846b1bdddb995c97dcdd1bdc995960a21b82612d5b84612a8f565b604080516001600160a01b0390921660208301520160405160208183030381529060405261378a565b50565b612d846b1bdddb995c97dcdd1bdc995960a21b82612d5b84612a8f565b60015460ff1615612db157155b610a2d82600183614272565b6000600c826013811115612dd357612dd36148f0565b03612de057506001919050565b600d826013811115612df457612df46148f0565b03612e0157506001919050565b600e826013811115612e1557612e156148f0565b03612e2257506001919050565b600f826013811115612e3657612e366148f0565b03612e4357506001919050565b6010826013811115612e5757612e576148f0565b03612e6457506001919050565b6011826013811115612e7857612e786148f0565b03612e8557506001919050565b6012826013811115612e9957612e996148f0565b03612ea657506001919050565b6013826013811115612eba57612eba6148f0565b03612ec757506001919050565b506000919050565b60405163ffffffff8316602482015260009081903090869060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612f28919061545b565b600060405180830381855afa9150503d8060008114612f63576040519150601f19603f3d011682016040523d82523d6000602084013e612f68565b606091505b509150915081612fc55760405162461bcd60e51b815260206004820152602260248201527f54726169743a20696e7465726e616c206d6574686f642063616c6c206661696c604482015261195960f21b60648201526084016106ed565b60200151909152505050565b600080826002811115612fe657612fe66148f0565b9050600080612ff486612a63565b915091508260ff166001036130435761300e81600261555b565b61301990600161556a565b63ffffffff9092166000908152600b60205260409020549190911660ff1615159250611054915050565b8260ff1660020361308e5761305981600261555b565b61306490600161556a565b63ffffffff9092166000908152600c60205260409020549190911660ff1615159250611054915050565b50505092915050565b6000806130b36b686f6d655f6164647265737360a01b84611ec2565b6130bc90615581565b604051631d2e660b60e21b815260206004820152601160248201527021a0a9222fa7aba722a92fa927aaaa22a960791b604482015260609190911c91506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906374b9982c90606401602060405180830381865afa15801561314d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131719190614fdd565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316639d759d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131eb9190614fdd565b6001600160a01b031663f5a24eec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061324c91906155b9565b905060008060029054906101000a90046001600160a01b03166001600160a01b031663f282a8e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c691906155b9565b90506001600160a01b0383161561336f5760405163ab90d92560e01b81526001600160a01b03858116600483015263ffffffff808516602484015280841660448401528816606483015284169063ab90d92590608401602060405180830381865afa925050508015613355575060408051601f3d908101601f1916820190925261335291810190614f9c565b60015b1561336f57801561336d575060019695505050505050565b505b600061337a87612a8f565b6001600160a01b039586169516949094149695505050505050565b60006133a082612165565b6133f65760405162461bcd60e51b815260206004820152602160248201527f54726169743a20546f6b656e20646f6573206e6f7420686176652074726169746044820152602160f81b60648201526084016106ed565b63ffffffff8216600090815260076020526040812061341491614627565b60005b60035460ff90811690821610156134ab5760ff808216600090815260026020526040902060010154166009816013811115613454576134546148f0565b14806134715750600a81601381111561346f5761346f6148f0565b145b156134a25760ff8216600090815260066020908152604080832063ffffffff8816845290915281206134a291614627565b50600101613417565b506134b7826000612da4565b6134c48260026000614272565b60405163ffffffff8316906000805160206156f083398151915290600090a2506001919050565b6134f482612165565b61350357613503826001612da4565b61350c82611047565b61351d5761351d8260026001614272565b6003546000906135319060ff1660206150ab565b90508061ffff16825110156135885760405162461bcd60e51b815260206004820152601e60248201527f54726169743a204d657373616765206e6f74206c6f6e6720656e6f756768000060448201526064016106ed565b60008161ffff166001600160401b038111156135a6576135a661472b565b6040519080825280601f01601f1916602001820160405280156135d0576020820181803683370190505b509050602080820190840160005b60035460ff90811690821610156137425760ff8082166000908152600260205260409020600101548351911690600982601381111561361f5761361f6148f0565b148061363c5750600a82601381111561363a5761363a6148f0565b145b1561371c578781016020018051808752906000826001600160401b038111156136675761366761472b565b6040519080825280601f01601f191660200182016040528015613691576020820181803683370190505b5090506020810160208404846020820210156136ab576001015b60005b818110156136cd576020948501805184529492909201916001016136ae565b50505080600660008860ff1660ff16815260200190815260200160002060008e63ffffffff1663ffffffff16815260200190815260200160002090816137139190615150565b5050505061372d565b61372582612dbd565b61372d578085525b505060209283019291909101906001016135de565b5063ffffffff861660009081526007602052604090206137628482615150565b5060405163ffffffff8716906000805160206156f083398151915290600090a2505050505050565b61379382612165565b6137a2576137a2826001612da4565b6137ab82611047565b613850576137bc8260026001614272565b61385082600980546137cd90615077565b80601f01602080910402602001604051908101604052809291908181526020018280546137f990615077565b80156138465780601f1061381b57610100808354040283529160200191613846565b820191906000526020600020905b81548152906001019060200180831161382957829003601f168201915b50505050506134eb565b60008381526004602090815260408083205460ff908116808552600290935292206001015490911661388181612dbd565b156138ce5760405162461bcd60e51b815260206004820152601e60248201527f54726169743a2043616e6e6f7420736574206c6f6769632076616c756521000060448201526064016106ed565b6003546000906138e29060ff1660206150ab565b63ffffffff861660009081526007602052604081208054929350909161390790615077565b80601f016020809104026020016040519081016040528092919081815260200182805461393390615077565b80156139805780601f1061395557610100808354040283529160200191613980565b820191906000526020600020905b81548152906001019060200180831161396357829003601f168201915b5050505050905080516000036139da578161ffff166001600160401b038111156139ac576139ac61472b565b6040519080825280601f01601f1916602001820160405280156139d6576020820181803683370190505b5090505b600060098460138111156139f0576139f06148f0565b1480613a0d5750600a846013811115613a0b57613a0b6148f0565b145b15613a48575060ff8416600090815260066020908152604080832063ffffffff8a16845290915290208590613a428282615150565b50613a4e565b50602085015b80516020868102840181019190915263ffffffff88166000908152600790915260409020613a7c8382615150565b5050505060405163ffffffff8516906000805160206156f083398151915290600090a25050505050565b60ff8281166000908152600260209081526040808320600101548151838152808301909252606094169291602082018180368337019050509050602081016009836013811115613af857613af86148f0565b1480613b155750600a836013811115613b1357613b136148f0565b145b15613bcd5760ff8616600090815260066020908152604080832063ffffffff8916845290915290208054613b4890615077565b80601f0160208091040260200160405190810160405280929190818152602001828054613b7490615077565b8015613bc15780601f10613b9657610100808354040283529160200191613bc1565b820191906000526020600020905b815481529060010190602001808311613ba457829003601f168201915b50505050509150613cda565b613bd683612dbd565b15613c095760ff8616600090815260026020526040902060010154613c0490610100900460e01b8683612ecf565b613cda565b63ffffffff851660009081526007602052604081208054613c2990615077565b80601f0160208091040260200160405190810160405280929190818152602001828054613c5590615077565b8015613ca25780601f10613c7757610100808354040283529160200191613ca2565b820191906000526020600020905b815481529060010190602001808311613c8557829003601f168201915b5050505050905060008760ff166020613cbb91906150ab565b613cc69060206152ab565b61ffff169190910151602084019081529150505b50949350505050565b600054600160b01b900460ff1615613d3d5760405162461bcd60e51b815260206004820152601b60248201527f54726169743a20616c726561647920696e697469616c697a656421000000000060448201526064016106ed565b613d726565786973747360d01b600c7fb7a11b0101698da6b700a2cbeb884e47cc482bbfbdc8adfa78bfbf389bfab352613f0e565b613dac6a1a5b9a5d1a585b1a5e995960aa1b600c7f346ab9d0d784b641d01667f58ba89f4b4e1d5c676f04880e7744af0824d02ce7613f0e565b613dc66b1bdddb995c97dcdd1bdc995960a21b600b613f02565b613e026c1bdddb995c97d8dd5c9c995b9d609a1b60137ff22cac85b6325a870a6880df699bc73f929a1cdbe07090a5c8558e02116389a2613f0e565b613e1d6c6d6f6469666965725f6c6f636b60981b6001613f02565b613e3e7236b7bb32b6b2b73a2fb832b936b4b9b9b4b7b760691b6002613f02565b613e566930b1ba34bb30ba34b7b760b11b6007613f02565b613e6c6731b7b7b63237bbb760c11b6007613f02565b613e846932bc3834b930ba34b7b760b11b6007613f02565b613e996631b7bab73a32b960c91b6002613f02565b613eb1691c9bde585b1d1e57da5960b21b6007613f02565b613ecd6d1c9bde585b1d1e57d85b5bdd5b9d60921b6007613f02565b61284c6573746174757360d01b600d7f8174263b3ef0075354f0562e27c2370f5b2dcd95d8ce34c99c62b222deecc0d8613f0e565b610a2d828260006143b1565b61133f8383836143b1565b600080613f2461449a565b9150915060005b60035460ff90811690821610156141be5760ff808216600090815260026020908152604080832081516101008101909252805482526001810154939491939092840191166013811115613f8057613f806148f0565b6013811115613f9157613f916148f0565b81526001820154610100900460e01b6001600160e01b0319166020820152600282018054604090920191613fc490615077565b80601f0160208091040260200160405190810160405280929190818152602001828054613ff090615077565b801561403d5780601f106140125761010080835404028352916020019161403d565b820191906000526020600020905b81548152906001019060200180831161402057829003601f168201915b5050509183525050600382015460ff90811615156020830152600483015460408301526005830154606083015260069092015490911615156080909101528051909150691c9bde585b1d1e57da5960b21b14806140ab575080516d1c9bde585b1d1e57d85b5bdd5b9d60921b145b1561416157805160609069236421a7a4e2e1a825a760b21b016140ea576040805160208101879052016040516020818303038152906040529050614121565b81516d236421a7a4e2e1a827a4a422a46360921b016141215760408051602081018690520160405160208183030381529060405290505b60ff83166000908152600a6020526040902061413d8282615150565b5060ff831660009081526002602081905260409091200161415e8282615150565b50505b80516b24222466a3682322e42366a760a21b016141b55760408051600060208201520160408051601f1981840301815291815260ff841660009081526002602081905291902001906141b39082615150565b505b50600101613f2b565b5060006141dc6c6d6f6469666965725f6c6f636b60981b6000611ec2565b6141e5906150dc565b600d805460ff1916929091119190911790556142187236b7bb32b6b2b73a2fb832b936b4b9b9b4b7b760691b6000611ec2565b80602001905181019061422b91906155d6565b600d60016101000a81548160ff021916908360ff16021790555061424d61284e565b60099061425a9082615150565b50506000805460ff60b01b1916600160b01b17905550565b60008061427e85612a63565b90925090506001846002811115614297576142976148f0565b036143195782156142e1576142ad81600261555b565b63ffffffff83166000908152600b60205260409020805460ff9283169281169290921760ff199092169190911790556107b2565b6142ec81600261555b565b63ffffffff83166000908152600b60205260409020805460ff19811692191660ff169190911790556107b2565b600284600281111561432d5761432d6148f0565b036107b25782156143775761434381600261555b565b63ffffffff83166000908152600c60205260409020805460ff9283169281169290921760ff199092169190911790556107b2565b61438281600261555b565b63ffffffff83166000908152600c60205260409020805460ff19811692191660ff169190911790555050505050565b60035460008481526004602052604090205460ff9182169116156143d457600080fd5b6000848152600460209081526040808320805460ff861660ff199182168117909255908452600290925290912085815560018181018054929387939192911690836013811115614426576144266148f0565b021790555060018101805464ffffffff00191661010060e086901c0217905560ff82166000908152600a60205260409020600282019061446690826155f9565b506003805460ff1690600061447a8361520f565b91906101000a81548160ff021916908360ff160217905550505050505050565b604051631d2e660b60e21b815260206004820152600e60248201526d0a082b29a8a9ca8be9a82a8a492b60931b6044820152600090819081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906374b9982c90606401602060405180830381865afa158015614524573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145489190614fdd565b90506001600160a01b0381166145b25760405162461bcd60e51b815260206004820152602960248201527f54726169743a205041594d454e545f4d4154524958206164647265737320636160448201526806e6e6f7420626520360bc1b60648201526084016106ed565b60408051633583a33f60e21b81526008600482015281516001600160a01b0384169263d60e8cfc92602480820193918290030181865afa1580156145fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061461e91906156cb565b92509250509091565b50805461463390615077565b6000825580601f10614643575050565b601f016020900490600052602060002090810190612d8491905b80821115614671576000815560010161465d565b5090565b60008083601f84011261468757600080fd5b5081356001600160401b0381111561469e57600080fd5b6020830191508360208260051b85010111156146b957600080fd5b9250929050565b600080600080604085870312156146d657600080fd5b84356001600160401b03808211156146ed57600080fd5b6146f988838901614675565b9096509450602087013591508082111561471257600080fd5b5061471f87828801614675565b95989497509550505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156147695761476961472b565b604052919050565b60006001600160401b0382111561478a5761478a61472b565b5060051b60200190565b63ffffffff81168114612d8457600080fd5b600060208083850312156147b957600080fd5b82356001600160401b038111156147cf57600080fd5b8301601f810185136147e057600080fd5b80356147f36147ee82614771565b614741565b81815260059190911b8201830190838101908783111561481257600080fd5b928401925b8284101561483957833561482a81614794565b82529284019290840190614817565b979650505050505050565b6000806040838503121561485757600080fd5b823561486281614794565b946020939093013593505050565b60006020828403121561488257600080fd5b8135611cde81614794565b60005b838110156148a8578181015183820152602001614890565b50506000910152565b600081518084526148c981602086016020860161488d565b601f01601f19169290920160200192915050565b602081526000611cde60208301846148b1565b634e487b7160e01b600052602160045260246000fd5b600082825180855260208086019550808260051b8401018186016000805b858110156149d857601f19878503018a52825161010081518652868201516014811061495e57634e487b7160e01b85526021600452602485fd5b868801526040828101516001600160e01b0319169087015260608083015181880183905261498e838901826148b1565b925050506080808301516149a58289018215159052565b505060a0828101519087015260c0808301519087015260e091820151151591909501529884019891840191600101614924565b509198975050505050505050565b602081526149fb60208201835161ffff169052565b60006020830151614a12604084018261ffff169052565b5060408301516001600160a01b03811660608401525060608301516080830152608083015160a083015260a08301516101208060c0850152614a58610140850183614906565b915060c0850151614a6e60e086018260ff169052565b5060e085015161010085810191909152909401515115159390920192909252919050565b6001600160a01b0381168114612d8457600080fd5b8015158114612d8457600080fd5b60006001600160401b03821115614ace57614ace61472b565b50601f01601f191660200190565b600082601f830112614aed57600080fd5b8135614afb6147ee82614ab5565b818152846020838601011115614b1057600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112614b3e57600080fd5b81356020614b4e6147ee83614771565b82815260059290921b84018101918181019086841115614b6d57600080fd5b8286015b84811015614bac5780356001600160401b03811115614b905760008081fd5b614b9e8986838b0101614adc565b845250918301918301614b71565b509695505050505050565b6000806000808486036080811215614bce57600080fd5b8535614bd981614a92565b9450602086013561ffff81168114614bf057600080fd5b93506020603f1982011215614c0457600080fd5b50604051602081016001600160401b038282108183111715614c2857614c2861472b565b8160405260408801359150614c3c82614aa7565b81835291935060608701359180831115614c5557600080fd5b5050614c6387828801614b2d565b91505092959194509250565b60008060408385031215614c8257600080fd5b8235614c8d81614794565b91506020830135614c9d81614a92565b809150509250929050565b60008060408385031215614cbb57600080fd5b8235614cc681614794565b915060208301356001600160401b03811115614ce157600080fd5b614ced85828601614adc565b9150509250929050565b602081526000611cde6020830184614906565b600080600060608486031215614d1f57600080fd5b833592506020840135614d3181614794565b915060408401356001600160401b03811115614d4c57600080fd5b614d5886828701614adc565b9150509250925092565b600082601f830112614d7357600080fd5b81356020614d836147ee83614771565b8083825260208201915060208460051b870101935086841115614da557600080fd5b602086015b84811015614bac5780358352918301918301614daa565b600080600060608486031215614dd657600080fd5b8335614de181614794565b925060208401356001600160401b0380821115614dfd57600080fd5b614e0987838801614d62565b93506040860135915080821115614e1f57600080fd5b50614d5886828701614b2d565b60008060408385031215614e3f57600080fd5b823591506020830135614c9d81614794565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015612a5657603f19888603018452614e968583516148b1565b94509285019290850190600101614e7a565b60008060408385031215614ebb57600080fd5b8235614ec681614794565b915060208301356001600160401b03811115614ee157600080fd5b614ced85828601614d62565b60008060208385031215614f0057600080fd5b82356001600160401b03811115614f1657600080fd5b614f2285828601614675565b90969095509350505050565b602080825282518282018190526000919060409081850190868401855b82811015614f72578151805185528601511515868501529284019290850190600101614f4b565b5091979650505050505050565b6001600160a01b0392909216825261ffff16602082015260400190565b600060208284031215614fae57600080fd5b8151611cde81614aa7565b6020808252600a908201526920a1aa24a7a72fa42aa160b11b604082015260600190565b600060208284031215614fef57600080fd5b8151611cde81614a92565b6020808252601690820152752a3930b4ba1d102737ba1030baba3437b934bd32b21760511b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff80831681810361506d5761506d615040565b6001019392505050565b600181811c9082168061508b57607f821691505b60208210810361182257634e487b7160e01b600052602260045260246000fd5b61ffff818116838216028082169190828114611fc757611fc7615040565b8082018082111561105457611054615040565b805160208083015191908110156118225760001960209190910360031b1b16919050565b601f82111561133f576000816000526020600020601f850160051c810160208610156151295750805b601f850160051c820191505b8181101561514857828155600101615135565b505050505050565b81516001600160401b038111156151695761516961472b565b61517d816151778454615077565b84615100565b602080601f8311600181146151b2576000841561519a5750858301515b600019600386901b1c1916600185901b178555615148565b600085815260208120601f198616915b828110156151e1578886015182559484019460019091019084016151c2565b50858210156151ff5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060ff821660ff810361522557615225615040565b60010192915050565b60208082526031908201527f54726169743a2064697373616c6f776564212043616e6e6f7420736574206f776040820152706e65725f73746f7265642076616c75652160781b606082015260800190565b600063ffffffff80831681810361506d5761506d615040565b8181038181111561105457611054615040565b61ffff81811683821601908082111561209257612092615040565b805160208201516001600160f01b031980821692919060028310156152f55780818460020360031b1b83161693505b505050919050565b634e487b7160e01b600052601260045260246000fd5b600061ffff80841680615328576153286152fd565b92169190910492915050565b60006153408254615077565b82601f8211156153565783600052602060002090505b54915060208110156118225760001960209190910360031b1b16919050565b600063ffffffff80841680615328576153286152fd565b63ffffffff818116838216028082169190828114611fc757611fc7615040565b63ffffffff82811682821603908082111561209257612092615040565b6000602082840312156153db57600080fd5b81516001600160401b038111156153f157600080fd5b8201601f8101841361540257600080fd5b80516154106147ee82614ab5565b81815285602083850101111561542557600080fd5b61543682602083016020860161488d565b95945050505050565b6000600160ff1b820161545457615454615040565b5060000390565b6000825161546d81846020870161488d565b9190910192915050565b600181815b808511156154b257816000190482111561549857615498615040565b808516156154a557918102915b93841c939080029061547c565b509250929050565b6000826154c957506001611054565b816154d657506000611054565b81600181146154ec57600281146154f657615512565b6001915050611054565b60ff84111561550757615507615040565b50506001821b611054565b5060208310610133831016604e8410600b8410161715615535575081810a611054565b61553f8383615477565b806000190482111561555357615553615040565b029392505050565b6000611cde60ff8416836154ba565b808202811582820484141761105457611054615040565b805160208201516bffffffffffffffffffffffff1980821692919060148310156152f55760149290920360031b82901b161692915050565b6000602082840312156155cb57600080fd5b8151611cde81614794565b6000602082840312156155e857600080fd5b815160ff81168114611cde57600080fd5b818103615604575050565b61560e8254615077565b6001600160401b038111156156255761562561472b565b615633816151778454615077565b6000601f821160018114615667576000831561564f5750848201545b600019600385901b1c1916600184901b1784556107b2565b600085815260209020601f19841690600086815260209020845b838110156156a15782860154825560019586019590910190602001615681565b50858310156151ff5793015460001960f8600387901b161c19169092555050600190811b01905550565b600080604083850312156156de57600080fd5b50508051602090910151909290915056fe00de82671dd733bef7e0b3d4c4929c757de4d6e09dd1facc73a334311aeeeb77a2646970667358221220a549bcd804e4980f8fe10e2975557a9fe1522f21fd77ff3aa139500ab534736664736f6c63430008190033000000000000000000000000dbd9608fbca959828c1615d29aeb3dc872d40ae2