660 txs
626 calls
constructor
constructor(address _protocolLiquidity)
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
marketObligations
viewfunction marketObligations(bytes32) view returns (uint128 totalObligationSideA, uint128 totalObligationSideB, uint128 totalObligationDraw)
markets
viewfunction markets(bytes32) view returns (uint256 closedTime, uint128 initialLiquidity, uint128 totalLiquidity, uint128 availableLiquidityA, uint128 availableLiquidityB, uint128 availableLiquidityDraw, uint128 minimumBet, uint32 createdAt, uint32 settledAt, uint32 oddsA, uint32 oddsB, uint32 oddsDraw, uint8 status, uint8 result)
minimumBet
viewfunction minimumBet() view returns (uint128)
OPERATOR_ROLE
viewfunction OPERATOR_ROLE() view returns (bytes32)
protocolLiquidity
viewfunction protocolLiquidity() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
token
viewfunction token() view returns (address)
totalSideAmount
viewfunction totalSideAmount(bytes32, uint8) view returns (uint128)
userBets
viewfunction userBets(bytes32, address) view returns (uint128 amount, uint32 odds, uint8 side)
assignLiquidity
nonpayablefunction assignLiquidity(bytes32 marketId, uint128 amount)
batchAssignLiquidity
nonpayablefunction batchAssignLiquidity(bytes32[] marketIds, uint128[] amounts)
batchCreateMarket
nonpayablefunction batchCreateMarket(bytes32[] marketIds, uint128[] liquidities, uint256[] closedTimes, uint32[3][] odds)
batchSettleMarket
nonpayablefunction batchSettleMarket(bytes32[] marketIds, uint8[] results)
batchUpdateOdds
nonpayablefunction batchUpdateOdds(bytes32[] marketIds, uint32[] oddsA, uint32[] oddsB, uint32[] oddsDraw)
claim
nonpayablefunction claim(bytes32 marketId, address to)
createMarket
nonpayablefunction createMarket(bytes32 marketId, uint128 liquidity, uint256 closedTime, uint32[3] odds)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
placeBet
nonpayablefunction placeBet(bytes32 marketId, uint8 side, uint128 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
placeBet
nonpayablefunction placeBet(bytes32 marketId, uint8 side, uint128 amount)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setMinimumBet
nonpayablefunction setMinimumBet(uint128 _minimumBet)
settleMarket
nonpayablefunction settleMarket(bytes32 marketId, uint8 result)
updateOdds
nonpayablefunction updateOdds(bytes32 marketId, uint32 oddsA, uint32 oddsB, uint32 oddsDraw)
events
BetPlaced
event BetPlaced(bytes32 indexed marketId, address indexed user, uint8 side, uint128 amount)
LiquidityAssigned
event LiquidityAssigned(bytes32 marketId, uint128 amount)
LiquidityRefunded
event LiquidityRefunded(bytes32 marketId, uint128 amount)
MarketCreated
event MarketCreated(bytes32 marketId, uint256 timestamp)
MarketSettled
event MarketSettled(bytes32 marketId, uint8 result, uint256 timestamp)
OddsUpdated
event OddsUpdated(bytes32 indexed marketId, uint32 oddsA, uint32 oddsB, uint32 oddsDraw)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
WinningsWithdrawn
event WinningsWithdrawn(bytes32 indexed marketId, address indexed user, uint128 amount)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AlreadyClaimed
error AlreadyClaimed()
AmountMustBeGreaterThanZero
error AmountMustBeGreaterThanZero()
BetAlreadyPlaced
error BetAlreadyPlaced()
BetBelowMinimum
error BetBelowMinimum()
InsufficientLiquidity
error InsufficientLiquidity()
InvalidClosedTime
error InvalidClosedTime()
InvalidOutcome
error InvalidOutcome()
InvalidSide
error InvalidSide()
MarketAlreadyExists
error MarketAlreadyExists()
MarketClosed
error MarketClosed()
MarketNotActive
error MarketNotActive()
MarketNotSettled
error MarketNotSettled()
MinimumBetCannotBeZero
error MinimumBetCannotBeZero()
PayoutZero
error PayoutZero()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
ZeroAddress
error ZeroAddress()
creation bytecode
0x60c0604052600480546001600160801b03191661271017905534801562000024575f80fd5b5060405162002d2038038062002d208339810160408190526200004791620003f2565b6001600160a01b0381166200006f5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03811660a081905260408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa158015620000b8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000de9190620003f2565b6001600160a01b0316608052620000f65f3362000159565b50620001115f8051602062002d008339815191523362000159565b506200012c5f8051602062002d008339815191525f62000205565b620001385f8062000205565b60805162000152906001600160a01b0316825f196200024f565b5062000417565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16620001fc575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620001b33390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001ff565b505f5b92915050565b5f82815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152620002a990859083906200031a16565b6200031457604080516001600160a01b03851660248201525f6044808301919091528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152620003089186916200036616565b62000314848262000366565b50505050565b5f805f8060205f8651602088015f8a5af192503d91505f5190508280156200035c575081156200034e57806001146200035c565b5f866001600160a01b03163b115b9695505050505050565b5f8060205f8451602086015f885af18062000386576040513d5f823e3d81fd5b50505f513d915081156200039f578060011415620003ac565b6001600160a01b0384163b155b156200031457604051635274afe760e01b81526001600160a01b038516600482015260240160405180910390fd5b6001600160a01b0381168114620003ef575f80fd5b50565b5f6020828403121562000403575f80fd5b81516200041081620003da565b9392505050565b60805160a05161289d620004635f395f818161030201528181610fbe01528181611cba0152611de901525f818161056e015281816109d201528181610aa70152611881015261289d5ff3fe608060405234801561000f575f80fd5b50600436106101a1575f3560e01c806396c144f0116100f3578063cd2d26f711610093578063df0662361161006e578063df0662361461052f578063f5b541a614610542578063fa60530914610556578063fc0c546a14610569575f80fd5b8063cd2d26f7146104f6578063cf50c9e814610509578063d547741f1461051c575f80fd5b8063ac4ab4e9116100ce578063ac4ab4e9146104aa578063bc3fd278146104bd578063c38a8afd146104d0578063c8f016a6146104e3575f80fd5b806396c144f01461047d578063a217fddf14610490578063a920672714610497575f80fd5b806355ce14a31161015e5780637564912b116101395780637564912b1461033c57806391d14854146103fb5780639313fde31461040e578063955ff0391461046a575f80fd5b806355ce14a3146102835780635a7409bf146102ea5780636dd103e3146102fd575f80fd5b806301ffc9a7146101a5578063076e9f4b146101cd578063248a9ca3146101e25780632f2ff15d1461021257806330d9b0661461022557806336568abe14610270575b5f80fd5b6101b86101b33660046120fc565b610590565b60405190151581526020015b60405180910390f35b6101e06101db366004612145565b6105c6565b005b6102046101f036600461215e565b5f9081526020819052604090206001015490565b6040519081526020016101c4565b6101e0610220366004612175565b610629565b6102586102333660046121bc565b600560209081525f92835260408084209091529082529020546001600160801b031681565b6040516001600160801b0390911681526020016101c4565b6101e061027e366004612175565b610653565b6102c061029136600461215e565b60026020525f9081526040902080546001909101546001600160801b0380831692600160801b90048116911683565b604080516001600160801b03948516815292841660208401529216918101919091526060016101c4565b6101e06102f83660046121e6565b61068b565b6103247f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101c4565b6103e161034a36600461215e565b600160208190525f9182526040909120805491810154600282015460038301546004909301546001600160801b0380841694600160801b948590048216948483169481900483169382841693928290049092169163ffffffff808216926401000000008304821692600160401b8104831692600160601b82048116928204169060ff600160a01b8204811691600160a81b9004168e565b6040516101c49e9d9c9b9a99989796959493929190612267565b6101b8610409366004612175565b6106e8565b61045b61041c366004612175565b600360209081525f92835260408084209091529082529020546001600160801b03811690600160801b810463ffffffff1690600160a01b900460ff1683565b6040516101c493929190612323565b6101e061047836600461239c565b610710565b6101e061048b366004612175565b61084c565b6102045f81565b6101e06104a5366004612484565b610a54565b6101e06104b83660046124bd565b610a5f565b6101e06104cb36600461252a565b610b1a565b600454610258906001600160801b031681565b6101e06104f13660046125e5565b610be1565b6101e061050436600461265f565b610c62565b6101e06105173660046126a9565b610c85565b6101e061052a366004612175565b610ca6565b6101e061053d3660046121bc565b610cca565b6102045f8051602061284883398151915281565b6101e06105643660046125e5565b610ceb565b6103247f000000000000000000000000000000000000000000000000000000000000000081565b5f6001600160e01b03198216637965db0b60e01b14806105c057506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f805160206128488339815191526105dd81610d64565b816001600160801b03165f036106065760405163e4d9d20160e01b815260040160405180910390fd5b50600480546001600160801b0319166001600160801b0392909216919091179055565b5f8281526020819052604090206001015461064381610d64565b61064d8383610d71565b50505050565b6001600160a01b038116331461067c5760405163334bd91960e11b815260040160405180910390fd5b6106868282610e00565b505050565b5f805160206128488339815191526106a281610d64565b6106e18585856106b560208701876126de565b6106c560408801602089016126de565b8760025b6020020160208101906106dc91906126de565b610e69565b5050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f8051602061284883398151915261072781610d64565b5f5b88811015610840576108308a8a83818110610746576107466126ca565b9050602002013589898481811061075f5761075f6126ca565b90506020020160208101906107749190612145565b888885818110610786576107866126ca565b9050602002013587878681811061079f5761079f6126ca565b9050606002015f600381106107b6576107b66126ca565b6020020160208101906107c991906126de565b8888878181106107db576107db6126ca565b9050606002016001600381106107f3576107f36126ca565b60200201602081019061080691906126de565b898988818110610818576108186126ca565b9050606002016002600381106106c9576106c96126ca565b6108398161270b565b9050610729565b50505050505050505050565b5f82815260016020526040902060026004820154600160a01b900460ff16600281111561087b5761087b61222f565b1461089957604051630ff84df760e11b815260040160405180910390fd5b5f8381526003602090815260408083206001600160a01b03861684529091528120805490916001600160801b0390911690036108e857604051630c8d9eab60e31b815260040160405180910390fd5b805460048301546001600160801b03821691600160a81b90910460ff1690600160801b900463ffffffff1660038260038111156109275761092761222f565b14801561094557506004850154600160801b900463ffffffff166001145b6109b7578354600160a01b900460ff1660038111156109665761096661222f565b8260038111156109785761097861222f565b1461099657604051636d2594d560e11b815260040160405180910390fd5b6109a663ffffffff821684612723565b92506109b46103e88461274e565b92505b83546001600160801b0319168455610a026001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016876001600160801b03861661106b565b6040516001600160801b03841681526001600160a01b0387169088907f1f2d06d01415b8a782a89f82f6906b527eb15db59f998fd91a191fedd892960d9060200160405180910390a350505050505050565b6106868382846110ca565b60405163d505accf60e01b81523360048201523060248201526001600160801b03861660448201526064810185905260ff8416608482015260a4810183905260c481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d505accf9060e4015f604051808303815f87803b158015610af0575f80fd5b505af1158015610b02573d5f803e3d5ffd5b50505050610b118786886110ca565b50505050505050565b5f80516020612848833981519152610b3181610d64565b5f5b8881101561084057610bd18a8a83818110610b5057610b506126ca565b90506020020135898984818110610b6957610b696126ca565b9050602002016020810190610b7e91906126de565b888885818110610b9057610b906126ca565b9050602002016020810190610ba591906126de565b878786818110610bb757610bb76126ca565b9050602002016020810190610bcc91906126de565b611908565b610bda8161270b565b9050610b33565b5f80516020612848833981519152610bf881610d64565b5f5b84811015610c5a57610c4a868683818110610c1757610c176126ca565b90506020020135858584818110610c3057610c306126ca565b9050602002016020810190610c45919061277f565b611a20565b610c538161270b565b9050610bfa565b505050505050565b5f80516020612848833981519152610c7981610d64565b6106e185858585611908565b5f80516020612848833981519152610c9c81610d64565b6106868383611d5d565b5f82815260208190526040902060010154610cc081610d64565b61064d8383610e00565b5f80516020612848833981519152610ce181610d64565b6106868383611a20565b5f80516020612848833981519152610d0281610d64565b5f5b84811015610c5a57610d54868683818110610d2157610d216126ca565b90506020020135858584818110610d3a57610d3a6126ca565b9050602002016020810190610d4f9190612145565b611d5d565b610d5d8161270b565b9050610d04565b610d6e8133612015565b50565b5f610d7c83836106e8565b610df9575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610db13390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105c0565b505f6105c0565b5f610e0b83836106e8565b15610df9575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105c0565b42841015610e8a5760405163b5c8999360e01b815260040160405180910390fd5b5f868152600160205260408120906004820154600160a01b900460ff166002811115610eb857610eb861222f565b1480610ecc5750600481015463ffffffff16155b610ee957604051630313b28560e01b815260040160405180910390fd5b848155600480820180546001600160801b03898116600160801b81810282176001880181905560028801556003870180546001600160801b031916831781554263ffffffff90811674ff00000000000000000000000000000000ffffffff1990961695909517600160a01b1775ff0000000000ffffffffffffffff00000000000000001916600160401b8c87160263ffffffff60601b191617600160601b8b8716021763ffffffff60801b19169489168202949094179094558454909116909202909117905560405163d02ff67d60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169163d02ff67d91610ffb9130918b9101612798565b5f604051808303815f87803b158015611012575f80fd5b505af1158015611024573d5f803e3d5ffd5b5050604080518a81524260208201527f409f59bfaa3287d6f743c1b00d3146e8a92a51135c68951d4e96b3c598b431d993500190505b60405180910390a150505050505050565b6040516001600160a01b0383811660248301526044820183905261068691859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612057565b5f8381526001602081815260408084206002909252909220906004830154600160a01b900460ff1660028111156111035761110361222f565b1461112157604051635a90bb8d60e11b815260040160405180910390fd5b81544211156111425760405162b5f6bf60e41b815260040160405180910390fd5b60038201546001600160801b03600160801b9091048116908516101561117b57604051632ce1311560e01b815260040160405180910390fd5b5f8581526003602090815260408083203384529091529020546001600160801b0316156111bb576040516318ade6cb60e21b815260040160405180910390fd5b5f8360038111156111ce576111ce61222f565b036111ec576040516306fd144d60e11b815260040160405180910390fd5b60038360038111156112005761120061222f565b14801561121e57506004820154600160801b900463ffffffff166001145b1561123c576040516306fd144d60e11b815260040160405180910390fd5b5f8060018560038111156112525761125261222f565b0361128057505060048201546002830154600160401b90910463ffffffff16906001600160801b0316611307565b60028560038111156112945761129461222f565b036112c957505060048201546002830154600160601b90910463ffffffff1690600160801b90046001600160801b0316611307565b60038560038111156112dd576112dd61222f565b0361130757505060048201546003830154600160801b90910463ffffffff16906001600160801b03165b5f6103e861131b63ffffffff851689612723565b611325919061274e565b90505f61133288836127ba565b9050826001600160801b0316816001600160801b031611156113675760405163bb55fd2760e01b815260040160405180910390fd5b600187600381111561137b5761137b61222f565b036114a3576002860180548291905f9061139f9084906001600160801b03166127ba565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550878660020160108282829054906101000a90046001600160801b03166113e991906127e1565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555087866003015f8282829054906101000a90046001600160801b031661143291906127e1565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555081855f015f8282829054906101000a90046001600160801b031661147a91906127e1565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506116f0565b60028760038111156114b7576114b761222f565b036115b7576002860180548991905f906114db9084906001600160801b03166127e1565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550808660020160108282829054906101000a90046001600160801b031661152591906127ba565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555087866003015f8282829054906101000a90046001600160801b031661156e91906127e1565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555081855f0160108282829054906101000a90046001600160801b031661147a91906127e1565b60038760038111156115cb576115cb61222f565b036116f0576002860180548991905f906115ef9084906001600160801b03166127e1565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550878660020160108282829054906101000a90046001600160801b031661163991906127e1565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555080866003015f8282829054906101000a90046001600160801b031661168291906127ba565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555081856001015f8282829054906101000a90046001600160801b03166116cb91906127e1565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b878660010160108282829054906101000a90046001600160801b031661171691906127e1565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506040518060600160405280896001600160801b031681526020018563ffffffff1681526020018860038111156117725761177261222f565b90525f8a8152600360208181526040808420338552825292839020845181549286015163ffffffff16600160801b026001600160a01b03199093166001600160801b0390911617919091178082559284015190929091839160ff60a01b191690600160a01b9084908111156117e9576117e961222f565b021790555050505f89815260056020526040812089918960038111156118115761181161222f565b60038111156118225761182261222f565b815260208101919091526040015f908120805490919061184c9084906001600160801b03166127e1565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506118b933308a6001600160801b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166120c3909392919063ffffffff16565b336001600160a01b0316897fcb52fc46c17323139d9c5fbbd6bf19bc2b4bfab327bed1f928311286200b2045898b6040516118f5929190612801565b60405180910390a3505050505050505050565b5f848152600160208190526040909120906004820154600160a01b900460ff1660028111156119395761193961222f565b1461195757604051635a90bb8d60e11b815260040160405180910390fd5b80544211156119785760405162b5f6bf60e41b815260040160405180910390fd5b6004810180546fffffffffffffffff00000000000000001916600160401b63ffffffff87811691820263ffffffff60601b191692909217600160601b8784169081029190911763ffffffff60801b1916600160801b938716938402179093556040805191825260208201939093529182015285907fd5a3eae36d0a26c252873044e2b5e66f4cb0d4f478ec75a0f79059289c8fbb309060600160405180910390a25050505050565b5f828152600160208190526040909120906004820154600160a01b900460ff166002811115611a5157611a5161222f565b14611a6f57604051635a90bb8d60e11b815260040160405180910390fd5b5f826003811115611a8257611a8261222f565b03611aa05760405163c74a206d60e01b815260040160405180910390fd5b600481018054600160a11b60ff60a01b1982168117835584929161ffff60a01b191617600160a81b836003811115611ada57611ada61222f565b021790555060048101805463ffffffff429081166401000000000267ffffffff0000000019909216919091179091556040517fe5dda3818f41398d2c2ca564d5a078025978ea44fca2d3f7b7b89a4087b63e2a91611b3b9186918691612825565b60405180910390a160018101546001600160801b03165f03611b5c57505050565b5f8381526002602052604081206001838101549192600160801b9092046001600160801b03169190856003811115611b9657611b9661222f565b14611bde576002856003811115611baf57611baf61222f565b14611bc75760018301546001600160801b0316611bea565b8254600160801b90046001600160801b0316611bea565b82546001600160801b03165b90506003856003811115611c0057611c0061222f565b148015611c1e57506004840154600160801b900463ffffffff166001145b15611c68575f868152600560209081526040808320600284529091528082205460018352912054611c5b916001600160801b0390811691166127e1565b611c6590826127e1565b90505b5f611c7382846127ba565b9050806001600160801b03165f03611c8e5750505050505050565b6001850180546001600160801b03191690556040516001620d1a5f60e31b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff972d0890611cf19030908590600401612798565b5f604051808303815f87803b158015611d08575f80fd5b505af1158015611d1a573d5f803e3d5ffd5b5050604080518a81526001600160801b03851660208201527f42da174f43234dbd137532cf29e344c75fc3235b736b66ef8d88d5c89a91e7aa935001905061105a565b60015f83815260016020526040902060040154600160a01b900460ff166002811115611d8b57611d8b61222f565b14611da957604051635a90bb8d60e11b815260040160405180910390fd5b806001600160801b03165f03611dd257604051635e85ae7360e01b815260040160405180910390fd5b60405163d02ff67d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d02ff67d90611e209030908590600401612798565b5f604051808303815f87803b158015611e37575f80fd5b505af1158015611e49573d5f803e3d5ffd5b5050505f8381526001602081905260408220908101805491935084929091611e7b9084906001600160801b03166127e1565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555081816002015f8282829054906101000a90046001600160801b0316611ec491906127e1565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550818160020160108282829054906101000a90046001600160801b0316611f0e91906127e1565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555081816003015f8282829054906101000a90046001600160801b0316611f5791906127e1565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550818160010160108282829054906101000a90046001600160801b0316611fa191906127e1565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507f98b524bbd197fd6d13702542bdb0c92aafd44967ebd1d5a78cab83f0d106241483836040516120089291909182526001600160801b0316602082015260400190565b60405180910390a1505050565b61201f82826106e8565b6120535760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044015b60405180910390fd5b5050565b5f8060205f8451602086015f885af180612076576040513d5f823e3d81fd5b50505f513d9150811561208d57806001141561209a565b6001600160a01b0384163b155b1561064d57604051635274afe760e01b81526001600160a01b038516600482015260240161204a565b6040516001600160a01b03848116602483015283811660448301526064820183905261064d9186918216906323b872dd90608401611098565b5f6020828403121561210c575f80fd5b81356001600160e01b031981168114612123575f80fd5b9392505050565b80356001600160801b0381168114612140575f80fd5b919050565b5f60208284031215612155575f80fd5b6121238261212a565b5f6020828403121561216e575f80fd5b5035919050565b5f8060408385031215612186575f80fd5b8235915060208301356001600160a01b03811681146121a3575f80fd5b809150509250929050565b803560048110612140575f80fd5b5f80604083850312156121cd575f80fd5b823591506121dd602084016121ae565b90509250929050565b5f805f8060c085870312156121f9575f80fd5b843593506122096020860161212a565b9250604085013591508560c086011115612221575f80fd5b509194909350909160600190565b634e487b7160e01b5f52602160045260245ffd5b600381106122535761225361222f565b9052565b600481106122535761225361222f565b8e81526001600160801b038e811660208301528d811660408301528c811660608301528b1660808201526101c081016001600160801b038b1660a08301526001600160801b038a1660c083015263ffffffff891660e083015263ffffffff881661010083015263ffffffff871661012083015263ffffffff861661014083015263ffffffff8516610160830152612302610180830185612243565b6123106101a0830184612257565b9f9e505050505050505050505050505050565b6001600160801b038416815263ffffffff831660208201526060810161234c6040830184612257565b949350505050565b5f8083601f840112612364575f80fd5b50813567ffffffffffffffff81111561237b575f80fd5b6020830191508360208260051b8501011115612395575f80fd5b9250929050565b5f805f805f805f806080898b0312156123b3575f80fd5b883567ffffffffffffffff808211156123ca575f80fd5b6123d68c838d01612354565b909a50985060208b01359150808211156123ee575f80fd5b6123fa8c838d01612354565b909850965060408b0135915080821115612412575f80fd5b61241e8c838d01612354565b909650945060608b0135915080821115612436575f80fd5b818b0191508b601f830112612449575f80fd5b813581811115612457575f80fd5b8c602060608302850101111561246b575f80fd5b6020830194508093505050509295985092959890939650565b5f805f60608486031215612496575f80fd5b833592506124a6602085016121ae565b91506124b46040850161212a565b90509250925092565b5f805f805f805f60e0888a0312156124d3575f80fd5b873596506124e3602089016121ae565b95506124f16040890161212a565b945060608801359350608088013560ff8116811461250d575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f805f805f805f806080898b031215612541575f80fd5b883567ffffffffffffffff80821115612558575f80fd5b6125648c838d01612354565b909a50985060208b013591508082111561257c575f80fd5b6125888c838d01612354565b909850965060408b01359150808211156125a0575f80fd5b6125ac8c838d01612354565b909650945060608b01359150808211156125c4575f80fd5b506125d18b828c01612354565b999c989b5096995094979396929594505050565b5f805f80604085870312156125f8575f80fd5b843567ffffffffffffffff8082111561260f575f80fd5b61261b88838901612354565b90965094506020870135915080821115612633575f80fd5b5061264087828801612354565b95989497509550505050565b803563ffffffff81168114612140575f80fd5b5f805f8060808587031215612672575f80fd5b843593506126826020860161264c565b92506126906040860161264c565b915061269e6060860161264c565b905092959194509250565b5f80604083850312156126ba575f80fd5b823591506121dd6020840161212a565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156126ee575f80fd5b6121238261264c565b634e487b7160e01b5f52601160045260245ffd5b5f6001820161271c5761271c6126f7565b5060010190565b6001600160801b03818116838216028082169190828114612746576127466126f7565b505092915050565b5f6001600160801b038084168061277357634e487b7160e01b5f52601260045260245ffd5b92169190910492915050565b5f6020828403121561278f575f80fd5b612123826121ae565b6001600160a01b039290921682526001600160801b0316602082015260400190565b6001600160801b038281168282160390808211156127da576127da6126f7565b5092915050565b6001600160801b038181168382160190808211156127da576127da6126f7565b6040810161280f8285612257565b6001600160801b03831660208301529392505050565b838152606081016128396020830185612257565b82604083015294935050505056fe97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929a26469706673582212201234f2414905f2715068a25bdec015b3b77328479ee5c47c35a2bde5258ff83864736f6c6343000814003397667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92900000000000000000000000086b00aff3c1026c761d94d67d15fbb5838a3350b