0 txs
0 calls
constructor
constructor(address link, address linkEthFeed, address fastGasFeed, uint32 paymentPremiumPPB, uint24 blockCountPerTurn, uint32 checkGasLimit, uint24 stalenessSeconds, int256 fallbackGasPrice, int256 fallbackLinkPrice)
functions
FAST_GAS_FEED
viewfunction FAST_GAS_FEED() view returns (address)
getCanceledUpkeepList
viewfunction getCanceledUpkeepList() view returns (uint256[])
getConfig
viewfunction getConfig() view returns (uint32 paymentPremiumPPB, uint24 blockCountPerTurn, uint32 checkGasLimit, uint24 stalenessSeconds, int256 fallbackGasPrice, int256 fallbackLinkPrice)
getKeeperInfo
viewfunction getKeeperInfo(address query) view returns (address payee, bool active, uint96 balance)
getKeeperList
viewfunction getKeeperList() view returns (address[])
getUpkeep
viewfunction getUpkeep(uint256 id) view returns (address target, uint32 executeGas, bytes checkData, uint96 balance, address lastKeeper, address admin, uint64 maxValidBlocknumber)
getUpkeepCount
viewfunction getUpkeepCount() view returns (uint256)
LINK_ETH_FEED
viewfunction LINK_ETH_FEED() view returns (address)
LINK
viewfunction LINK() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
acceptOwnership
nonpayablefunction acceptOwnership()
acceptPayeeship
nonpayablefunction acceptPayeeship(address keeper)
addFunds
nonpayablefunction addFunds(uint256 id, uint96 amount)
cancelUpkeep
nonpayablefunction cancelUpkeep(uint256 id)
checkUpkeep
nonpayablefunction checkUpkeep(uint256 id, address from) returns (bytes performData, uint256 maxLinkPayment, uint256 gasLimit, int256 gasWei, int256 linkEth)
onTokenTransfer
nonpayablefunction onTokenTransfer(address sender, uint256 amount, bytes data)
pause
nonpayablefunction pause()
performUpkeep
nonpayablefunction performUpkeep(uint256 id, bytes performData) returns (bool success)
recoverFunds
nonpayablefunction recoverFunds()
registerUpkeep
nonpayablefunction registerUpkeep(address target, uint32 gasLimit, address admin, bytes checkData) returns (uint256 id)
setConfig
nonpayablefunction setConfig(uint32 paymentPremiumPPB, uint24 blockCountPerTurn, uint32 checkGasLimit, uint24 stalenessSeconds, int256 fallbackGasPrice, int256 fallbackLinkPrice)
setKeepers
nonpayablefunction setKeepers(address[] keepers, address[] payees)
transferOwnership
nonpayablefunction transferOwnership(address _to)
transferPayeeship
nonpayablefunction transferPayeeship(address keeper, address proposed)
unpause
nonpayablefunction unpause()
withdrawFunds
nonpayablefunction withdrawFunds(uint256 id, address to)
withdrawPayment
nonpayablefunction withdrawPayment(address from, address to)
events
ConfigSet
event ConfigSet(uint32 paymentPremiumPPB, uint24 blockCountPerTurn, uint32 checkGasLimit, uint24 stalenessSeconds, int256 fallbackGasPrice, int256 fallbackLinkPrice)
FundsAdded
event FundsAdded(uint256 indexed id, address indexed from, uint96 amount)
FundsWithdrawn
event FundsWithdrawn(uint256 indexed id, uint256 amount, address to)
KeepersUpdated
event KeepersUpdated(address[] keepers, address[] payees)
OwnershipTransferred
event OwnershipTransferred(address indexed from, address indexed to)
OwnershipTransferRequested
event OwnershipTransferRequested(address indexed from, address indexed to)
Paused
event Paused(address account)
PayeeshipTransferred
event PayeeshipTransferred(address indexed keeper, address indexed from, address indexed to)
PayeeshipTransferRequested
event PayeeshipTransferRequested(address indexed keeper, address indexed from, address indexed to)
PaymentWithdrawn
event PaymentWithdrawn(address indexed keeper, uint256 indexed amount, address indexed to, address payee)
Unpaused
event Unpaused(address account)
UpkeepCanceled
event UpkeepCanceled(uint256 indexed id, uint64 indexed atBlockHeight)
UpkeepPerformed
event UpkeepPerformed(uint256 indexed id, bool indexed success, address indexed from, uint96 payment, bytes performData)
UpkeepRegistered
event UpkeepRegistered(uint256 indexed id, uint32 executeGas, address admin)
errors
No errors.
creation bytecode
0x60e06040523480156200001157600080fd5b50604051620047703803806200477083398181016040526101208110156200003857600080fd5b5080516020820151604083015160608085015160808087015160a08089015160c0808b015160e08c0151610100909c0151600080546001600160a01b0319163317905560016002556003805460ff191690556001600160601b03198c8a1b81169097528a891b87169094529688901b90941690935296979596949592949093919290620000ca868686868686620000d9565b5050505050505050506200021e565b6000546001600160a01b0316331462000139576040805162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015290519081900360640190fd5b604080516080808201835263ffffffff89811680845262ffffff8a81166020808701829052938b16868801819052918a166060968701819052600b805463ffffffff1916851762ffffff60201b191664010000000084021763ffffffff60381b191667010000000000000085021762ffffff60581b19166b0100000000000000000000008302179055600c8a9055600d8990558751938452938301528186015292830152810184905260a0810183905290517ff68c98604b3cbc1a909e0df75315ce475fbc89bae7a6ab88b53573897f58d0d79160c0908290030190a1505050505050565b60805160601c60a05160601c60c05160601c6144f46200027c60003980610d695280613eb35250806118dc5280613f6a525080610be05280610fea5280611389528061147152806118395280611b8a5280611c5452506144f46000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063a4c0ed36116100f9578063c41b813a11610097578063da5c674111610071578063da5c674114610875578063eb5dcd6c14610929578063f2fde38b14610964578063fecf27c914610997576101c4565b8063c41b813a1461066c578063c7c3a19a14610739578063c804802214610858576101c4565b8063b121e147116100d3578063b121e14714610518578063b79550be1461054b578063b7fdb43614610553578063c3f909d414610615576101c4565b8063a4c0ed3614610443578063a710b221146104d5578063ad17836114610510576101c4565b80635c975abb116101665780637bbaf1ea116101405780637bbaf1ea1461038b5780638456cb59146104025780638da5cb5b1461040a578063948108f714610412576101c4565b80635c975abb1461032e578063744bfe611461034a57806379ba509714610383576101c4565b80631e12b8a5116101a25780631e12b8a5146102a05780632cb6864d146103165780633f4ba83a1461031e5780634584a41914610326576101c4565b806310833057146101c957806315a126ea146102175780631b6b6d231461026f575b600080fd5b610215600480360360c08110156101df57600080fd5b5063ffffffff813581169162ffffff60208201358116926040830135169160608101359091169060808101359060a0013561099f565b005b61021f610b6f565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561025b578181015183820152602001610243565b505050509050019250505060405180910390f35b610277610bde565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102d3600480360360208110156102b657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c02565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845291151560208401526bffffffffffffffffffffffff1682820152519081900360600190f35b61021f610c80565b610215610cd7565b610277610d67565b610336610d8b565b604080519115158252519081900360200190f35b6102156004803603604081101561036057600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16610d94565b6102156110ab565b610336600480360360408110156103a157600080fd5b813591908101906040810160208201356401000000008111156103c357600080fd5b8201836020820111156103d557600080fd5b803590602001918460018302840111640100000000831117156103f757600080fd5b5090925090506111ad565b610215611224565b6102776112b2565b6102156004803603604081101561042857600080fd5b50803590602001356bffffffffffffffffffffffff166112ce565b6102156004803603606081101561045957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561049657600080fd5b8201836020820111156104a857600080fd5b803590602001918460018302840111640100000000831117156104ca57600080fd5b509092509050611459565b610215600480360360408110156104eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611654565b6102776118da565b6102156004803603602081101561052e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118fe565b610215611a2b565b6102156004803603604081101561056957600080fd5b81019060208101813564010000000081111561058457600080fd5b82018360208201111561059657600080fd5b803590602001918460208302840111640100000000831117156105b857600080fd5b9193909290916020810190356401000000008111156105d657600080fd5b8201836020820111156105e857600080fd5b8035906020019184602083028401116401000000008311171561060a57600080fd5b509092509050611d16565b61061d61213a565b604051808763ffffffff1681526020018662ffffff1681526020018563ffffffff1681526020018462ffffff168152602001838152602001828152602001965050505050505060405180910390f35b6106a56004803603604081101561068257600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166121a6565b6040518080602001868152602001858152602001848152602001838152602001828103825287818151815260200191508051906020019080838360005b838110156106fa5781810151838201526020016106e2565b50505050905090810190601f1680156107275780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b6107566004803603602081101561074f57600080fd5b503561279a565b604051808873ffffffffffffffffffffffffffffffffffffffff1681526020018763ffffffff16815260200180602001866bffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff168152602001828103825287818151815260200191508051906020019080838360005b838110156108175781810151838201526020016107ff565b50505050905090810190601f1680156108445780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6102156004803603602081101561086e57600080fd5b5035612943565b6109176004803603608081101561088b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169263ffffffff602082013516926040820135909216918101906080810160608201356401000000008111156108d857600080fd5b8201836020820111156108ea57600080fd5b8035906020019184600183028401116401000000008311171561090c57600080fd5b509092509050612b85565b60408051918252519081900360200190f35b6102156004803603604081101561093f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516612fa9565b6102156004803603602081101561097a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613173565b61091761326f565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a2557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015290519081900360640190fd5b604080516080808201835263ffffffff89811680845262ffffff8a81166020808701829052938b16868801819052918a166060968701819052600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001685177fffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff166401000000008402177fffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffff166701000000000000008502177fffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff166b0100000000000000000000008302179055600c8a9055600d8990558751938452938301528186015292830152810184905260a0810183905290517ff68c98604b3cbc1a909e0df75315ce475fbc89bae7a6ab88b53573897f58d0d79160c0908290030190a1505050505050565b60606006805480602002602001604051908101604052809291908181526020018280548015610bd457602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ba9575b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526008602090815260409182902082516060810184528154948516808252740100000000000000000000000000000000000000009095046bffffffffffffffffffffffff1692810183905260019091015460ff16151592018290529192909190565b60606005805480602002602001604051908101604052809291908181526020018280548015610bd457602002820191906000526020600020905b815481526020019060010190808311610cba575050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d5d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015290519081900360640190fd5b610d65613275565b565b7f000000000000000000000000000000000000000000000000000000000000000081565b60035460ff1690565b8073ffffffffffffffffffffffffffffffffffffffff8116610e1757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f63616e6e6f742073656e6420746f207a65726f20616464726573730000000000604482015290519081900360640190fd5b6000838152600760205260409020600101546c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610ebc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f6e6c792063616c6c61626c652062792061646d696e00000000000000000000604482015290519081900360640190fd5b6000838152600760205260409020600201544367ffffffffffffffff9091161115610f4857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f75706b656570206d7573742062652063616e63656c6564000000000000000000604482015290519081900360640190fd5b60008381526007602090815260409182902060010180547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811690915582516bffffffffffffffffffffffff90911680825273ffffffffffffffffffffffffffffffffffffffff8616928201929092528251919286927ff3b5906e5672f3e524854103bcafbbdba80dbdfeca2c35e116127b1060a683189281900390910190a27f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561107957600080fd5b505af115801561108d573d6000803e3d6000fd5b505050506040513d60208110156110a357600080fd5b505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461113157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e657200000000000000000000604482015290519081900360640190fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b600061121c60405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250613363565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146112aa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015290519081900360640190fd5b610d65613b9c565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b816112d881613c64565b600083815260076020526040902060010154611302906bffffffffffffffffffffffff1683613cf2565b600084815260076020908152604080832060010180547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95861617905580517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201529386166044850152517f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16936323b872dd9360648083019493928390030190829087803b1580156113e357600080fd5b505af11580156113f7573d6000803e3d6000fd5b505050506040513d602081101561140d57600080fd5b5050604080516bffffffffffffffffffffffff841681529051339185917fafd24114486da8ebfc32f3626dada8863652e187461aa74d4bfa7348915062039181900360200190a3505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146114fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6f6e6c792063616c6c61626c65207468726f756768204c494e4b000000000000604482015290519081900360640190fd5b6020811461156c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64617461206d7573742062652033322062797465730000000000000000000000604482015290519081900360640190fd5b60008282602081101561157e57600080fd5b5035905061158b81613c64565b6000818152600760205260409020600101546115b5906bffffffffffffffffffffffff1685613cf2565b60008281526007602090815260409182902060010180547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff94851617905581519287168352905173ffffffffffffffffffffffffffffffffffffffff88169284927fafd24114486da8ebfc32f3626dada8863652e187461aa74d4bfa73489150620392918290030190a35050505050565b8073ffffffffffffffffffffffffffffffffffffffff81166116d757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f63616e6e6f742073656e6420746f207a65726f20616464726573730000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff83811660009081526008602090815260409182902082516060810184528154948516808252740100000000000000000000000000000000000000009095046bffffffffffffffffffffffff16928101929092526001015460ff161515918101919091529033146117bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f6e6c792063616c6c61626c6520627920706179656500000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8481166000818152600860209081526040918290208054851690558481015182513381529251948816946bffffffffffffffffffffffff90911693927f9819093176a1851202c7bcfa46845809b4e47c261866550e94ed3775d2f4069892908290030190a47f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8483602001516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561107957600080fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526009602052604090205416331461199357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f6f6e6c792063616c6c61626c652062792070726f706f73656420706179656500604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81811660008181526008602090815260408083208054337fffffffffffffffffffffffff000000000000000000000000000000000000000080831682179093556009909452828520805490921690915590519416939092849290917f78af32efdcad432315431e9b03d27e6cd98fb79c405fdc5af7c1714d9c0f75b39190a45050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611ab157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015290519081900360640190fd5b600454600090815b81811015611af557600081815260076020526040902060010154611aeb906bffffffffffffffffffffffff1684613cf2565b9250600101611ab9565b505060065460005b81811015611b8557600060068281548110611b1457fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168083526008909152604090912054909150611b7a906bffffffffffffffffffffffff740100000000000000000000000000000000000000009091041685613cf2565b935050600101611afd565b5060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611c0f57600080fd5b505afa158015611c23573d6000803e3d6000fd5b505050506040513d6020811015611c3957600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a9059cbb33611c92846bffffffffffffffffffffffff8816613d80565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611ce557600080fd5b505af1158015611cf9573d6000803e3d6000fd5b505050506040513d6020811015611d0f57600080fd5b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d9c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015290519081900360640190fd5b60005b600654811015611e1c57600060068281548110611db857fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff1682526008905260409020600190810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055919091019050611d9f565b5060005b83811015612057576000858583818110611e3657fe5b73ffffffffffffffffffffffffffffffffffffffff6020918202939093013583166000818152600890925260408220805491955093169150868686818110611e7a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611eff57508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611f6a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f63616e6e6f74206368616e676520706179656500000000000000000000000000604482015290519081900360640190fd5b600183015460ff1615611fde57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616e6e6f7420616464206b6565706572207477696365000000000000000000604482015290519081900360640190fd5b82547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9190911617825550600190810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682179055919091019050611e20565b5061206460068585614366565b507f056264c94f28bb06c99d13f0446eb96c67c215d8d707bce2655a98ddf1c0b71f848484846040518080602001806020018381038352878782818152602001925060200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169091018481038352858152602090810191508690860280828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039850909650505050505050a150505050565b60408051608081018252600b5463ffffffff80821680845262ffffff640100000000840481166020860181905267010000000000000085049093169585018690526b0100000000000000000000009093049092166060909301839052600c54600d549295919493929091565b60606000806000806121b6610d8b565b1561222257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b61222a613df7565b6000878152600760205260409020805474010000000000000000000000000000000000000000900463ffffffff169350612262613e64565b909350915061227284848461402f565b60018201546bffffffffffffffffffffffff91821696501685106122f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e73756666696369656e742066756e64730000000000000000000000000000604482015290519081900360640190fd5b6000888152600a60209081526040808320905160248101928352815460027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001841615020190911604604482018190527f6e04ff0d0000000000000000000000000000000000000000000000000000000093918291606490910190849080156123c55780601f1061239a576101008083540402835291602001916123c5565b820191906000526020600020905b8154815290600101906020018083116123a857829003601f168201915b5050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009097169690961786528754600b549151835193985060009788975073ffffffffffffffffffffffffffffffffffffffff909216955063ffffffff67010000000000000090930492909216935087928291908083835b602083106124cc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161248f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d806000811461252f576040519150601f19603f3d011682016040523d82523d6000602084013e612534565b606091505b5091509150816125a557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f63616c6c20746f20636865636b20746172676574206661696c65640000000000604482015290519081900360640190fd5b8080602001905160408110156125ba57600080fd5b8151602083018051604051929492938301929190846401000000008211156125e157600080fd5b9083019060208201858111156125f657600080fd5b825164010000000081118282018810171561261057600080fd5b82525081516020918201929091019080838360005b8381101561263d578181015183820152602001612625565b50505050905090810190601f16801561266a5780820380516001836020036101000a031916815260200191505b50604052505050809a508193505050816126e557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f75706b656570206e6f74206e6565646564000000000000000000000000000000604482015290519081900360640190fd5b61271e60405180606001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018d81526020018b815250613363565b91508161278c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f63616c6c20746f20706572666f726d2075706b656570206661696c6564000000604482015290519081900360640190fd5b505050509295509295909350565b6000818152600760209081526040808320815160c081018352815473ffffffffffffffffffffffffffffffffffffffff8082168084527401000000000000000000000000000000000000000090920463ffffffff168387018190526001808601546bffffffffffffffffffffffff81168689019081526c010000000000000000000000009091048416606080880191825260029889015467ffffffffffffffff811660808a019081526801000000000000000090910490961660a089019081528d8d52600a8c528a8d20935190519251965184548c5161010097821615979097027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169a909a04601f81018d90048d0286018d01909b528a85528c9b919a8c9a8b9a8b9a8b9a919990989097969495919390918791908301828280156129225780601f106128f757610100808354040283529160200191612922565b820191906000526020600020905b81548152906001019060200180831161290557829003601f168201915b50505050509450975097509750975097509750975050919395979092949650565b600081815260076020526040812060020154905467ffffffffffffffff9182169182149073ffffffffffffffffffffffffffffffffffffffff163314818061299c575080801561299c5750438367ffffffffffffffff16115b612a0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f746f6f206c61746520746f2063616e63656c2075706b65657000000000000000604482015290519081900360640190fd5b8080612a4957506000848152600760205260409020600101546c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633145b612ab457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c79206f776e6572206f722061646d696e00000000000000000000000000604482015290519081900360640190fd5b4381612ac857612ac5816032614118565b90505b600085815260076020526040902060020180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83161790558215612b4757600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018590555b60405167ffffffffffffffff82169086907f91cb3bb75cfbd718bbfccc56b7f53d92d7048ef4ca39a3b7b7c6d4af1f79118190600090a35050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163314612c0c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015290519081900360640190fd5b612c2b8673ffffffffffffffffffffffffffffffffffffffff1661418c565b612c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f746172676574206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b6108fc8563ffffffff161015612d0d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6d696e2067617320697320323330300000000000000000000000000000000000604482015290519081900360640190fd5b622625a08563ffffffff161115612d8557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6d61782067617320697320323530303030300000000000000000000000000000604482015290519081900360640190fd5b506004546040805160c08101825273ffffffffffffffffffffffffffffffffffffffff808916825263ffffffff808916602080850191825260008587018181528b86166060880190815267ffffffffffffffff6080890181815260a08a018581528c8652600787528b86209a518b54985190991674010000000000000000000000000000000000000000027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff998b167fffffffffffffffffffffffff000000000000000000000000000000000000000090991698909817989098169690961789559151600189018054925189166c01000000000000000000000000026bffffffffffffffffffffffff9283167fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090941693909317909116919091179055925160029096018054945190951668010000000000000000027fffffffff0000000000000000000000000000000000000000ffffffffffffffff969093167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416939093179490941617909155600a90915220612f419084846143ee565b506004805460010190556040805163ffffffff8716815273ffffffffffffffffffffffffffffffffffffffff86166020820152815183927fbae366358c023f887e791d7a62f2e4316f1026bd77f6fb49501a917b3bc5d012928290030190a295945050505050565b73ffffffffffffffffffffffffffffffffffffffff82811660009081526008602052604090205416331461303e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f6e6c792063616c6c61626c6520627920706179656500000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156130c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526009602052604090205481169082161461316f5773ffffffffffffffffffffffffffffffffffffffff82811660008181526009602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055513392917f84f7c7c80bb8ed2279b4aab5f61cd05e6374073d38f46d7f32de8c30e9e3836791a45b5050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146131f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60045490565b61327d610d8b565b6132e857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa613339614192565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190a1565b60006002805414156133d657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002805560208201516133e881613c64565b825173ffffffffffffffffffffffffffffffffffffffff1660009081526008602052604090206001015460ff1661348057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c7920616374697665206b65657065727300000000000000000000000000604482015290519081900360640190fd5b6020838101516000908152600782526040808220815160c081018352815473ffffffffffffffffffffffffffffffffffffffff80821683527401000000000000000000000000000000000000000090910463ffffffff1695820186905260018301546bffffffffffffffffffffffff8116948301949094526c010000000000000000000000009093048316606082015260029091015467ffffffffffffffff8116608083015268010000000000000000900490911660a0820152919080613545613e64565b915091503a821315613555573a91505b600061356284848461402f565b9050806bffffffffffffffffffffffff1685604001516bffffffffffffffffffffffff1610156135f357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e73756666696369656e74207061796d656e74000000000000000000000000604482015290519081900360640190fd5b876000015173ffffffffffffffffffffffffffffffffffffffff168560a0015173ffffffffffffffffffffffffffffffffffffffff16141561369657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6b656570657273206d7573742074616b65207475726e73000000000000000000604482015290519081900360640190fd5b60005a90506000634585e33b60e01b8a604001516040516024018080602001828103825283818151815260200191508051906020019080838360005b838110156136ea5781810151838201526020016136d2565b50505050905090810190601f1680156137175780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090961695909517909452505088519192506137a99188915083614196565b98505a820391506137bb82868661402f565b60408801519093506137db906bffffffffffffffffffffffff16846141e2565b87604001906bffffffffffffffffffffffff1690816bffffffffffffffffffffffff168152505089600001518760a0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505086600760008c60200151815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550606082015181600101600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060a08201518160020160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050506000613a3c84600860008e6000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16613cf290919063ffffffff16565b905080600860008d6000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a6000015173ffffffffffffffffffffffffffffffffffffffff168a15158c602001517fcaacad83e47cc45c280d487ec84184eee2fa3b54ebaa393bda7549f13da228f6878f6040015160405180836bffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613b4e578181015183820152602001613b36565b50505050905090810190601f168015613b7b5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a45050505050505050506001600255919050565b613ba4610d8b565b15613c1057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613339614192565b6000818152600760205260409020600201544367ffffffffffffffff90911611613cef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f696e76616c69642075706b656570206964000000000000000000000000000000604482015290519081900360640190fd5b50565b60008282016bffffffffffffffffffffffff8085169082161015613d7757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600082821115613df157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b3215610d6557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6f6e6c7920666f722073696d756c61746564206261636b656e64000000000000604482015290519081900360640190fd5b600b54604080517ffeaf968c000000000000000000000000000000000000000000000000000000008152905160009283926b01000000000000000000000090910462ffffff16918215159184917f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169163feaf968c9160048083019260a0929190829003018186803b158015613f0e57600080fd5b505afa158015613f22573d6000803e3d6000fd5b505050506040513d60a0811015613f3857600080fd5b5060208101516060909101519095509050818015613f5d57508042038363ffffffff16105b15613f6857600c5494505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015613fce57600080fd5b505afa158015613fe2573d6000803e3d6000fd5b505050506040513d60a0811015613ff857600080fd5b506020810151606090910151909450905081801561401d57508042038363ffffffff16105b1561402857600d5493505b5050509091565b6000806140496140428662013880614118565b859061426f565b600b5490915060009061406b90633b9aca009063ffffffff9081169061411816565b905060006140918561408b8461408587633b9aca0061426f565b9061426f565b906142e2565b90506b033b2e3c9fd0803ce800000081111561410e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f7061796d656e742067726561746572207468616e20616c6c204c494e4b000000604482015290519081900360640190fd5b9695505050505050565b600082820183811015613d7757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3b151590565b3390565b60005a6113888110156141a857600080fd5b6113888103905084604082048203116141c057600080fd5b50823b6141cc57600080fd5b60008083516020850160008789f1949350505050565b6000826bffffffffffffffffffffffff16826bffffffffffffffffffffffff161115613df157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b60008261427e57506000613d7a565b8282028284828161428b57fe5b0414613d77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061449e6021913960400191505060405180910390fd5b600080821161435257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161435d57fe5b04949350505050565b8280548282559060005260206000209081019282156143de579160200282015b828111156143de5781547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff843516178255602090920191600190910190614386565b506143ea929150614488565b5090565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261442457600085556143de565b82601f1061445b578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008235161785556143de565b828001600101855582156143de579182015b828111156143de57823582559160200191906001019061446d565b5b808211156143ea576000815560010161448956fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212203eb71b7820ea00460ce6336b00649dcf8667556a1251da9020587bdafa2be07764736f6c63430007060033000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca000000000000000000000000dc530d9457755926550b59e8eccdae7624181557000000000000000000000000169e633a2d1e6c10dd91238ba11c4a708dfef37c000000000000000000000000000000000000000000000000000000000bebc2000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000044aa200000000000000000000000000000000000000000000000000000000000015f900000000000000000000000000000000000000000000000000000002e90edd00000000000000000000000000000000000000000000000000000470de4df820000