1 tx
2 calls
constructor
constructor(address _systemRegistry, address _customOracle, uint8 _uniqueSignersThreshold, address[] initAuthorizedSigners)
functions
accessController
viewfunction accessController() view returns (address)
aggregateValues
viewfunction aggregateValues(uint256[] values) view returns (uint256)
authorizedSigners
viewfunction authorizedSigners() view returns (address[])
customOracle
viewfunction customOracle() view returns (address)
ETH_IN_USD
viewfunction ETH_IN_USD() view returns (address)
extractTimestampsAndAssertAllAreEqual
purefunction extractTimestampsAndAssertAllAreEqual() pure returns (uint256 extractedTimestamp)
getAuthorisedSignerIndex
viewfunction getAuthorisedSignerIndex(address signerAddress) view returns (uint8)
getDataServiceId
viewfunction getDataServiceId() view returns (string)
getSystemRegistry
viewfunction getSystemRegistry() view returns (address)
getUniqueSignersThreshold
viewfunction getUniqueSignersThreshold() view returns (uint8)
registeredFeedIds
viewfunction registeredFeedIds(bytes32) view returns (address tokenAddress, bool ethQuoted, uint8 feedDecimals)
uniqueSignersThreshold
viewfunction uniqueSignersThreshold() view returns (uint8)
validateTimestamp
viewfunction validateTimestamp(uint256 receivedTimestampMilliseconds) view
registerAuthorizedSigners
nonpayablefunction registerAuthorizedSigners(address[] signerAddresses)
registerFeedId
nonpayablefunction registerFeedId(bytes32 feedId, address tokenAddress, bool ethQuoted, uint8 feedDecimals)
removeFeedId
nonpayablefunction removeFeedId(bytes32 feedId)
setUniqueSignersThreshold
nonpayablefunction setUniqueSignersThreshold(uint8 _uniqueSignersThreshold)
updatePriceWithFeedId
nonpayablefunction updatePriceWithFeedId(bytes32[] feedIds)
events
FeedIdRegistered
event FeedIdRegistered(bytes32 indexed feedId, address indexed tokenAddress, bool ethQuoted, uint256 feedDecimals)
FeedIdRemoved
event FeedIdRemoved(bytes32 indexed feedId)
errors
AccessDenied
error AccessDenied()
CalldataMustHaveValidPayload
error CalldataMustHaveValidPayload()
CalldataOverOrUnderFlow
error CalldataOverOrUnderFlow()
CanNotPickMedianOfEmptyArray
error CanNotPickMedianOfEmptyArray()
DataPackageTimestampMustNotBeZero
error DataPackageTimestampMustNotBeZero()
DataPackageTimestampsMustBeEqual
error DataPackageTimestampsMustBeEqual()
DataTimestampCannotBeZero
error DataTimestampCannotBeZero()
EachSignerMustProvideTheSameValue
error EachSignerMustProvideTheSameValue()
EmptyCalldataPointersArr
error EmptyCalldataPointersArr()
GetDataServiceIdNotImplemented
error GetDataServiceIdNotImplemented()
IncorrectUnsignedMetadataSize
error IncorrectUnsignedMetadataSize()
InsufficientNumberOfUniqueSigners
error InsufficientNumberOfUniqueSigners(uint256 receivedSignersCount, uint256 requiredSignersCount)
InvalidCalldataPointer
error InvalidCalldataPointer()
InvalidParam
error InvalidParam(string paramName)
RedstonePayloadMustHaveAtLeastOneDataPackage
error RedstonePayloadMustHaveAtLeastOneDataPackage()
SignerNotAuthorised
error SignerNotAuthorised(address receivedSigner)
SystemMismatch
error SystemMismatch(address source1, address source2)
TimestampFromTooLongFuture
error TimestampFromTooLongFuture(uint256 receivedTimestampSeconds, uint256 blockTimestamp)
TimestampIsTooOld
error TimestampIsTooOld(uint256 receivedTimestampSeconds, uint256 blockTimestamp)
TimestampsMustBeEqual
error TimestampsMustBeEqual()
TokenNotRegistered
error TokenNotRegistered(bytes32 feedId, address tokenAddress)
TooLargeValueByteSize
error TooLargeValueByteSize(uint256 valueByteSize)
UndefinedAddress
error UndefinedAddress()
ZeroAddress
error ZeroAddress(string paramName)
creation bytecode
0x60e060405234801562000010575f80fd5b50604051620026f7380380620026f78339810160408190526200003391620003e3565b836001600160a01b031663bc43cbaf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000070573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000969190620004f5565b84620000d0816040518060400160405280600f81526020016e5f73797374656d526567697374727960881b8152506200022960201b60201c565b6001600160a01b039081166080528116620000fe57604051630cbe126f60e11b815260040160405180910390fd5b6001600160a01b031660a05260408051808201909152600c81526b637573746f6d4f7261636c6560a01b60208201526200013a90849062000229565b826001600160a01b031660c0816001600160a01b0316815250505f836001600160a01b031663f12baf5c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000192573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001b89190620004f5565b9050806001600160a01b0316856001600160a01b0316146200020557604051632f6b3b6360e01b81526001600160a01b038087166004830152821660248201526044015b60405180910390fd5b5f805460ff191660ff85161790556200021e8262000259565b5050505050620005a2565b6001600160a01b03821662000255578060405163eac0d38960e01b8152600401620001fc91906200051a565b5050565b5f5b8151811015620002fc575f8282815181106200027b576200027b62000568565b60200260200101519050620002bc816040518060400160405280600d81526020016c7369676e65724164647265737360981b8152506200022960201b60201c565b620002c98260016200057c565b6001600160a01b03919091165f908152600260205260409020805460ff191660ff9092169190911790556001016200025b565b508051600380548282555f82905262000255927fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b918201916020860182156200037d579160200282015b828111156200037d57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000346565b506200038b9291506200038f565b5090565b5b808211156200038b575f815560010162000390565b6001600160a01b0381168114620003ba575f80fd5b50565b8051620003ca81620003a5565b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215620003f7575f80fd5b84516200040481620003a5565b809450506020808601516200041981620003a5565b604087015190945060ff8116811462000430575f80fd5b60608701519093506001600160401b03808211156200044d575f80fd5b818801915088601f83011262000461575f80fd5b815181811115620004765762000476620003cf565b8060051b604051601f19603f830116810181811085821117156200049e576200049e620003cf565b60405291825284820192508381018501918b831115620004bc575f80fd5b938501935b82851015620004e557620004d585620003bd565b84529385019392850192620004c1565b989b979a50959850505050505050565b5f6020828403121562000506575f80fd5b81516200051381620003a5565b9392505050565b5f602080835283518060208501525f5b8181101562000548578581018301518582016040015282016200052a565b505f604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b5f52603260045260245ffd5b808201808211156200059c57634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c051612100620005f75f395f818161022d0152610e3a01525f818161026c0152818161036f0152818161053801528181610637015281816108b001526109a201525f6102ee01526121005ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c8063b5519fec1161009e578063e4d6301b1161006e578063e4d6301b146102d8578063f12baf5c146102ec578063f50b2efe14610312578063f90c492414610325578063fcbad3ea1461032f575f80fd5b8063b5519fec14610228578063bc43cbaf14610267578063c274583a1461028e578063e3fcdad6146102c5575f80fd5b80633ce142f5116100e45780633ce142f51461017357806355a547d5146101865780637f1a44601461019c5780639e26db84146101af578063b24ebfcc14610215575f80fd5b8063097082d51461011557806309eab95c1461012a5780631bf6f81a1461014d5780631cb1f9c514610160575b5f80fd5b610128610123366004611b3c565b610344565b005b5f546101369060ff1681565b60405160ff90911681526020015b60405180910390f35b61012861015b366004611b88565b61050d565b61012861016e366004611c07565b61060c565b610136610181366004611c9f565b61072a565b61018e610787565b604051908152602001610144565b6101286101aa366004611cb8565b610885565b6101ed6101bd366004611b88565b60016020525f90815260409020546001600160a01b0381169060ff600160a01b8204811691600160a81b90041683565b604080516001600160a01b039094168452911515602084015260ff1690820152606001610144565b61018e610223366004611cd1565b610954565b61024f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610144565b61024f7f000000000000000000000000000000000000000000000000000000000000000081565b60408051808201825260158152741c99591cdd1bdb994b5c1c9a5b585c9e4b5c1c9bd9605a1b602082015290516101449190611d52565b6101286102d3366004611cd1565b610964565b61024f6911551217d25397d554d160521b81565b7f000000000000000000000000000000000000000000000000000000000000000061024f565b610128610320366004611b88565b610eac565b5f5460ff16610136565b610337610eb8565b6040516101449190611de1565b604051632474521560e21b81525f805160206120ab83398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa1580156103bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103e09190611df3565b6103fd57604051634ca8886760e01b815260040160405180910390fd5b610425856040518060400160405280600681526020016519995959125960d21b815250610f18565b610453846040518060400160405280600c81526020016b746f6b656e4164647265737360a01b815250610f3c565b604080516060810182526001600160a01b03868116808352861515602080850182815260ff8981168789018181525f8f8152600186528a90209851895494519151909316600160a81b0260ff60a81b19911515600160a01b026001600160a81b031990951693909816929092179290921716949094179094558451908152928301919091529187917f93355f62b5d417e8ffd7da911f5551510162d5972ab4cf543be5be1ffa9414e1910160405180910390a35050505050565b604051632474521560e21b81525f805160206120ab83398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa158015610585573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105a99190611df3565b6105c657604051634ca8886760e01b815260040160405180910390fd5b5f8281526001602052604080822080546001600160b01b03191690555183917f34d5746d76688ec3effc728b210a8598d0bfbf31fda72ef88508f18c2df015e291a25050565b604051632474521560e21b81525f805160206120ab83398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa158015610684573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a89190611df3565b6106c557604051634ca8886760e01b815260040160405180910390fd5b6003545f5b8181101561071b5760025f600383815481106106e8576106e8611e0e565b5f9182526020808320909101546001600160a01b031683528201929092526040019020805460ff191690556001016106ca565b5061072583610f65565b505050565b6001600160a01b0381165f9081526002602052604081205460ff16808203610775576040516303b1166f60e61b81526001600160a01b03841660048201526024015b60405180910390fd5b610780600182611e36565b9392505050565b5f8061079161100d565b90505f61079d826110b1565b925061ffff1690505f8190036107c657604051632154bfcf60e21b815260040160405180910390fd5b5f5b8181101561087f575f6107da846110ff565b90505f806107e9606887611e4f565b90505f6107f68236611e62565b9050803592508265ffffffffffff165f0361082457604051630336dc9d60e41b815260040160405180910390fd5b875f0361083b578265ffffffffffff169750610863565b878365ffffffffffff16146108635760405163d9d1f46560e01b815260040160405180910390fd5b61086d8488611e4f565b965050600190930192506107c8915050565b50505090565b604051632474521560e21b81525f805160206120ab83398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa1580156108fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109219190611df3565b61093e57604051634ca8886760e01b815260040160405180910390fd5b505f805460ff191660ff92909216919091179055565b5f61095e82611139565b92915050565b604051632474521560e21b81527f83decae20f8c60e8face90e2f68d7eb8522e50f266968cec423d6dae0346f47860048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa1580156109ef573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a139190611df3565b610a3057604051634ca8886760e01b815260040160405180910390fd5b81516040805180820190915260038152623632b760e91b6020820152610a57908290611143565b5f8167ffffffffffffffff811115610a7157610a71611b9f565b604051908082528060200260200182016040528015610a9a578160200160208202803683370190505b5090505f80610aa886611165565b91509150610ab581610eac565b5f8467ffffffffffffffff811115610acf57610acf611b9f565b604051908082528060200260200182016040528015610af8578160200160208202803683370190505b5090505f8567ffffffffffffffff811115610b1557610b15611b9f565b604051908082528060200260200182016040528015610b3e578160200160208202803683370190505b5090505f5b86811015610e22575f60015f8b8481518110610b6157610b61611e0e565b60209081029190910181015182528181019290925260409081015f20815160608101835290546001600160a01b03811680835260ff600160a01b83048116151595840195909552600160a81b909104909316918101919091529150610c0b57898281518110610bd257610bd2611e0e565b6020026020010151815f015160405163d8b27adb60e01b815260040161076c9291909182526001600160a01b0316602082015260400190565b805f0151848381518110610c2157610c21611e0e565b60200260200101906001600160a01b031690816001600160a01b031681525050610c8b868381518110610c5657610c56611e0e565b60200260200101516040518060400160405280600f81526020016e62617365546f6b656e20707269636560881b815250611143565b6040810151602082015115610d25575f888481518110610cad57610cad611e0e565b60200260200101906001811115610cc657610cc6611e75565b90816001811115610cd957610cd9611e75565b81525050610d02878481518110610cf257610cf2611e0e565b602002602001015160128361117a565b878481518110610d1457610d14611e0e565b602002602001018181525050610dad565b6001888481518110610d3957610d39611e0e565b60200260200101906001811115610d5257610d52611e75565b90816001811115610d6557610d65611e75565b81525050610d8e878481518110610d7e57610d7e611e0e565b602002602001015160088361117a565b878481518110610da057610da0611e0e565b6020026020010181815250505b610db96103e887611e9d565b848481518110610dcb57610dcb611e0e565b60200260200101818152505042848481518110610dea57610dea611e0e565b60200260200101511115610e185742848481518110610e0b57610e0b611e0e565b6020026020010181815250505b5050600101610b43565b5060405163d0265c2360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d0265c2390610e75908590889086908b90600401611edf565b5f604051808303815f87803b158015610e8c575f80fd5b505af1158015610e9e573d5f803e3d5ffd5b505050505050505050505050565b610eb5816111dc565b50565b60606003805480602002602001604051908101604052809291908181526020018280548015610f0e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610ef0575b5050505050905090565b81610f385780604051634389d5ab60e01b815260040161076c9190611d52565b5050565b6001600160a01b038216610f38578060405163eac0d38960e01b815260040161076c9190611d52565b5f5b8151811015610ff9575f828281518110610f8357610f83611e0e565b60200260200101519050610fbc816040518060400160405280600d81526020016c7369676e65724164647265737360981b815250610f3c565b610fc7826001611e4f565b6001600160a01b03919091165f908152600260205260409020805460ff191660ff909216919091179055600101610f67565b508051610f38906003906020840190611a8d565b5f6602ed57011e0000601f193601358116148061103d576040516373bb264f60e11b815260040160405180910390fd5b5f366029111561106057604051632bcb7bc560e11b815260040160405180910390fd5b506028193601355f600961107a600362ffffff8516611e4f565b6110849190611e4f565b905036611092600283611e4f565b11156107805760405163c30a7bd760e01b815260040160405180910390fd5b5f80806110bf602085611e4f565b9050368111156110e257604051632bcb7bc560e11b815260040160405180910390fd5b36819003359250826110f5600286611e4f565b9250925050915091565b5f805f61110b8461125b565b9092509050604e61111d826020611e4f565b6111279084611f7a565b6111319190611e4f565b949350505050565b5f61095e826112ad565b815f03610f385780604051634389d5ab60e01b815260040161076c9190611d52565b60605f611171836113cb565b91509150915091565b8260ff80841690831610156111af576111938284611e36565b61119e90600a612071565b6111a89085611f7a565b9050610780565b8260ff168260ff161115610780576111c78383611e36565b6111d290600a612071565b6111319085611e9d565b5f6111e96103e883611e9d565b90508042101561122757603c6111ff4283611e62565b1115610f385760405163b6b0916d60e01b81526004810182905242602482015260440161076c565b60b46112338242611e62565b1115610f3857604051630321d0b560e01b81526004810182905242602482015260440161076c565b5f80808080602061126d604188611e4f565b6112779190611e4f565b6112819036611e62565b803593509050611292600382611e62565b62ffffff9390931696923563ffffffff169550919350505050565b5f8151600203611302576002826001815181106112cc576112cc611e0e565b6020026020010151835f815181106112e6576112e6611e0e565b60200260200101516112f89190611e4f565b61095e9190611e9d565b81515f0361132357604051639e198af960e01b815260040160405180910390fd5b61132c826115da565b5f6002835161133b9190611e9d565b90506002835161134b919061207f565b5f036113a9575f83828151811061136457611364611e0e565b60200260200101518460018461137a9190611e62565b8151811061138a5761138a611e0e565b602002602001015161139c9190611e4f565b9050611131600282611e9d565b8281815181106113bb576113bb611e0e565b6020026020010151915050919050565b60605f80835167ffffffffffffffff8111156113e9576113e9611b9f565b604051908082528060200260200182016040528015611412578160200160208202803683370190505b5090505f845167ffffffffffffffff81111561143057611430611b9f565b604051908082528060200260200182016040528015611459578160200160208202803683370190505b5090505f855167ffffffffffffffff81111561147757611477611b9f565b6040519080825280602002602001820160405280156114aa57816020015b60608152602001906001900390816114955790505b5090505f5b8651811015611524575f5460ff1667ffffffffffffffff8111156114d5576114d5611b9f565b6040519080825280602002602001820160405280156114fe578160200160208202803683370190505b5082828151811061151157611511611e0e565b60209081029190910101526001016114af565b505f61152e61100d565b90505f61153a826110b1565b60405190935061ffff90911691505f5b828110156115c2575f6115608b89898989611628565b90955090505f8190036115865760405163dfb25a7960e01b815260040160405180910390fd5b88811415801561159557508815155b156115b35760405163265e23a160e11b815260040160405180910390fd5b6040839052975060010161154a565b506115cd84876118ab565b9750505050505050915091565b8051602082016020820281019150805b8281101561162257815b8181101561161957815181518082101561160f578084528183525b50506020016115f4565b506020016115ea565b50505050565b5f805f805f6116368661125b565b90925090505f8060608180600d61164e602088611e4f565b6116589089611f7a565b6116629190611e4f565b91505f61167060688d611e4f565b61167a9036611e62565b90505f8361168960418f611e4f565b6116939190611e4f565b61169d9036611e62565b90506116a984826116bc565b94508360208601209550813592506116df565b60408051838152602081850181019092525f910183838237601f19019392505050565b8265ffffffffffff169a506117008660418f6116fb9190611e4f565b6119c6565b965061170b8761072a565b60ff16995050505050505050604e866117249190611e4f565b95505f805f5b8481101561189857602061173e858b611e4f565b6117489190611e4f565b98506117548985611a3b565b90935091505f5b8d5181101561188f578d818151811061177657611776611e0e565b60200260200101518403611887575f8c828151811061179757611797611e0e565b602002602001015190506117b081896001901b16151590565b1580156117dc57505f5460ff1660ff168e83815181106117d2576117d2611e0e565b6020026020010151105b1561188157838c83815181106117f4576117f4611e0e565b60200260200101518f848151811061180e5761180e611e0e565b60200260200101518151811061182657611826611e0e565b6020026020010181815250508d828151811061184457611844611e0e565b60200260200101805180919061185990612092565b9052506001881b81178d838151811061187457611874611e0e565b6020026020010181815250505b5061188f565b60010161175b565b5060010161172a565b5050508594505050509550959350505050565b60605f835167ffffffffffffffff8111156118c8576118c8611b9f565b6040519080825280602002602001820160405280156118f1578160200160208202803683370190505b5090505f6119005f5460ff1690565b60ff1690505f5b85518110156119bc578185828151811061192357611923611e0e565b602002602001015110156119705784818151811061194357611943611e0e565b602002602001015182604051632b13aef560e01b815260040161076c929190918252602082015260400190565b5f61199387838151811061198657611986611e0e565b6020026020010151610954565b9050808483815181106119a8576119a8611e0e565b602090810291909101015250600101611907565b5090949350505050565b604080515f80825260208083018085528690523685900380850135831a948401859052803560608501819052910135608084018190529193909260019060a0016020604051602081039080840390855afa158015611a26573d5f803e3d5ffd5b5050604051601f190151979650505050505050565b5f8080611a488536611e62565b9050803592506020810135915060218410611a79576040516360007e2160e11b81526004810185905260240161076c565b8360200360080282901c9150509250929050565b828054828255905f5260205f20908101928215611ae0579160200282015b82811115611ae057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611aab565b50611aec929150611af0565b5090565b5b80821115611aec575f8155600101611af1565b80356001600160a01b0381168114611b1a575f80fd5b919050565b8015158114610eb5575f80fd5b803560ff81168114611b1a575f80fd5b5f805f8060808587031215611b4f575f80fd5b84359350611b5f60208601611b04565b92506040850135611b6f81611b1f565b9150611b7d60608601611b2c565b905092959194509250565b5f60208284031215611b98575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611bdc57611bdc611b9f565b604052919050565b5f67ffffffffffffffff821115611bfd57611bfd611b9f565b5060051b60200190565b5f6020808385031215611c18575f80fd5b823567ffffffffffffffff811115611c2e575f80fd5b8301601f81018513611c3e575f80fd5b8035611c51611c4c82611be4565b611bb3565b81815260059190911b82018301908381019087831115611c6f575f80fd5b928401925b82841015611c9457611c8584611b04565b82529284019290840190611c74565b979650505050505050565b5f60208284031215611caf575f80fd5b61078082611b04565b5f60208284031215611cc8575f80fd5b61078082611b2c565b5f6020808385031215611ce2575f80fd5b823567ffffffffffffffff811115611cf8575f80fd5b8301601f81018513611d08575f80fd5b8035611d16611c4c82611be4565b81815260059190911b82018301908381019087831115611d34575f80fd5b928401925b82841015611c9457833582529284019290840190611d39565b5f602080835283518060208501525f5b81811015611d7e57858101830151858201604001528201611d62565b505f604082860101526040601f19601f8301168501019250505092915050565b5f815180845260208085019450602084015f5b83811015611dd65781516001600160a01b031687529582019590820190600101611db1565b509495945050505050565b602081525f6107806020830184611d9e565b5f60208284031215611e03575f80fd5b815161078081611b1f565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b60ff828116828216039081111561095e5761095e611e22565b8082018082111561095e5761095e611e22565b8181038181111561095e5761095e611e22565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f82611eab57611eab611e89565b500490565b5f815180845260208085019450602084015f5b83811015611dd657815187529582019590820190600101611ec3565b608081525f611ef16080830187611d9e565b60208382036020850152611f058288611eb0565b91508382036040850152611f198287611eb0565b8481036060860152855180825260208088019450909101905f5b81811015611f6b57845160028110611f5957634e487b7160e01b5f52602160045260245ffd5b83529383019391830191600101611f33565b50909998505050505050505050565b808202811582820484141761095e5761095e611e22565b600181815b80851115611fcb57815f1904821115611fb157611fb1611e22565b80851615611fbe57918102915b93841c9390800290611f96565b509250929050565b5f82611fe15750600161095e565b81611fed57505f61095e565b8160018114612003576002811461200d57612029565b600191505061095e565b60ff84111561201e5761201e611e22565b50506001821b61095e565b5060208310610133831016604e8410600b841016171561204c575081810a61095e565b6120568383611f91565b805f190482111561206957612069611e22565b029392505050565b5f61078060ff841683611fd3565b5f8261208d5761208d611e89565b500690565b5f600182016120a3576120a3611e22565b506001019056feced6982f480260bdd8ad5cb18ff2854f0306d78d904ad6cc107e8f3a0f526c18a2646970667358221220b032e4044073a3610490d7cd1c31fcc4e397bdf8398405575128e78d2855566264736f6c634300081800330000000000000000000000002218f90a98b0c070676f249ef44834686daa428500000000000000000000000053ff9d648a8a1cf70c6b60ae26b93047cc24066f0000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000050000000000000000000000008bb8f32df04c8b654987daaed53d6b6091e3b774000000000000000000000000deb22f54738d54976c4c0fe5ce6d408e40d8849900000000000000000000000051ce04be4b3e32572c4ec9135221d0691ba7d202000000000000000000000000dd682daec5a90dd295d14da4b0bec9281017b5be0000000000000000000000009c5ae89c4af6aa32ce58588dbaf90d18a855b6de