123 txs
256 calls
constructor
constructor(address _link, address _oracle, address _sportsAMM, bytes32 _jobSpecId, uint256 _paymentAmount)
functions
counterToRequestId
viewfunction counterToRequestId(uint256) view returns (bytes32)
freeBetsHolder
viewfunction freeBetsHolder() view returns (address)
jobSpecId
viewfunction jobSpecId() view returns (bytes32)
maxAllowedExecutionDelay
viewfunction maxAllowedExecutionDelay() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
paymentAmount
viewfunction paymentAmount() view returns (uint256)
requestCounter
viewfunction requestCounter() view returns (uint256)
requestIdFulfilled
viewfunction requestIdFulfilled(bytes32) view returns (bool)
requestIdToFulfillAllowed
viewfunction requestIdToFulfillAllowed(bytes32) view returns (bool)
requestIdToRequester
viewfunction requestIdToRequester(bytes32) view returns (address)
requestIdToTradeData
viewfunction requestIdToTradeData(bytes32) view returns (uint256 _buyInAmount, uint256 _expectedQuote, uint256 _additionalSlippage, address _referrer, address _collateral)
sportsAMM
viewfunction sportsAMM() view returns (address)
timestampPerRequest
viewfunction timestampPerRequest(bytes32) view returns (uint256)
fulfillSGPTrade
nonpayablefunction fulfillSGPTrade(bytes32 _requestId, bool _allow, uint256 _approvedQuote)
renounceOwnership
nonpayablefunction renounceOwnership()
requestSGPTrade
nonpayablefunction requestSGPTrade(tuple _sgpTradeData) returns (bytes32 requestId)
setConfiguration
nonpayablefunction setConfiguration(address _link, address _oracle, address _sportsAMM, bytes32 _jobSpecId, uint256 _paymentAmount)
setFreeBetsHolder
nonpayablefunction setFreeBetsHolder(address _freeBetsHolder)
setMaxAllowedExecutionDelay
nonpayablefunction setMaxAllowedExecutionDelay(uint256 _maxAllowedExecutionDelay)
setPaused
nonpayablefunction setPaused(bool _setPausing)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawCollateral
nonpayablefunction withdrawCollateral(address collateral, address recipient)
events
ChainlinkCancelled
event ChainlinkCancelled(bytes32 indexed id)
ChainlinkFulfilled
event ChainlinkFulfilled(bytes32 indexed id)
ChainlinkRequested
event ChainlinkRequested(bytes32 indexed id)
ContextReset
event ContextReset(address _link, address _oracle, address _sportsAMM, bytes32 _jobSpecId, uint256 _paymentAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
SetFreeBetsHolder
event SetFreeBetsHolder(address _freeBetsHolder)
SetMaxAllowedExecutionDelay
event SetMaxAllowedExecutionDelay(uint256 _maxAllowedExecutionDelay)
SGPTradeFulfilled
event SGPTradeFulfilled(address requester, bytes32 requestId, bool _allow, ((bytes32 gameId, uint16 sportId, uint16 typeId, uint256 maturity, uint8 status, int24 line, uint24 playerId, uint256[] odds, bytes32[] merkleProof, uint8 position, (uint16 typeId, uint8 position, int24 line)[][] combinedPositions)[] _tradeData, uint256 _buyInAmount, uint256 _expectedQuote, uint256 _additionalSlippage, address _referrer, address _collateral) sgpTradeData, uint256 _approvedQuote, uint256 timestamp)
SGPTradeRequested
event SGPTradeRequested(address requester, uint256 requestCounter, bytes32 requestId, ((bytes32 gameId, uint16 sportId, uint16 typeId, uint256 maturity, uint8 status, int24 line, uint24 playerId, uint256[] odds, bytes32[] merkleProof, uint8 position, (uint16 typeId, uint8 position, int24 line)[][] combinedPositions)[] _tradeData, uint256 _buyInAmount, uint256 _expectedQuote, uint256 _additionalSlippage, address _referrer, address _collateral) sgpTradeData)
Unpaused
event Unpaused(address account)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
FailedInnerCall
error FailedInnerCall()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60806040526001600455603c600b553480156200001b57600080fd5b5060405162003d8e38038062003d8e8339810160408190526200003e9162000153565b33806200006557604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200007081620000e4565b506006805460ff60a01b19169055600280546001600160a01b0319166001600160a01b038716179055600380546001600160a01b0319166001600160a01b038616179055600780546001600160a01b0319166001600160a01b039490941693909317909255600955600a5550620001b09050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200014e57600080fd5b919050565b600080600080600060a086880312156200016c57600080fd5b620001778662000136565b9450620001876020870162000136565b9350620001976040870162000136565b6060870151608090970151959894975095949392505050565b613bce80620001c06000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063c79901f31161007c578063c79901f3146102ec578063c9925288146102ff578063ce18a83714610312578063d395c50814610325578063e27a9abc14610338578063f2fde38b146103b857600080fd5b80638da5cb5b1461027357806390421b7c14610284578063973a814e146102a45780639a995047146102ad578063c35905c6146102c0578063c6a85f6e146102c957600080fd5b8063679c4de111610115578063679c4de1146101f2578063715018a61461020557806371b00be81461020d5780637ff39d2914610216578063805661b01461025757806383223eb51461026a57600080fd5b806301432bf21461015257806316c38b3c1461018a5780631bfa85241461019f5780635c975abb146101c0578063653318f8146101d2575b600080fd5b6101756101603660046124ac565b600f6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61019d6101983660046124d3565b6103cb565b005b6101b26101ad3660046124f0565b6103eb565b604051908152602001610181565b600654600160a01b900460ff16610175565b6101b26101e03660046124ac565b60106020526000908152604090205481565b61019d61020036600461254f565b610863565b61019d6108ee565b6101b260095481565b61023f6102243660046124ac565b600d602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610181565b61019d610265366004612588565b610902565b6101b2600b5481565b6006546001600160a01b031661023f565b6101b26102923660046124ac565b60126020526000908152604090205481565b6101b260115481565b61019d6102bb3660046124ac565b61095f565b6101b2600a5481565b6101756102d73660046124ac565b600e6020526000908152604090205460ff1681565b61019d6102fa3660046125a5565b61099c565b60075461023f906001600160a01b031681565b60085461023f906001600160a01b031681565b61019d610333366004612600565b610a59565b6103846103463660046124ac565b600c60205260009081526040902060018101546002820154600383015460048401546005909401549293919290916001600160a01b03908116911685565b604080519586526020860194909452928401919091526001600160a01b03908116606084015216608082015260a001610181565b61019d6103c6366004612588565b6110a5565b6103d36110e0565b806103e3576103e061110d565b50565b6103e0611162565b60006103f56111a5565b60016104018380612638565b9050116104605760405162461bcd60e51b815260206004820152602260248201527f534750206e6f7420706f737369626c6520666f7220612073696e676c652067616044820152616d6560f01b60648201526084015b60405180910390fd5b61047261046d8380612638565b6111d0565b600080808080808061048c6104878a80612638565b6113c6565b9650965096509650965096509650600760009054906101000a90046001600160a01b03166001600160a01b031663478426636040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105119190612688565b6040516301aa3c6960e11b815261ffff831660048201526001600160a01b03919091169063035478d290602401602060405180830381865afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f91906126a5565b6105d75760405162461bcd60e51b815260206004820152602360248201527f5347502074726164696e67206e6f7420656e61626c6564206f6e205f73706f726044820152621d125960ea1b6064820152608401610457565b60006105ed6009543063d395c50860e01b611785565b60408051808201909152600881526773706f727449647360c01b602082015290915061061b9082908a6117ac565b60408051808201909152600781526667616d6549647360c81b6020820152610645908290896117ac565b6040805180820190915260078152667479706549647360c81b602082015261066f908290886117ac565b604080518082019091526009815268706c6179657249647360b81b602082015261069b908290876117ac565b604080518082019091526009815268706f736974696f6e7360b81b60208201526106c7908290856117ac565b6040805180820190915260058152646c696e657360d81b60208201526106ef908290866117ac565b61072b6040518060400160405280600b81526020016a189d5e525b905b5bdd5b9d60aa1b8152508b60200135836118299092919063ffffffff16565b604080518082018252600d81526c657870656374656451756f746560981b602082015261075d918391908d0135611829565b6040805180820190915260128152716164646974696f6e616c536c69707061676560701b602082015261079690829060608d0135611829565b6107a281600a54611847565b6000818152601060209081526040808320429055600c90915290209099508a906107cc8282612bb6565b50506000898152600d6020908152604080832080546001600160a01b031916339081179091556011805485526012909352928190208c9055905490517fb9322e7b107a6e3b264aae40c7cd06c5f5f3832a372cbca5083e559ecb72df35926108399290918d908f90612ec9565b60405180910390a160118054906000610851836130b7565b91905055505050505050505050919050565b61086b6110e0565b6040516370a0823160e01b81523060048201526108ea9082906001600160a01b038516906370a0823190602401602060405180830381865afa1580156108b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d991906130d0565b6001600160a01b038516919061186a565b5050565b6108f66110e0565b61090060006118bc565b565b61090a6110e0565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527fc238ff72ce9e31f22c0ef8bf1c701fcc6afd3ed4edc2224a63f16346b68420fb906020015b60405180910390a150565b6109676110e0565b600b8190556040518181527fa1d20d22955d911c8b338eeec58c0fa61197b85b255251efe74df475baa5c73890602001610954565b6109a46110e0565b600280546001600160a01b0319166001600160a01b038716179055600380546001600160a01b0319166001600160a01b038616179055600780546001600160a01b0319166001600160a01b038581169182179092556009849055600a839055604080518884168152928716602084015282015260608101839052608081018290527f4bba2924c9f8b1d7003061aed0e3737c74fddf1b79cd48799498f21058f40ef89060a00160405180910390a15050505050565b610a616111a5565b60008381526005602052604090205483906001600160a01b03163314610ada5760405162461bcd60e51b815260206004820152602860248201527f536f75726365206d75737420626520746865206f7261636c65206f6620746865604482015267081c995c5d595cdd60c21b6064820152608401610457565b60008181526005602052604080822080546001600160a01b03191690555182917f7cc135e0cebb02c3480ae5d74d377283180a2601f8f644edf7987b009316c63a91a26000848152600f602052604090205460ff1615610b7c5760405162461bcd60e51b815260206004820152601c60248201527f5265717565737420494420616c72656164792066756c66696c6c6564000000006044820152606401610457565b600b546000858152601060205260409020544291610b99916130e9565b11610bda5760405162461bcd60e51b815260206004820152601160248201527014995c5d595cdd081d1a5b5959081bdd5d607a1b6044820152606401610457565b6000848152600c602090815260408083208151815460e09481028201850190935260c08101838152909391928492849190879085015b82821015610e1a57600084815260209081902060408051610160810182526008860290920180548352600181015461ffff808216858701526201000090910416838301526002808201546060850152600382015460ff81166080860152610100810490910b60a0850152640100000000900462ffffff1660c08401526004810180548351818702810187019094528084529394919360e086019392830182828015610cda57602002820191906000526020600020905b815481526020019060010190808311610cc6575b5050505050815260200160058201805480602002602001604051908101604052809291908181526020018280548015610d3257602002820191906000526020600020905b815481526020019060010190808311610d1e575b5050509183525050600682015460ff16602080830191909152600783018054604080518285028101850182528281529401939260009084015b82821015610e0357838290600052602060002001805480602002602001604051908101604052809291908181526020016000905b82821015610df0576000848152602090819020604080516060810182529185015461ffff8116835260ff62010000820416838501526301000000900460020b90820152825260019092019101610d9f565b5050505081526020019060010190610d6b565b505050508152505081526020019060010190610c10565b5050509082525060018201546020808301919091526002830154604080840191909152600384015460608085019190915260048501546001600160a01b039081166080860152600590950154851660a09094019390935260008a8152600d909252902054908301519293501690610e9990670de0b6b3a76400006130e9565b6040830151610eb086670de0b6b3a764000061270f565b610eba9190613112565b1115610efc5760405162461bcd60e51b81526020600482015260116024820152700a6d8d2e0e0c2ceca40e8dede40d0d2ced607b1b6044820152606401610457565b841561102a5760075482516020840151608085015160a0860151604051630539ea6d60e31b81526000956001600160a01b0316946329cf536894610f4c94919390928c928a9290916004016132f9565b6020604051808303816000875af1158015610f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8f9190612688565b6008549091506001600160a01b039081169083160361102857600854602084015160a0850151604051637eda2d7b60e01b8152600481018b90526001600160a01b03858116602483015260448201939093529082166064820152911690637eda2d7b90608401600060405180830381600087803b15801561100f57600080fd5b505af1158015611023573d6000803e3d6000fd5b505050505b505b6000868152600e60209081526040808320805489151560ff1991821617909155600f9092529182902080549091166001179055517f9ac10703b3e9d090d5cd8013abd92abe8a6d2033c0a9672a6ee37264075da6eb906110959083908990899087908a904290613341565b60405180910390a1505050505050565b6110ad6110e0565b6001600160a01b0381166110d757604051631e4fbdf760e01b815260006004820152602401610457565b6103e0816118bc565b6006546001600160a01b031633146109005760405163118cdaa760e01b8152336004820152602401610457565b61111561190e565b6006805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61116a6111a5565b6006805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111453390565b600654600160a01b900460ff16156109005760405163d93c066560e01b815260040160405180910390fd5b806000816001600160401b038111156111eb576111eb6126e3565b604051908082528060200260200182016040528015611214578160200160208202803683370190505b50905060005b8281101561127757848482818110611234576112346133d2565b905060200281019061124691906126c2565b6000013582828151811061125c5761125c6133d2565b6020908102919091010152611270816130b7565b905061121a565b50600760009054906101000a90046001600160a01b03166001600160a01b031663478426636040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ef9190612688565b600754604051633f51f97b60e21b81526001600160a01b039283169263c5d89be892889288929091169063fd47e5ec9061132d9088906004016133e8565b600060405180830381865afa15801561134a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113729190810190613499565b6040518463ffffffff1660e01b81526004016113909392919061352e565b60006040518083038186803b1580156113a857600080fd5b505afa1580156113bc573d6000803e3d6000fd5b5050505050505050565b60608080808080600087806001600160401b038111156113e8576113e86126e3565b60405190808252806020026020018201604052801561141b57816020015b60608152602001906001900390816114065790505b509750806001600160401b03811115611436576114366126e3565b60405190808252806020026020018201604052801561146957816020015b60608152602001906001900390816114545790505b509650806001600160401b03811115611484576114846126e3565b6040519080825280602002602001820160405280156114b757816020015b60608152602001906001900390816114a25790505b509550806001600160401b038111156114d2576114d26126e3565b60405190808252806020026020018201604052801561150557816020015b60608152602001906001900390816114f05790505b509450806001600160401b03811115611520576115206126e3565b60405190808252806020026020018201604052801561155357816020015b606081526020019060019003908161153e5790505b509350806001600160401b0381111561156e5761156e6126e3565b6040519080825280602002602001820160405280156115a157816020015b606081526020019060019003908161158c5790505b5092506000805b828110156117765760008c8c838181106115c4576115c46133d2565b90506020028101906115d691906126c2565b6115df90613823565b90506115f2816020015161ffff16611938565b8b8381518110611604576116046133d2565b602002602001018190525061161c81600001516119cb565b8a838151811061162e5761162e6133d2565b602002602001018190525061164a816040015161ffff16611938565b89838151811061165c5761165c6133d2565b60200260200101819052506116798160c0015162ffffff16611938565b88838151811061168b5761168b6133d2565b60200260200101819052506116a68160a0015160020b611acd565b8783815181106116b8576116b86133d2565b60200260200101819052506116d481610120015160ff16611938565b8683815181106116e6576116e66133d2565b60200260200101819052508160000361170a57602081015181519095509250611765565b805183146117655760405162461bcd60e51b815260206004820152602260248201527f534750206f6e6c7920706f737369626c65206f6e207468652073616d652067616044820152616d6560f01b6064820152608401610457565b5061176f816130b7565b90506115a8565b50505092959891949750929550565b61178d612471565b611795612471565b6117a181868686611b3f565b9150505b9392505050565b60808301516117bb9083611b85565b6117c88360800151611b9c565b60005b8151811015611816576118048282815181106117e9576117e96133d2565b60200260200101518560800151611b8590919063ffffffff16565b8061180e816130b7565b9150506117cb565b506118248360800151611ba7565b505050565b60808301516118389083611b85565b60808301516118249082611bb2565b600354600090611861906001600160a01b03168484611bd7565b90505b92915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611824908490611c6a565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600654600160a01b900460ff1661090057604051638dfc202b60e01b815260040160405180910390fd5b6060600061194583611ccd565b60010190506000816001600160401b03811115611964576119646126e3565b6040519080825280601f01601f19166020018201604052801561198e576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611998575b509392505050565b606060005b60208160ff16108015611a045750828160ff16602081106119f3576119f36133d2565b1a60f81b6001600160f81b03191615155b15611a1b5780611a1381613939565b9150506119d0565b60008160ff166001600160401b03811115611a3857611a386126e3565b6040519080825280601f01601f191660200182016040528015611a62576020820181803683370190505b50905060005b8260ff168160ff1610156119c357848160ff1660208110611a8b57611a8b6133d2565b1a60f81b828260ff1681518110611aa457611aa46133d2565b60200101906001600160f81b031916908160001a90535080611ac581613939565b915050611a68565b606060008212611aec5760405180602001604052806000815250611b07565b604051806040016040528060018152602001602d60f81b8152505b611b18611b1384611da5565b611938565b604051602001611b2992919061397c565b6040516020818303038152906040529050919050565b611b47612471565b611b578560800151610100611dbc565b50508284526001600160a01b03821660208501526001600160e01b031981166040850152835b949350505050565b611b928260038351611e21565b6118248282611f2e565b6103e0816004611f55565b6103e0816007611f55565b6001600160401b03811115611bcb576108ea8282611f6a565b6108ea82600083611e21565b600454600090611be88160016130e9565b600455835160408086015160808701515191516000936320214ca360e11b93611c209386938493923092918a916001916024016139d7565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050611c6086838684611fa1565b9695505050505050565b6000611c7f6001600160a01b038416836120ff565b90508051600014158015611ca4575080806020019051810190611ca291906126a5565b155b1561182457604051635274afe760e01b81526001600160a01b0384166004820152602401610457565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611d0c5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611d38576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611d5657662386f26fc10000830492506010015b6305f5e1008310611d6e576305f5e100830492506008015b6127108310611d8257612710830492506004015b60648310611d94576064830492506002015b600a83106118645760010192915050565b600080821215611db85781600003611864565b5090565b604080518082019091526060815260006020820152611ddc602083613a3f565b15611e0457611dec602083613a3f565b611df7906020613a53565b611e0190836130e9565b91505b506020828101829052604080518085526000815290920101905290565b6017816001600160401b031611611e4b57611e458360e0600585901b16831761210d565b50505050565b60ff816001600160401b031611611e8757611e71836018611fe0600586901b161761210d565b50611e45836001600160401b0383166001612132565b61ffff816001600160401b031611611ec457611eae836019611fe0600586901b161761210d565b50611e45836001600160401b0383166002612132565b63ffffffff816001600160401b031611611f0357611eed83601a611fe0600586901b161761210d565b50611e45836001600160401b0383166004612132565b611f1883601b611fe0600586901b161761210d565b50611e45836001600160401b0383166008612132565b60408051808201909152606081526000602082015261186183846000015151848551612158565b61182482601f611fe0600585901b161761210d565b611f758260c261210d565b506108ea8282604051602001611f8d91815260200190565b604051602081830303815290604052612242565b6040516bffffffffffffffffffffffff193060601b1660208201526034810184905260009060540160408051808303601f1901815282825280516020918201206000818152600590925291812080546001600160a01b0319166001600160a01b038a1617905590925082917fb5e6e01e79f91267dc17b4e6314d5d4d03593d2ceee0fbb452b750bd70ea5af99190a2600254604051630200057560e51b81526001600160a01b0390911690634000aea09061206490889087908790600401613a66565b6020604051808303816000875af1158015612083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a791906126a5565b611b7d5760405162461bcd60e51b815260206004820152602360248201527f756e61626c6520746f207472616e73666572416e6443616c6c20746f206f7261604482015262636c6560e81b6064820152608401610457565b60606118618383600061224f565b60408051808201909152606081526000602082015261186183846000015151846122e2565b604080518082019091526060815260006020820152611b7d84856000015151858561233d565b604080518082019091526060815260006020820152825182111561217b57600080fd5b602085015161218a83866130e9565b11156121bd576121bd856121ad876020015187866121a891906130e9565b6123be565b6121b890600261270f565b6123d5565b6000808651805187602083010193508088870111156121dc5787860182525b505050602084015b6020841061221c57805182526121fb6020836130e9565b91506122086020826130e9565b9050612215602085613a53565b93506121e4565b51815160001960208690036101000a019081169019919091161790525083949350505050565b611b928260028351611e21565b6060814710156122745760405163cd78605960e01b8152306004820152602401610457565b600080856001600160a01b031684866040516122909190613a96565b60006040518083038185875af1925050503d80600081146122cd576040519150601f19603f3d011682016040523d82523d6000602084013e6122d2565b606091505b5091509150611c608683836123ec565b604080518082019091526060815260006020820152836020015183106123175761231784856020015160026121b8919061270f565b8351805160208583010184815350808503612333576001810182525b5093949350505050565b604080518082019091526060815260006020820152602085015161236185846130e9565b111561237557612375856121ad86856130e9565b6000600161238584610100613b8c565b61238f9190613a53565b90508551838682010185831982511617815250805184870111156123b35783860181525b509495945050505050565b6000818311156123cf575081611864565b50919050565b81516123e18383611dbc565b50611e458382611f2e565b606082612401576123fc82612448565b6117a5565b815115801561241857506001600160a01b0384163b155b1561244157604051639996b31560e01b81526001600160a01b0385166004820152602401610457565b50806117a5565b8051156124585780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040805160a0810182526000808252602080830182905282840182905260608084018390528451808601909552845283015290608082015290565b6000602082840312156124be57600080fd5b5035919050565b80151581146103e057600080fd5b6000602082840312156124e557600080fd5b81356117a5816124c5565b60006020828403121561250257600080fd5b81356001600160401b0381111561251857600080fd5b820160c081850312156117a557600080fd5b6001600160a01b03811681146103e057600080fd5b803561254a8161252a565b919050565b6000806040838503121561256257600080fd5b823561256d8161252a565b9150602083013561257d8161252a565b809150509250929050565b60006020828403121561259a57600080fd5b81356117a58161252a565b600080600080600060a086880312156125bd57600080fd5b85356125c88161252a565b945060208601356125d88161252a565b935060408601356125e88161252a565b94979396509394606081013594506080013592915050565b60008060006060848603121561261557600080fd5b833592506020840135612627816124c5565b929592945050506040919091013590565b6000808335601e1984360301811261264f57600080fd5b8301803591506001600160401b0382111561266957600080fd5b6020019150600581901b360382131561268157600080fd5b9250929050565b60006020828403121561269a57600080fd5b81516117a58161252a565b6000602082840312156126b757600080fd5b81516117a5816124c5565b6000823561015e198336030181126126d957600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611864576118646126f9565b80546000808355811561182457828152602081208281015b808210156127545782825560018201915061273e565b5050505050565b80546000825580156108ea578160005260206000208181015b80821015611e455761278582612726565b600182019150612774565b61ffff811681146103e057600080fd5b6000813561186481612790565b60ff811681146103e057600080fd5b60008135611864816127ad565b8060020b81146103e057600080fd5b60008135611864816127c9565b62ffffff811681146103e057600080fd5b60008135611864816127e5565b6001600160401b0383111561281a5761281a6126e3565b600160401b83111561282e5761282e6126e3565b805483825580841015612865576000828152602081208581019083015b808210156128615782825560018201915061284b565b5050505b50818160005260208060002060005b8681101561288e5783358282015592820192600101612874565b50505050505050565b600160401b8311156128ab576128ab6126e3565b8054838255808410156128e2576000828152602081208581019083015b808210156128de578282556001820191506128c8565b5050505b50818160005260208060002060005b8681101561288e57833561290481612790565b825461ffff191661ffff82161783555082840135612921816127ad565b82546040860135612931816127c9565b8060181b65ffffff0000001662ff00008460101b1665ffffffff0000198416171785555050506060840193506001820191506001810190506128f1565b600160401b831115612982576129826126e3565b8054838255808410156129be576000828152602090208481019082015b808210156129bb576129b082612726565b60018201915061299f565b50505b508160008281526020808220825b878110156113bc578435601e198836030181126129e7578485fd5b870180356001600160401b038111156129fe578586fd5b90840190606081023603821315612a13578586fd5b612a1e818386612897565b505093820193600191820191016129cc565b8135815560018101612a5a612a47602085016127a0565b825461ffff191661ffff91909116178255565b612a83612a69604085016127a0565b825463ffff0000191660109190911b63ffff000016178255565b506060820135600282015560038101612ab2612aa1608085016127bc565b825460ff191660ff91909116178255565b612add612ac160a085016127d8565b825460089190911b63ffffff001663ffffff0019909116178255565b612b0c612aec60c085016127f6565b825466ffffff00000000191660209190911b66ffffff0000000016178255565b50612b1a60e0830183612638565b612b28818360048601612803565b5050612b38610100830183612638565b612b46818360058601612803565b5050612b6d612b5861012084016127bc565b6006830160ff821660ff198254161781555050565b612b7b610140830183612638565b611e4581836007860161296e565b600081356118648161252a565b80546001600160a01b0319166001600160a01b0392909216919091179055565b612bc08283612638565b600160401b811115612bd457612bd46126e3565b825481845580821015612c785760036001600160fd1b038281168314612bfc57612bfc6126f9565b8084168414612c0d57612c0d6126f9565b5060008581526020812084831b81019084841b015b80821015612c73578282558260018301558260028301558284830155612c4a60048301612726565b612c5660058301612726565b826006830155612c686007830161275b565b600882019150612c22565b505050505b5060008381526020812083915b83811015612cb657612ca0612c9a84876126c2565b83612a30565b6020929092019160089190910190600101612c85565b5050505050602082013560018201556040820135600282015560608201356003820155612cf1612ce860808401612b89565b60048301612b96565b6108ea612d0060a08401612b89565b60058301612b96565b6000808335601e19843603018112612d2057600080fd5b83016020810192503590506001600160401b03811115612d3f57600080fd5b8060051b360382131561268157600080fd5b803561254a81612790565b803561254a816127ad565b803561254a816127c9565b803561254a816127e5565b81835260006001600160fb1b03831115612d9657600080fd5b8260051b80836020870137939093016020019392505050565b8183526000602080850194508260005b858110156123b3578135612dd281612790565b61ffff16875281830135612de5816127ad565b60ff1687840152604082810135612dfb816127c9565b60020b908801526060968701969190910190600101612dbf565b81835260006020808501808196508560051b810191508460005b87811015612e9c5782840389528135601e19883603018112612e5057600080fd5b870185810190356001600160401b03811115612e6b57600080fd5b606081023603821315612e7d57600080fd5b612e88868284612daf565b9a87019a9550505090840190600101612e2f565b5091979650505050505050565b6000823561015e19833603018112612ec057600080fd5b90910192915050565b6000608060018060a01b0387168352602086818501526040868186015260608381870152610140808701612efd898a612d09565b60c08a89018190529281905261016092838b01600583901b8c0185018460005b8581101561304a578e830361015f19018452612f398288612ea9565b80358452612f488d8201612d51565b61ffff168d850152612f5b818d01612d51565b61ffff168c850152808b01358b850152612f768e8201612d5c565b612f848f86018260ff169052565b5060a0612f92818301612d67565b612fa08287018260020b9052565b5050612fad868201612d72565b62ffffff168685015260e0612fc482820183612d09565b8b83880152612fd68c88018284612d7d565b92505050610100612fe981840184612d09565b87840383890152612ffb848284612d7d565b935050505061012061300e818401612d5c565b60ff1690860152613021828c0183612d09565b92508582038c870152613035828483612e15565b968f019695505050918c019150600101612f1d565b5050898e013560a08e0152888e0135838e0152878e013560e08e01526130718b8f0161253f565b6001600160a01b0381166101008f01529a5061308f60a08f0161253f565b6001600160a01b03166101209d909d019c909c5250999e9d5050505050505050505050505050565b6000600182016130c9576130c96126f9565b5060010190565b6000602082840312156130e257600080fd5b5051919050565b80820180821115611864576118646126f9565b634e487b7160e01b600052601260045260246000fd5b600082613121576131216130fc565b500490565b600081518084526020808501945080840160005b838110156123b35781518752958201959082019060010161313a565b600081518084526020808501808196508360051b810191508286016000805b868110156131e4578385038a52825180518087529087019087870190845b818110156131cf578351805161ffff1684528a81015160ff168b85015260409081015160020b9084015292890192606090920191600101613193565b50509a87019a95505091850191600101613175565b509298975050505050505050565b600081518084526020808501808196508360051b8101915082860160005b85811015612e9c578284038952815161016081518652868201516132398888018261ffff169052565b5060408281015161ffff16908701526060808301519087015260808083015160ff169087015260a08083015160020b9087015260c08083015162ffffff169087015260e08083015181880183905261329383890182613126565b9250505061010080830151878303828901526132af8382613126565b92505050610120808301516132c88289018260ff169052565b505061014080830151925086820381880152506132e58183613156565b9a87019a9550505090840190600101613210565b60c08152600061330c60c08301896131f2565b60208301979097525060408101949094526001600160a01b03928316606085015290821660808401521660a090910152919050565b600060018060a01b038089168352876020840152861515604084015260c06060840152855160c08085015261337a6101808501826131f2565b9050602087015160e085015260408701516101008501526060870151610120850152816080880151166101408501528160a08801511661016085015280925050508360808301528260a0830152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6020815260006118616020830184613126565b604051606081016001600160401b038111828210171561341d5761341d6126e3565b60405290565b60405161016081016001600160401b038111828210171561341d5761341d6126e3565b604051601f8201601f191681016001600160401b038111828210171561346e5761346e6126e3565b604052919050565b60006001600160401b0382111561348f5761348f6126e3565b5060051b60200190565b600060208083850312156134ac57600080fd5b82516001600160401b038111156134c257600080fd5b8301601f810185136134d357600080fd5b80516134e66134e182613476565b613446565b81815260059190911b8201830190838101908783111561350557600080fd5b928401925b828410156135235783518252928401929084019061350a565b979650505050505050565b60408082528181018490526000906060808401600587901b8501820188855b8981101561368057878303605f19018452613568828c612ea9565b61016081358552602061357c818401612d51565b61ffff168187015261358f838a01612d51565b61ffff1689870152828801358887015260806135ac818501612d5c565b60ff169087015260a06135c0848201612d67565b6135ce8289018260020b9052565b505060c06135dd818501612d72565b62ffffff169087015260e06135f484820185612d09565b84838a0152613606858a018284612d7d565b945050505061010061361a81850185612d09565b888503838a015261362c858284612d7d565b945050505061012061363f818501612d5c565b60ff169087015261014061365584820185612d09565b945087840382890152613669848683612e15565b98830198975050509390930192505060010161354d565b505085810360208701526136948188613126565b9998505050505050505050565b600082601f8301126136b257600080fd5b813560206136c26134e183613476565b82815260059290921b840181019181810190868411156136e157600080fd5b8286015b848110156136fc57803583529183019183016136e5565b509695505050505050565b600082601f83011261371857600080fd5b813560206137286134e183613476565b82815260059290921b8401810191818101908684111561374757600080fd5b8286015b848110156136fc5780356001600160401b0381111561376a5760008081fd5b8701603f8101891361377c5760008081fd5b84810135604061378e6134e183613476565b8281526060928302840182019288820191908d8511156137ae5760008081fd5b948301945b848610156138115780868f0312156137cb5760008081fd5b6137d36133fb565b86356137de81612790565b8152868b01356137ed816127ad565b818c0152868501356137fe816127c9565b81860152835294850194918901916137b3565b5087525050509284019250830161374b565b6000610160823603121561383657600080fd5b61383e613423565b8235815261384e60208401612d51565b602082015261385f60408401612d51565b60408201526060830135606082015261387a60808401612d5c565b608082015261388b60a08401612d67565b60a082015261389c60c08401612d72565b60c082015260e08301356001600160401b03808211156138bb57600080fd5b6138c7368387016136a1565b60e0840152610100915081850135818111156138e257600080fd5b6138ee368288016136a1565b83850152506101209150613903828601612d5c565b828401526101409150818501358181111561391d57600080fd5b61392936828801613707565b8385015250505080915050919050565b600060ff821660ff810361394f5761394f6126f9565b60010192915050565b60005b8381101561397357818101518382015260200161395b565b50506000910152565b6000835161398e818460208801613958565b8351908301906139a2818360208801613958565b01949350505050565b600081518084526139c3816020860160208601613958565b601f01601f19169290920160200192915050565b6001600160a01b0389811682526020820189905260408201889052861660608201526001600160e01b03198516608082015260a0810184905260c0810183905261010060e08201819052600090613a30838201856139ab565b9b9a5050505050505050505050565b600082613a4e57613a4e6130fc565b500690565b81810381811115611864576118646126f9565b60018060a01b0384168152826020820152606060408201526000613a8d60608301846139ab565b95945050505050565b600082516126d9818460208701613958565b600181815b80851115613ae3578160001904821115613ac957613ac96126f9565b80851615613ad657918102915b93841c9390800290613aad565b509250929050565b600082613afa57506001611864565b81613b0757506000611864565b8160018114613b1d5760028114613b2757613b43565b6001915050611864565b60ff841115613b3857613b386126f9565b50506001821b611864565b5060208310610133831016604e8410600b8410161715613b66575081810a611864565b613b708383613aa8565b8060001904821115613b8457613b846126f9565b029392505050565b60006118618383613aeb56fea2646970667358221220656f0c10168c3c703e1c5c4fc6cee760a48a6050173cc33eb622f825d8fe98bf64736f6c63430008140033000000000000000000000000d11f8cbf170c112e146b28025ce388c2fe9010c1000000000000000000000000739347344c4f2101f7bea345307fcd619956cbc0000000000000000000000000fb64e79a562f7250131cf528242ceb10fdc823956435303366646236656233653433613539353665666166636431393532623065000000000000000000000000000000000000000000000000002386f26fc10000