From e0bf533036c8539d351327fbb3a3e338c2cdacbc Mon Sep 17 00:00:00 2001 From: Paul Razvan Berg Date: Fri, 29 Dec 2023 13:48:23 +0200 Subject: [PATCH 1/3] refactor: reorder struct fields --- src/types/DataTypes.sol | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/types/DataTypes.sol b/src/types/DataTypes.sol index 3c74ed8c..19dc1620 100644 --- a/src/types/DataTypes.sol +++ b/src/types/DataTypes.sol @@ -14,12 +14,12 @@ library Batch { /// @notice A struct encapsulating all parameters of {SablierV2LockupDynamic.createWithDelta} except for the asset. struct CreateWithDeltas { address sender; - bool cancelable; - bool transferable; address recipient; uint128 totalAmount; - Broker broker; + bool cancelable; + bool transferable; LockupDynamic.SegmentWithDelta[] segments; + Broker broker; } /// @notice A struct encapsulating all parameters of {SablierV2LockupLinear.createWithDurations} except for the @@ -38,13 +38,13 @@ library Batch { /// asset. struct CreateWithMilestones { address sender; + address recipient; + uint128 totalAmount; uint40 startTime; bool cancelable; bool transferable; - address recipient; - uint128 totalAmount; - Broker broker; LockupDynamic.Segment[] segments; + Broker broker; } /// @notice A struct encapsulating all parameters of {SablierV2LockupLinear.createWithRange} except for the asset. @@ -54,7 +54,7 @@ library Batch { uint128 totalAmount; bool cancelable; bool transferable; - LockupLinear.Range range; Broker broker; + LockupLinear.Range range; } } From 62d45b7e08fb1a8cf09587382322f12e44c48e98 Mon Sep 17 00:00:00 2001 From: Paul Razvan Berg Date: Sat, 30 Dec 2023 10:59:05 +0200 Subject: [PATCH 2/3] chore: reorder broker param --- src/types/DataTypes.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/DataTypes.sol b/src/types/DataTypes.sol index 19dc1620..315886a4 100644 --- a/src/types/DataTypes.sol +++ b/src/types/DataTypes.sol @@ -54,7 +54,7 @@ library Batch { uint128 totalAmount; bool cancelable; bool transferable; - Broker broker; LockupLinear.Range range; + Broker broker; } } From 506353a0ff2001776a9903030dcfadee13a6b62e Mon Sep 17 00:00:00 2001 From: Paul Razvan Berg Date: Sat, 30 Dec 2023 22:58:00 +0200 Subject: [PATCH 3/3] test: update precompiles --- test/utils/Precompiles.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/utils/Precompiles.sol b/test/utils/Precompiles.sol index 52127c11..f52c768e 100644 --- a/test/utils/Precompiles.sol +++ b/test/utils/Precompiles.sol @@ -11,7 +11,7 @@ contract Precompiles { //////////////////////////////////////////////////////////////////////////*/ bytes public constant BYTECODE_BATCH = - hex"6080806040523461001657611a4a908161001c8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c9081638c72706e14610c7d575080639b38b39a14610864578063bd4eb1a4146104ac5763e8d349611461004b57600080fd5b346104345760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610434576100826111c1565b61008a6110c7565b9060443567ffffffffffffffff808211610434573660238301121561043457816004013511610434573660246101208360040135028301011161043457806004013515610482576000805b8260040135821061044d5761010291508473ffffffffffffffffffffffffffffffffffffffff851661158b565b61010f816004013561133a565b9160005b82600401358110610130576040518061012c8682611185565b0390f35b8060e06101458286600401356024880161157a565b01610163606061015d84886004013560248a0161157a565b01611389565b906101768387600401356024890161157a565b91610194602061018e868a6004013560248c0161157a565b01611396565b6101ae6101a9868a6004013560248c0161157a565b611396565b916fffffffffffffffffffffffffffffffff6101dd60406101d78960048e013560248f0161157a565b01611253565b73ffffffffffffffffffffffffffffffffffffffff61020c8c61015d60809c8260248f9460040135910161157a565b94816040519761021b89611270565b16875216602086015216604084015273ffffffffffffffffffffffffffffffffffffffff8b166060840152151586830152151560a082015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608436030112610434576103c4926102c060e093604051610295816112a9565b6102a160a08501611451565b81526102b060c0809501611451565b602082015283850152369061140b565b83830152604051957fab167ccc00000000000000000000000000000000000000000000000000000000875273ffffffffffffffffffffffffffffffffffffffff835116600488015273ffffffffffffffffffffffffffffffffffffffff60208401511660248801526fffffffffffffffffffffffffffffffff604084015116604488015273ffffffffffffffffffffffffffffffffffffffff60608401511660648801528201511515608487015260a0820151151560a4870152810151602064ffffffffff918281511660c489015201511660e486015201516101048401906020809173ffffffffffffffffffffffffffffffffffffffff81511684520151910152565b60208261014481600073ffffffffffffffffffffffffffffffffffffffff88165af1801561044157600090610409575b600192506104028287611515565b5201610113565b506020823d602011610439575b81610423602093836112e1565b8101031261043457600191516103f4565b600080fd5b3d9150610416565b6040513d6000823e3d90fd5b6001906fffffffffffffffffffffffffffffffff61047860406101d786886004013560248a0161157a565b16019101906100d5565b60046040517f763e559d000000000000000000000000000000000000000000000000000000008152fd5b34610434576104ba366110ea565b909281156104825760009060005b838110610836575073ffffffffffffffffffffffffffffffffffffffff6104f2911691848361158b565b6104fb8261133a565b9260005b838110610514576040518061012c8782611185565b61051f81858861153a565b60a00190868561053083828461153a565b60200161053c90611389565b938161054985828661153a565b60600161055590611396565b8561056181848861153a565b60e0810161056e916113b7565b9561057a92919761153a565b61058390611396565b968c8761059181868461153a565b60800161059d90611253565b946105a79261153a565b6040016105b390611389565b90604051986105c18a611270565b73ffffffffffffffffffffffffffffffffffffffff168952151560208901521515604088015273ffffffffffffffffffffffffffffffffffffffff1660608701526fffffffffffffffffffffffffffffffff16608086015273ffffffffffffffffffffffffffffffffffffffff861660a08601523661063f9161140b565b60c0850152369061064f92611463565b60e083015260405180927f168444560000000000000000000000000000000000000000000000000000000082526004820160209052610144820190805173ffffffffffffffffffffffffffffffffffffffff166024840152602081015115156044840152604081015115156064840152606081015173ffffffffffffffffffffffffffffffffffffffff16608484015260808101516fffffffffffffffffffffffffffffffff1660a484015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c484015260c081015160e4840161074d916020809173ffffffffffffffffffffffffffffffffffffffff81511684520151910152565b60e0015190610124830161012090528151809152610164830191602001906000905b8082106107db57505050908060209203816000885af18015610441576000906107a8575b600192506107a18288611515565b52016104ff565b506020823d6020116107d3575b816107c2602093836112e1565b810103126104345760019151610793565b3d91506107b5565b919350916020606082610828600194885164ffffffffff604080926fffffffffffffffffffffffffffffffff815116855267ffffffffffffffff6020820151166020860152015116910152565b01940192018593929161076f565b916001906fffffffffffffffffffffffffffffffff61085b60806101d787898c61153a565b160192016104c8565b346104345760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104345761089b6111c1565b6108a36110c7565b6044359167ffffffffffffffff8084116104345736602385011215610434578360040135116104345760248301903660246101408660040135028601011161043457836004013515610482576000805b85600401358210610c4b5761092091508473ffffffffffffffffffffffffffffffffffffffff841661158b565b61092d846004013561133a565b9260005b8560040135811061094a576040518061012c8782611185565b808661010061095f8794836004013586611529565b0183610975606061015d86866004013585611529565b610998602061018e8761098d81896004013588611529565b976004013586611529565b906fffffffffffffffffffffffffffffffff8c73ffffffffffffffffffffffffffffffffffffffff6109fe6109ea60406101d78c6109de6101a98260048a01358e611529565b9a876004013590611529565b9261015d8b60809d8e936004013590611529565b948160405197610a0d89611270565b16875216602086015216604084015273ffffffffffffffffffffffffffffffffffffffff88166060840152151586830152151560a082015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60843603011261043457610bd392610ac260e093604051610a878161128d565b610a9360a08501611451565b8152610ab28660c095610aa7878201611451565b602085015201611451565b604082015283850152369061140b565b83830152604051957f96ce143100000000000000000000000000000000000000000000000000000000875273ffffffffffffffffffffffffffffffffffffffff835116600488015273ffffffffffffffffffffffffffffffffffffffff60208401511660248801526fffffffffffffffffffffffffffffffff604084015116604488015273ffffffffffffffffffffffffffffffffffffffff60608401511660648801528201511515608487015260a0820151151560a4870152810151604064ffffffffff918281511660c48901528260208201511660e489015201511661010486015201516101248401906020809173ffffffffffffffffffffffffffffffffffffffff81511684520151910152565b60208261016481600073ffffffffffffffffffffffffffffffffffffffff89165af1801561044157600090610c18575b60019250610c118288611515565b5201610931565b506020823d602011610c43575b81610c32602093836112e1565b810103126104345760019151610c03565b3d9150610c25565b6001906fffffffffffffffffffffffffffffffff610c7360406101d7868b600401358a611529565b16019101906108f3565b3461043457610c8b366110ea565b929093831561109f57506000805b84821061107157610cc291508373ffffffffffffffffffffffffffffffffffffffff841661158b565b610ccb8361133a565b9360005b848110610ce4576040518061012c8882611185565b60c0610cf18287856111e4565b0190610d03604061015d8389876111e4565b91610d14608061018e848a886111e4565b92610d2e610d23848a886111e4565b6101008101906113b7565b9091610d3e6101a9868c8a6111e4565b936020610d4c878d8b6111e4565b01359464ffffffffff861686036104345788610d7f606061015d8f80610d7960a06101d78f80958a6111e4565b956111e4565b96604051998a61012081011067ffffffffffffffff6101208d0111176110425773ffffffffffffffffffffffffffffffffffffffff908b99610e3a99989764ffffffffff6fffffffffffffffffffffffffffffffff96956101009f86610e2e9b9a61012083016040521690521660208d0152151560408c0152151560608b01521660808901521660a087015273ffffffffffffffffffffffffffffffffffffffff8b1660c0870152369061140b565b60e08501523691611463565b838201526040519283917fc33cd35e0000000000000000000000000000000000000000000000000000000083526020600484015273ffffffffffffffffffffffffffffffffffffffff815116602484015264ffffffffff602082015116604484015260408101511515606484015260608101511515608484015273ffffffffffffffffffffffffffffffffffffffff60808201511660a48401526fffffffffffffffffffffffffffffffff60a08201511660c484015273ffffffffffffffffffffffffffffffffffffffff60c08201511660e4840152610f4360e08201516101048501906020809173ffffffffffffffffffffffffffffffffffffffff81511684520151910152565b0151610140610144830152805180610164840152602061018484019201906000905b808210610fe75750505090806020920381600073ffffffffffffffffffffffffffffffffffffffff89165af1801561044157600090610fb4575b60019250610fad8289611515565b5201610ccf565b506020823d602011610fdf575b81610fce602093836112e1565b810103126104345760019151610f9f565b3d9150610fc1565b919350916020606082611034600194885164ffffffffff604080926fffffffffffffffffffffffffffffffff815116855267ffffffffffffffff6020820151166020860152015116910152565b019401920185939291610f65565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001906fffffffffffffffffffffffffffffffff61109560a06101d7868a8c6111e4565b1601910190610c99565b807f763e559d0000000000000000000000000000000000000000000000000000000060049252fd5b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361043457565b9060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126104345773ffffffffffffffffffffffffffffffffffffffff91600435838116810361043457926024359081168103610434579160443567ffffffffffffffff9283821161043457806023830112156104345781600401359384116104345760248460051b83010111610434576024019190565b602090602060408183019282815285518094520193019160005b8281106111ad575050505090565b83518552938101939281019260010161119f565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361043457565b91908110156112245760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee181360301821215610434570190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b356fffffffffffffffffffffffffffffffff811681036104345790565b610100810190811067ffffffffffffffff82111761104257604052565b6060810190811067ffffffffffffffff82111761104257604052565b6040810190811067ffffffffffffffff82111761104257604052565b6080810190811067ffffffffffffffff82111761104257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761104257604052565b67ffffffffffffffff81116110425760051b60200190565b9061134482611322565b61135160405191826112e1565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061137f8294611322565b0190602036910137565b3580151581036104345790565b3573ffffffffffffffffffffffffffffffffffffffff811681036104345790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610434570180359067ffffffffffffffff82116104345760200191606082023603831361043457565b919082604091031261043457604051611423816112a9565b8092803573ffffffffffffffffffffffffffffffffffffffff81168103610434578252602090810135910152565b359064ffffffffff8216820361043457565b92919261146f82611322565b60409461147f60405192836112e1565b8195848352602080930191606080960285019481861161043457925b8584106114ab5750505050505050565b8684830312610434578251906114c08261128d565b84356fffffffffffffffffffffffffffffffff81168103610434578252858501359067ffffffffffffffff8216820361043457828792838b950152611506868801611451565b8682015281520193019261149b565b80518210156112245760209160051b010190565b919081101561122457610140020190565b91908110156112245760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0181360301821215610434570190565b919081101561122457610120020190565b90604080516020907f23b872dd000000000000000000000000000000000000000000000000000000008282015233602482015260449030828201528660648201526064815260a081019080821067ffffffffffffffff831117611042576115f49185528561179d565b73ffffffffffffffffffffffffffffffffffffffff94858516958451917fdd62ed3e0000000000000000000000000000000000000000000000000000000083523060048401521690816024820152838184818a5afa90811561177a57908891600091611749575b501061166b575b50505050505050565b8351956000808589017f095ea7b3000000000000000000000000000000000000000000000000000000009a8b82528560248c0152868b0152858a526116af8a6112c5565b89519082855af1906116bf6118bd565b82611716575b508161170b575b50611662576116ff966116fa945193840152602483015260008183015281526116f4816112c5565b8261179d565b61179d565b38808080808080611662565b90503b1515386116cc565b809192505190858215928315611731575b50505090386116c5565b6117419350820181019101611785565b388581611727565b809250858092503d8311611773575b61176281836112e1565b81010312610434578790513861165b565b503d611758565b85513d6000823e3d90fd5b90816020910312610434575180151581036104345790565b6040516118089173ffffffffffffffffffffffffffffffffffffffff166117c3826112a9565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af16118026118bd565b9161191b565b8051908282159283156118a5575b505050156118215750565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6118b59350820181019101611785565b388281611816565b3d15611916573d9067ffffffffffffffff8211611042576040519161190a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846112e1565b82523d6000602084013e565b606090565b91929015611996575081511561192f575090565b3b156119385790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156119a95750805190602001fd5b604051907f08c379a000000000000000000000000000000000000000000000000000000000825281602080600483015282519283602484015260005b848110611a26575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f836000604480968601015201168101030190fd5b8181018301518682016044015285935082016119e556fea164736f6c6343000817000a"; + hex"6080806040523461001657611a49908161001c8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c9081632b754bb014610c7d575080639b38b39a146108645780639b675ad6146104ac5763e8d349611461004b57600080fd5b346104345760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610434576100826111c0565b61008a6110c6565b9060443567ffffffffffffffff808211610434573660238301121561043457816004013511610434573660246101208360040135028301011161043457806004013515610482576000805b8260040135821061044d5761010291508473ffffffffffffffffffffffffffffffffffffffff851661158a565b61010f8160040135611339565b9160005b82600401358110610130576040518061012c8682611184565b0390f35b8060e061014582866004013560248801611579565b01610163606061015d84886004013560248a01611579565b01611388565b9061017683876004013560248901611579565b91610194602061018e868a6004013560248c01611579565b01611395565b6101ae6101a9868a6004013560248c01611579565b611395565b916fffffffffffffffffffffffffffffffff6101dd60406101d78960048e013560248f01611579565b01611252565b73ffffffffffffffffffffffffffffffffffffffff61020c8c61015d60809c8260248f94600401359101611579565b94816040519761021b8961126f565b16875216602086015216604084015273ffffffffffffffffffffffffffffffffffffffff8b166060840152151586830152151560a082015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608436030112610434576103c4926102c060e093604051610295816112a8565b6102a160a08501611450565b81526102b060c0809501611450565b602082015283850152369061140a565b83830152604051957fab167ccc00000000000000000000000000000000000000000000000000000000875273ffffffffffffffffffffffffffffffffffffffff835116600488015273ffffffffffffffffffffffffffffffffffffffff60208401511660248801526fffffffffffffffffffffffffffffffff604084015116604488015273ffffffffffffffffffffffffffffffffffffffff60608401511660648801528201511515608487015260a0820151151560a4870152810151602064ffffffffff918281511660c489015201511660e486015201516101048401906020809173ffffffffffffffffffffffffffffffffffffffff81511684520151910152565b60208261014481600073ffffffffffffffffffffffffffffffffffffffff88165af1801561044157600090610409575b600192506104028287611514565b5201610113565b506020823d602011610439575b81610423602093836112e0565b8101031261043457600191516103f4565b600080fd5b3d9150610416565b6040513d6000823e3d90fd5b6001906fffffffffffffffffffffffffffffffff61047860406101d786886004013560248a01611579565b16019101906100d5565b60046040517f763e559d000000000000000000000000000000000000000000000000000000008152fd5b34610434576104ba366110e9565b909281156104825760009060005b838110610836575073ffffffffffffffffffffffffffffffffffffffff6104f2911691848361158a565b6104fb82611339565b9260005b838110610514576040518061012c8782611184565b61051f818588611539565b60c001908685610530838284611539565b60600161053c90611388565b9381610549858286611539565b60200161055590611395565b85610561818488611539565b60a0810161056e916113b6565b9561057a929197611539565b61058390611395565b968c87610591818684611539565b60400161059d90611252565b946105a792611539565b6080016105b390611388565b90604051986105c18a61126f565b73ffffffffffffffffffffffffffffffffffffffff168952151560208901521515604088015273ffffffffffffffffffffffffffffffffffffffff1660608701526fffffffffffffffffffffffffffffffff16608086015273ffffffffffffffffffffffffffffffffffffffff861660a08601523661063f9161140a565b60c0850152369061064f92611462565b60e083015260405180927f168444560000000000000000000000000000000000000000000000000000000082526004820160209052610144820190805173ffffffffffffffffffffffffffffffffffffffff166024840152602081015115156044840152604081015115156064840152606081015173ffffffffffffffffffffffffffffffffffffffff16608484015260808101516fffffffffffffffffffffffffffffffff1660a484015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c484015260c081015160e4840161074d916020809173ffffffffffffffffffffffffffffffffffffffff81511684520151910152565b60e0015190610124830161012090528151809152610164830191602001906000905b8082106107db57505050908060209203816000885af18015610441576000906107a8575b600192506107a18288611514565b52016104ff565b506020823d6020116107d3575b816107c2602093836112e0565b810103126104345760019151610793565b3d91506107b5565b919350916020606082610828600194885164ffffffffff604080926fffffffffffffffffffffffffffffffff815116855267ffffffffffffffff6020820151166020860152015116910152565b01940192018593929161076f565b916001906fffffffffffffffffffffffffffffffff61085b60406101d787898c611539565b160192016104c8565b346104345760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104345761089b6111c0565b6108a36110c6565b6044359167ffffffffffffffff8084116104345736602385011215610434578360040135116104345760248301903660246101408660040135028601011161043457836004013515610482576000805b85600401358210610c4b5761092091508473ffffffffffffffffffffffffffffffffffffffff841661158a565b61092d8460040135611339565b9260005b8560040135811061094a576040518061012c8782611184565b808661010061095f8794836004013586611528565b0183610975606061015d86866004013585611528565b610998602061018e8761098d81896004013588611528565b976004013586611528565b906fffffffffffffffffffffffffffffffff8c73ffffffffffffffffffffffffffffffffffffffff6109fe6109ea60406101d78c6109de6101a98260048a01358e611528565b9a876004013590611528565b9261015d8b60809d8e936004013590611528565b948160405197610a0d8961126f565b16875216602086015216604084015273ffffffffffffffffffffffffffffffffffffffff88166060840152151586830152151560a082015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60843603011261043457610bd392610ac260e093604051610a878161128c565b610a9360a08501611450565b8152610ab28660c095610aa7878201611450565b602085015201611450565b604082015283850152369061140a565b83830152604051957f96ce143100000000000000000000000000000000000000000000000000000000875273ffffffffffffffffffffffffffffffffffffffff835116600488015273ffffffffffffffffffffffffffffffffffffffff60208401511660248801526fffffffffffffffffffffffffffffffff604084015116604488015273ffffffffffffffffffffffffffffffffffffffff60608401511660648801528201511515608487015260a0820151151560a4870152810151604064ffffffffff918281511660c48901528260208201511660e489015201511661010486015201516101248401906020809173ffffffffffffffffffffffffffffffffffffffff81511684520151910152565b60208261016481600073ffffffffffffffffffffffffffffffffffffffff89165af1801561044157600090610c18575b60019250610c118288611514565b5201610931565b506020823d602011610c43575b81610c32602093836112e0565b810103126104345760019151610c03565b3d9150610c25565b6001906fffffffffffffffffffffffffffffffff610c7360406101d7868b600401358a611528565b16019101906108f3565b3461043457610c8b366110e9565b929093831561109e57506000805b84821061107057610cc291508373ffffffffffffffffffffffffffffffffffffffff841661158a565b610ccb83611339565b9360005b848110610ce4576040518061012c8882611184565b60e0610cf18287856111e3565b0190610d03608061015d8389876111e3565b91610d14602061018e848a886111e3565b92610d2d610d23848a886111e3565b60c08101906113b6565b9091610d3d6101a9868c8a6111e3565b936060610d4b878d8b6111e3565b01359464ffffffffff861686036104345788610d7e60a061015d8f80610d7860406101d78f80958a6111e3565b956111e3565b96604051998a61012081011067ffffffffffffffff6101208d0111176110415773ffffffffffffffffffffffffffffffffffffffff908b99610e3999989764ffffffffff6fffffffffffffffffffffffffffffffff96956101009f86610e2d9b9a61012083016040521690521660208d0152151560408c0152151560608b01521660808901521660a087015273ffffffffffffffffffffffffffffffffffffffff8b1660c0870152369061140a565b60e08501523691611462565b838201526040519283917fc33cd35e0000000000000000000000000000000000000000000000000000000083526020600484015273ffffffffffffffffffffffffffffffffffffffff815116602484015264ffffffffff602082015116604484015260408101511515606484015260608101511515608484015273ffffffffffffffffffffffffffffffffffffffff60808201511660a48401526fffffffffffffffffffffffffffffffff60a08201511660c484015273ffffffffffffffffffffffffffffffffffffffff60c08201511660e4840152610f4260e08201516101048501906020809173ffffffffffffffffffffffffffffffffffffffff81511684520151910152565b0151610140610144830152805180610164840152602061018484019201906000905b808210610fe65750505090806020920381600073ffffffffffffffffffffffffffffffffffffffff89165af1801561044157600090610fb3575b60019250610fac8289611514565b5201610ccf565b506020823d602011610fde575b81610fcd602093836112e0565b810103126104345760019151610f9e565b3d9150610fc0565b919350916020606082611033600194885164ffffffffff604080926fffffffffffffffffffffffffffffffff815116855267ffffffffffffffff6020820151166020860152015116910152565b019401920185939291610f64565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001906fffffffffffffffffffffffffffffffff61109460406101d7868a8c6111e3565b1601910190610c99565b807f763e559d0000000000000000000000000000000000000000000000000000000060049252fd5b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361043457565b9060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126104345773ffffffffffffffffffffffffffffffffffffffff91600435838116810361043457926024359081168103610434579160443567ffffffffffffffff9283821161043457806023830112156104345781600401359384116104345760248460051b83010111610434576024019190565b602090602060408183019282815285518094520193019160005b8281106111ac575050505090565b83518552938101939281019260010161119e565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361043457565b91908110156112235760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee181360301821215610434570190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b356fffffffffffffffffffffffffffffffff811681036104345790565b610100810190811067ffffffffffffffff82111761104157604052565b6060810190811067ffffffffffffffff82111761104157604052565b6040810190811067ffffffffffffffff82111761104157604052565b6080810190811067ffffffffffffffff82111761104157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761104157604052565b67ffffffffffffffff81116110415760051b60200190565b9061134382611321565b61135060405191826112e0565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061137e8294611321565b0190602036910137565b3580151581036104345790565b3573ffffffffffffffffffffffffffffffffffffffff811681036104345790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610434570180359067ffffffffffffffff82116104345760200191606082023603831361043457565b919082604091031261043457604051611422816112a8565b8092803573ffffffffffffffffffffffffffffffffffffffff81168103610434578252602090810135910152565b359064ffffffffff8216820361043457565b92919261146e82611321565b60409461147e60405192836112e0565b8195848352602080930191606080960285019481861161043457925b8584106114aa5750505050505050565b8684830312610434578251906114bf8261128c565b84356fffffffffffffffffffffffffffffffff81168103610434578252858501359067ffffffffffffffff8216820361043457828792838b950152611505868801611450565b8682015281520193019261149a565b80518210156112235760209160051b010190565b919081101561122357610140020190565b91908110156112235760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0181360301821215610434570190565b919081101561122357610120020190565b90604080516020907f23b872dd000000000000000000000000000000000000000000000000000000008282015233602482015260449030828201528660648201526064815260a081019080821067ffffffffffffffff831117611041576115f39185528561179c565b73ffffffffffffffffffffffffffffffffffffffff94858516958451917fdd62ed3e0000000000000000000000000000000000000000000000000000000083523060048401521690816024820152838184818a5afa90811561177957908891600091611748575b501061166a575b50505050505050565b8351956000808589017f095ea7b3000000000000000000000000000000000000000000000000000000009a8b82528560248c0152868b0152858a526116ae8a6112c4565b89519082855af1906116be6118bc565b82611715575b508161170a575b50611661576116fe966116f9945193840152602483015260008183015281526116f3816112c4565b8261179c565b61179c565b38808080808080611661565b90503b1515386116cb565b809192505190858215928315611730575b50505090386116c4565b6117409350820181019101611784565b388581611726565b809250858092503d8311611772575b61176181836112e0565b81010312610434578790513861165a565b503d611757565b85513d6000823e3d90fd5b90816020910312610434575180151581036104345790565b6040516118079173ffffffffffffffffffffffffffffffffffffffff166117c2826112a8565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af16118016118bc565b9161191a565b8051908282159283156118a4575b505050156118205750565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6118b49350820181019101611784565b388281611815565b3d15611915573d9067ffffffffffffffff8211611041576040519161190960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846112e0565b82523d6000602084013e565b606090565b91929015611995575081511561192e575090565b3b156119375790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156119a85750805190602001fd5b604051907f08c379a000000000000000000000000000000000000000000000000000000000825281602080600483015282519283602484015260005b848110611a25575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f836000604480968601015201168101030190fd5b8181018301518682016044015285935082016119e456fea164736f6c6343000817000a"; bytes public constant BYTECODE_MERKLE_STREAMER_FACTORY = hex"6080806040523461001657611d39908161001c8239f35b600080fdfe600436101561000d57600080fd5b60003560e01c6373b01dbb1461002257600080fd5b3461053b576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261053b5773ffffffffffffffffffffffffffffffffffffffff600435166004350361053b5773ffffffffffffffffffffffffffffffffffffffff602435166024350361053b5773ffffffffffffffffffffffffffffffffffffffff604435166044350361053b5764ffffffffff608435166084350361053b5760407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c36011261053b5760c060405260a43564ffffffffff8116810361053b5760805264ffffffffff60c4351660c4350361053b5760c43560a05260e435801515810361053b5761010435801515810361053b5767ffffffffffffffff610124351161053b573660236101243501121561053b5767ffffffffffffffff61012435600401351161050c57604051906101ae60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f610124356004013501160183610540565b600461012435908101358084523691016024011161053b5761012435600401356024610124350160208401376000602061012435600401358401015260405161020f6020820160806020908164ffffffffff91828151168552015116910152565b6040815280606081011067ffffffffffffffff60608301111761050c5760608101604052606060808201917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000080600435841b16845280602435841b166094830152604435831b1660a882015260643560bc8201527fffffffffff00000000000000000000000000000000000000000000000000000060843560d81b1660dc8201526102f56023838380516102ca8160e1840160208501610581565b81018a151560f81b60e182015288151560f81b60e28201520301600381018585015201838301610540565b015190206040518061178881011067ffffffffffffffff6117888301111761050c576117886105a5823973ffffffffffffffffffffffffffffffffffffffff60043581166117888301908152602435821660208201526044359091166040820152606435606082015264ffffffffff608435811660808084019190915251811660a080840191909152511660c082015285151560e08201528315156101008201526101209082900301906000f591821561050057602093604051926101409173ffffffffffffffffffffffffffffffffffffffff861685526064358786015264ffffffffff6084351660408601526104056060860160806020908164ffffffffff91828151168552015116910152565b151560a0850152151560c08401528060e0840152815180918401526104338161016093878587019101610581565b61014435610100840152610164356101208401527fb2f6bc588a802f2ce7f8dec57a5096c107d2fc000d5b4cc65745a2c0e232349c73ffffffffffffffffffffffffffffffffffffffff604435169373ffffffffffffffffffffffffffffffffffffffff6024351693817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f73ffffffffffffffffffffffffffffffffffffffff600435169601168101030190a473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d6000823e3d90fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761050c57604052565b60005b8381106105945750506000910152565b818101518382015260200161058456fe610160604081815234620002e0578162001788803803809162000023828562000301565b833981010361012091828212620002e05783516001600160a01b038082169391849003620002e057602090818701519481861693848703620002e0578589015192831692838103620002e05760608a015190876200008460808d0162000325565b93609f190112620002e0578751918289016001600160401b03811184821017620002ca578952620000b860a08d0162000325565b8352620000c860c08d0162000325565b83880190815293620000dd60e08e0162000338565b91610100809e01620000ef9062000338565b93600097600160a01b60019003198954161788556080528960e0528d5260c05260a05289526101409788525164ffffffffff16600254915160281b69ffffffffff00000000001691600160501b600190031916171760025584519280840191808063095ea7b360e01b948581528860248901526000196044890152604488526200017988620002e5565b87519082885af16200018a62000346565b8162000288575b50806200027d575b156200023b575b505050505050519161121b93846200056d8539608051848181610377015281816106460152610cc4015260a0518481816107320152610bb0015260c05184818161015101528181610afc01528181610f1b01526110b7015260e05184818161020e015281816105d00152610c63015251838181610327015261056801525182818161075a0152610b730152518181816101a201526108cd0152f35b62000271956200026b9388519384015260248301526044820152604481526200026481620002e5565b8262000389565b62000389565b388080808080620001a0565b50833b151562000199565b80915051838115918215620002a3575b505090503862000191565b8380929350010312620002c65782620002bd910162000338565b80833862000298565b5080fd5b634e487b7160e01b600052604160045260246000fd5b600080fd5b608081019081106001600160401b03821117620002ca57604052565b601f909101601f19168101906001600160401b03821190821017620002ca57604052565b519064ffffffffff82168203620002e057565b51908115158203620002e057565b3d1562000384573d906001600160401b038211620002ca576040519162000378601f8201601f19166020018462000301565b82523d6000602084013e565b606090565b60408051908101916001600160a01b03166001600160401b03831182841017620002ca57620003fd926040526000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1620003f662000346565b9162000492565b80518281159182156200046f575b5050905015620004185750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b8380929350010312620002e0578162000489910162000338565b8082386200040b565b91929015620004f75750815115620004a8575090565b3b15620004b25790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156200050b5750805190602001fd5b6040519062461bcd60e51b82528160208060048301528251908160248401526000935b82851062000552575050604492506000838284010152601f80199101168101030190fd5b84810182015186860160440152938101938593506200052e56fe608080604052600436101561001357600080fd5b60003560e01c9081631686c90914610bd55750806316c3549d14610b985780631bfd681414610b5b5780633bfe03a814610b2c5780633f31ae3f1461039b5780634800d97f1461034a57806351e75e8b1461030f57806375829def14610232578063845aef4b146101e157806390e64d13146101c65780639e93e57714610175578063bb4b573414610133578063ce516507146100f25763f851a440146100b957600080fd5b346100ed5760006003193601126100ed57602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b600080fd5b346100ed5760206003193601126100ed57602061012960043560ff6001918060081c60005282602052161b60406000205416151590565b6040519015158152f35b346100ed5760006003193601126100ed57602060405164ffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100ed5760006003193601126100ed57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100ed5760006003193601126100ed5760206101296110af565b346100ed5760006003193601126100ed57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100ed5760206003193601126100ed5761024b610fe7565b60005473ffffffffffffffffffffffffffffffffffffffff808216923384036102c2577fffffffffffffffffffffffff00000000000000000000000000000000000000009350169182911617600055337fbdd36143ee09de60bdefca70680e0f71189b2ed7acee364b53917ad433fdaf80600080a3005b6040517fc6cce6a400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152336024820152604490fd5b346100ed5760006003193601126100ed5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100ed5760006003193601126100ed57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100ed5760806003193601126100ed5760243573ffffffffffffffffffffffffffffffffffffffff811681036100ed57604435906fffffffffffffffffffffffffffffffff821682036100ed5767ffffffffffffffff606435116100ed573660236064350112156100ed5767ffffffffffffffff60643560040135116100ed573660246064356004013560051b6064350101116100ed576040516020810190600435825273ffffffffffffffffffffffffffffffffffffffff831660408201526fffffffffffffffffffffffffffffffff841660608201526060815261048181611026565b519020604051602081019182526020815261049b8161100a565b519020916104a76110af565b610ace576104cf60043560ff6001918060081c60005282602052161b60406000205416151590565b610a9c57604051926104ed60206064356004013560051b0185611042565b60643560048101358552602401602085015b60246064356004013560051b60643501018210610a8c575050906000915b84518310156105645760208360051b860101519081811060001461055157600052602052600160406000205b92019161051d565b9060005260205260016040600020610549565b83907f000000000000000000000000000000000000000000000000000000000000000003610a6257604051907f5fe3b56700000000000000000000000000000000000000000000000000000000825260208260048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa91821561099a57600092610a31575b506040517fdcf844a700000000000000000000000000000000000000000000000000000000815260208160248173ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001697886004840152165afa90811561099a576000916109ff575b506109d55760043560081c60005260016020526040600020600160ff600435161b81541790556040516106b18161100a565b600081526000602082015273ffffffffffffffffffffffffffffffffffffffff600054169260405193610100850185811067ffffffffffffffff8211176109a657604052845273ffffffffffffffffffffffffffffffffffffffff831660208501526fffffffffffffffffffffffffffffffff8516604085015260608401527f0000000000000000000000000000000000000000000000000000000000000000151560808401527f0000000000000000000000000000000000000000000000000000000000000000151560a084015260405161078c8161100a565b64ffffffffff600254818116835260281c16602082015260c084015260e0830152602060e0604051937fab167ccc00000000000000000000000000000000000000000000000000000000855273ffffffffffffffffffffffffffffffffffffffff815116600486015273ffffffffffffffffffffffffffffffffffffffff838201511660248601526fffffffffffffffffffffffffffffffff604082015116604486015273ffffffffffffffffffffffffffffffffffffffff606082015116606486015260808101511515608486015260a0810151151560a486015264ffffffffff8360c08301518281511660c489015201511660e4860152015173ffffffffffffffffffffffffffffffffffffffff815116610104850152015161012483015260208261014481600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af191821561099a57600092610965575b506020927f28b58397e03322f670d6b223cc863f8c148e368b8b615412e6798a641a22842d604073ffffffffffffffffffffffffffffffffffffffff85946fffffffffffffffffffffffffffffffff835195600435875216888601521692a3604051908152f35b91506020823d602011610992575b8161098060209383611042565b810103126100ed5790519060206108fe565b3d9150610973565b6040513d6000823e3d90fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60046040517fa4432b51000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610a29575b81610a1a60209383611042565b810103126100ed57518461067f565b3d9150610a0d565b610a5491925060203d602011610a5b575b610a4c8183611042565b810190611083565b9083610601565b503d610a42565b60046040517fb3f3b2a6000000000000000000000000000000000000000000000000000000008152fd5b81358152602091820191016104ff565b60246040517f3548783b0000000000000000000000000000000000000000000000000000000081526004356004820152fd5b6040517f74b43bd00000000000000000000000000000000000000000000000000000000081524260048201527f000000000000000000000000000000000000000000000000000000000000000064ffffffffff166024820152604490fd5b346100ed5760006003193601126100ed57604060025464ffffffffff825191818116835260281c166020820152f35b346100ed5760006003193601126100ed5760206040517f000000000000000000000000000000000000000000000000000000000000000015158152f35b346100ed5760006003193601126100ed5760206040517f000000000000000000000000000000000000000000000000000000000000000015158152f35b346100ed5760406003193601126100ed57610bee610fe7565b90602435906fffffffffffffffffffffffffffffffff82168092036100ed5773ffffffffffffffffffffffffffffffffffffffff908160005416338103610f9e575050604051907f5fe3b5670000000000000000000000000000000000000000000000000000000082526020918281600481857f0000000000000000000000000000000000000000000000000000000000000000165afa90811561099a57600091610f81575b506040517fdcf844a7000000000000000000000000000000000000000000000000000000008152838160248186807f00000000000000000000000000000000000000000000000000000000000000001696876004840152165afa90811561099a57600091610f54575b50610d066110af565b159081610f4b575b50610eed5760405160008084868401987fa9059cbb000000000000000000000000000000000000000000000000000000008a52169788602485015287604485015260448452610d5c84611026565b60405193610d698561100a565b8785527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488860152519082865af13d15610ee0573d9067ffffffffffffffff82116109a657610df59360405192610de7887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160185611042565b83523d60008885013e6110ec565b8051838115918215610ec0575b5050905015610e3c57907f2e9d425ba8b27655048400b366d7b6a1f7180ebdb088e06bb7389704860ffe1f916000541692604051908152a3005b608482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b83809293500103126100ed5782015180151581036100ed57808387610e02565b91610df5926060916110ec565b6040517f1351f21d0000000000000000000000000000000000000000000000000000000081524260048201527f000000000000000000000000000000000000000000000000000000000000000064ffffffffff166024820152604490fd5b90501586610d0e565b90508381813d8311610f7a575b610f6b8183611042565b810103126100ed575186610cfd565b503d610f61565b610f989150833d8511610a5b57610a4c8183611042565b85610c94565b7fc6cce6a400000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff166004820152336024820152604490fd5b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100ed57565b6040810190811067ffffffffffffffff8211176109a657604052565b6080810190811067ffffffffffffffff8211176109a657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176109a657604052565b908160209103126100ed575173ffffffffffffffffffffffffffffffffffffffff811681036100ed5790565b64ffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680151590816110e4575090565b905042101590565b919290156111675750815115611100575090565b3b156111095790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b82519091501561117a5750805190602001fd5b604051907f08c379a000000000000000000000000000000000000000000000000000000000825281602080600483015282519283602484015260005b8481106111f7575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f836000604480968601015201168101030190fd5b8181018301518682016044015285935082016111b656fea164736f6c6343000817000aa164736f6c6343000817000a";