diff --git a/crates/test_fixtures/abis/RaindexV6SubParser.json b/crates/test_fixtures/abis/RaindexV6SubParser.json index 7763b2e760..cdbb227891 100644 --- a/crates/test_fixtures/abis/RaindexV6SubParser.json +++ b/crates/test_fixtures/abis/RaindexV6SubParser.json @@ -258,7 +258,7 @@ } ], "bytecode": { - "object": "0x6080604052348015600e575f80fd5b506125d38061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c80636f5aa28d116100585780636f5aa28d146100dd578063c6c0cbb61461010b578063ccf4477514610135578063d6d8c9a814610148575f80fd5b806301ffc9a71461007e578063336284d4146100a6578063570c7a63146100bb575b5f80fd5b61009161008c3660046122ad565b610150565b60405190151581526020015b60405180910390f35b6100ae6101d7565b60405161009d9190612309565b6100ce6100c936600461232f565b610bc5565b60405161009d939291906123d9565b6040517ff2d0eca454c544ab10f9991c019349475a416e38494f112a50807174c3000d0b815260200161009d565b61011e61011936600461232f565b610d09565b60408051921515835260208301919091520161009d565b60408051602081019091525f81526100ae565b6100ae610d41565b5f6001600160e01b031982166391ccb1d560e01b148061018057506001600160e01b03198216636f5aa28d60e01b145b8061019b57506001600160e01b03198216631a2c8edd60e01b145b806101b657506001600160e01b03198216630cd8a13560e21b145b806101d157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f6101e660046001612436565b6101f1906002612436565b6101fc906001612436565b610207906001612436565b6001600160401b0381111561021e5761021e61231b565b60405190808252806020026020018201604052801561025157816020015b606081526020019060019003908161023c5790505b50604080516002808252606082019092529192505f9190816020015b6122a381526020019060019003908161026d5790505090506116cc815f8151811061029a5761029a612455565b60200260200101906001600160401b031690816001600160401b0316815250506116e9816001815181106102d0576102d0612455565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122a38152602001906001900390816103005790505090506116f8815f8151811061032d5761032d612455565b60200260200101906001600160401b031690816001600160401b0316815250506117078160018151811061036357610363612455565b60200260200101906001600160401b031690816001600160401b0316815250506117168160028151811061039957610399612455565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122a38152602001906001900390816103c9579050509050611726815f815181106103f6576103f6612455565b60200260200101906001600160401b031690816001600160401b0316815250506117358160018151811061042c5761042c612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a381526020019060019003908161045c579050509050611745815f8151811061048957610489612455565b60200260200101906001600160401b031690816001600160401b031681525050611754816001815181106104bf576104bf612455565b60200260200101906001600160401b031690816001600160401b031681525050611764816002815181106104f5576104f5612455565b60200260200101906001600160401b031690816001600160401b0316815250506117748160038151811061052b5761052b612455565b60200260200101906001600160401b031690816001600160401b0316815250506117838160048151811061056157610561612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a3815260200190600190039081610591579050509050611793815f815181106105be576105be612455565b60200260200101906001600160401b031690816001600160401b0316815250506117a2816001815181106105f4576105f4612455565b60200260200101906001600160401b031690816001600160401b0316815250506117b28160028151811061062a5761062a612455565b60200260200101906001600160401b031690816001600160401b0316815250506117c28160038151811061066057610660612455565b60200260200101906001600160401b031690816001600160401b0316815250506117d28160048151811061069657610696612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a38152602001906001900390816106c55790505090506117e1815f815181106106f2576106f2612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a38152602001906001900390816107215790505090506117f0815f8151811061074e5761074e612455565b60200260200101906001600160401b031690816001600160401b03168152505086885f8151811061078157610781612455565b602002602001018190525085886001815181106107a0576107a0612455565b602002602001018190525084886002815181106107bf576107bf612455565b602002602001018190525083886003815181106107de576107de612455565b602002602001018190525082886004815181106107fd576107fd612455565b6020026020010181905250818860058151811061081c5761081c612455565b6020026020010181905250808860068151811061083b5761083b612455565b602090810291909101015260408051600680825260e082019092525f91816020015b6122a381526020019060019003908161085d5790505090506116cc815f8151811061088a5761088a612455565b60200260200101906001600160401b031690816001600160401b0316815250506116f8816001815181106108c0576108c0612455565b60200260200101906001600160401b031690816001600160401b031681525050611707816002815181106108f6576108f6612455565b60200260200101906001600160401b031690816001600160401b0316815250506117168160038151811061092c5761092c612455565b60200260200101906001600160401b031690816001600160401b0316815250506118258160048151811061096257610962612455565b60200260200101906001600160401b031690816001600160401b0316815250506118358160058151811061099857610998612455565b6001600160401b039092166020928302919091019091015280896109be60066001612436565b815181106109ce576109ce612455565b602090810291909101015260408051600780825261010082019092525f91816020015b6122a38152602001906001900390816109f15790505090506116cc815f81518110610a1e57610a1e612455565b60200260200101906001600160401b031690816001600160401b0316815250506116f881600181518110610a5457610a54612455565b60200260200101906001600160401b031690816001600160401b03168152505061170781600281518110610a8a57610a8a612455565b60200260200101906001600160401b031690816001600160401b03168152505061171681600381518110610ac057610ac0612455565b60200260200101906001600160401b031690816001600160401b03168152505061182581600481518110610af657610af6612455565b60200260200101906001600160401b031690816001600160401b03168152505061183581600581518110610b2c57610b2c612455565b60200260200101906001600160401b031690816001600160401b03168152505061184581600681518110610b6257610b62612455565b6001600160401b0390921660209283029190910190910152808a610b8860066002612436565b81518110610b9857610b98612455565b602090810291909101015289610bb5610bb082611855565b6118b7565b9b50505050505050505050505090565b5f6060805f805f610be587610bd8611946565b610be0611966565b611986565b9250925092505f610bfb82610220015160200190565b90505f8261022001515182610c109190612436565b90505f610c2e83836f07fffffe0000000003ff200000000000611a77565b80925081945050505f80610c4786610240015184611b13565b915091508115610cdc575f610c5c8783611bea565b90506122a35f610c6a611c19565b90505f60028251610c7b919061247d565b9050808510610cac576040516303bdd1b160e51b815260048101869052602481018290526044015b60405180910390fd5b6001850160020282015161ffff169250610cc58c8c8686565b9e509e509e50505050505050505050505050610d02565b5050604080515f80825281830190925260208101828152919a5090985096505050505050505b9193909250565b5f805f805f610d31866002810151815160228084019461ffff93909316840101920160200190565b505f988998509650505050505050565b60605f610d5060046001612436565b610d5b906002612436565b610d66906001612436565b610d71906001612436565b6001600160401b03811115610d8857610d8861231b565b604051908082528060200260200182016040528015610dbb57816020015b6060815260200190600190039081610da65790505b50604080516002808252606082019092529192505f9190816020015b6122a3815260200190600190039081610dd7579050509050611c39815f81518110610e0457610e04612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600181518110610e3a57610e3a612455565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122a3815260200190600190039081610e6a579050509050611c39815f81518110610e9757610e97612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600181518110610ecd57610ecd612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600281518110610f0357610f03612455565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122a3815260200190600190039081610f33579050509050611c39815f81518110610f6057610f60612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600181518110610f9657610f96612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a3815260200190600190039081610fc6579050509050611c39815f81518110610ff357610ff3612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160018151811061102957611029612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160028151811061105f5761105f612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160038151811061109557611095612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816004815181106110cb576110cb612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a38152602001906001900390816110fb579050509050611c39815f8151811061112857611128612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160018151811061115e5761115e612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160028151811061119457611194612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816003815181106111ca576111ca612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160048151811061120057611200612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a381526020019060019003908161122f579050509050611c62815f8151811061125c5761125c612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a381526020019060019003908161128b579050509050611cfe815f815181106112b8576112b8612455565b60200260200101906001600160401b031690816001600160401b03168152505086885f815181106112eb576112eb612455565b6020026020010181905250858860018151811061130a5761130a612455565b6020026020010181905250848860028151811061132957611329612455565b6020026020010181905250838860038151811061134857611348612455565b6020026020010181905250828860048151811061136757611367612455565b6020026020010181905250818860058151811061138657611386612455565b602002602001018190525080886006815181106113a5576113a5612455565b602090810291909101015260408051600680825260e082019092525f91816020015b6122a38152602001906001900390816113c7579050509050611c39815f815181106113f4576113f4612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160018151811061142a5761142a612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160028151811061146057611460612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160038151811061149657611496612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816004815181106114cc576114cc612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160058151811061150257611502612455565b6001600160401b0390921660209283029190910190910152808961152860066001612436565b8151811061153857611538612455565b602090810291909101015260408051600780825261010082019092525f91816020015b6122a381526020019060019003908161155b579050509050611c39815f8151811061158857611588612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816001815181106115be576115be612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816002815181106115f4576115f4612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160038151811061162a5761162a612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160048151811061166057611660612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160058151811061169657611696612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600681518110610b6257610b62612455565b5f6060806116da5f80611db6565b92509250925093509350939050565b5f6060806116da5f6001611db6565b5f6060806116da60015f611db6565b5f6060806116da600180611db6565b5f6060806116da60016002611db6565b5f6060806116da60025f611db6565b5f6060806116da60026001611db6565b5f6060806116da60035f611db6565b5f6060806116da60036001611db6565b5f6060806116da60036002611db6565b5f6060806116da600380611db6565b5f6060806116da60036004611db6565b5f6060806116da60045f611db6565b5f6060806116da60046001611db6565b5f6060806116da60046002611db6565b5f6060806116da60046003611db6565b5f6060806116da600480611db6565b5f6060806116da600585611db6565b5f60608060ff80851690600886901c1661181461180e836006612436565b82611db6565b945094509450505093509350939050565b5f6060806116da60016003611db6565b5f6060806116da60016004611db6565b5f6060806116da60016005611db6565b60605f61186183611e38565b9050606060405190506020820260200181016040528181526020840160208551028101602083015b818310156118ac57602083515102806020855101835e6020939093019201611889565b509195945050505050565b60605f82516002026001600160401b038111156118d6576118d661231b565b6040519080825280601f01601f191660200182016040528015611900576020820181803683370190505b50905061ffff80196020850160208651028101600285015b8183101561193a57805183518616908516178152602090920191600201611918565b50939695505050505050565b60606040518060e0016040528060a281526020016124f160a29139905090565b606060405180606001604052806040815260200161259360409139905090565b5f80611a156040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b606061ffff600288015116935060ff600388015116925061ffff600588015116600588019750808852602081018801915050611a6187878760405180602001604052805f815250611e66565b915080826101e001819052505093509350939050565b5f808060018187870360208111611a8e5780611a91565b60205b915050875192505b8519600184841a1b16158183101615611ab757600182019150611a99565b9681019660208290036008810293841c90931b92611b025760408051602081018590520160408051601f198184030181529082905263e47fe8b760e01b8252610ca391600401612309565b50869350909150505b935093915050565b600182810180515f928392600560ff93909316602102870192830192909101835b81831015611bd85760018301516021909301805190935f90819060ff168180611b5d838e612017565b915091508186165f03611b7f575f809b509b5050505050505050505050611be3565b5f87611b8f600185038916612042565b016004028b015195505062ffffff9081169350841683039150611bc39050575060019750601c1a9550611be3945050505050565b611bcc83612042565b84019350505050611b34565b5f8095509550505050505b9250929050565b6101c08201516002828102820101516101e08401515f9261ffff9092169190611c109083565b95945050505050565b60606040518060600160405280604081526020016124b160409139905090565b5f81515f14611c5b576040516304f8b58160e51b815260040160405180910390fd5b505f919050565b5f8151600103611cbf575060208101516001600160e01b038116601b0b60e082901d5f611c908383836120fb565b905061ffff811115611cb557604051631e4e01d760e21b815260040160405180910390fd5b9250611cf9915050565b81515f03611ce057604051630f16066b60e41b815260040160405180910390fd5b604051630358cd2160e31b815260040160405180910390fd5b919050565b5f8151600203611d9357602082015160408301516001600160e01b038216601b0b60e083901d5f611d308383836120fb565b6001600160e01b038516601b0b935060e085901d925090505f611d548484836120fb565b905060ff821180611d65575060ff81115b15611d8357604051631e4e01d760e21b815260040160405180910390fd5b60081b179450611cf99350505050565b600282511015611ce057604051630f16066b60e41b815260040160405180910390fd5b5f60608060ff851180611dc9575060ff84115b15611df157604051639b0f326160e01b81526004810186905260248101859052604401610ca3565b6040805160248101909152600386602383015385602283015360106021830153806020830153506004815260408051602081019091525f8152600197919650945092505050565b5f60208201602083510281015b80821015611e5f5781515183019250602082019150611e45565b5050919050565b611ef36040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b5f6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f801b81526020015f8152602001600481526020015f81526020015f81526020015f81526020015f801b815260200184815260200185815260200160046001600160401b03811115611f7857611f7861231b565b604051908082528060200260200182016040528015611fa1578160200160208202803683370190505b5081525f602080830182905260408084018b905260609384018a90528051601f01601f19168281528083018252835161ffff191681178452855290840182905283018190529082018190526080820181905260a08201819052610120820181905261014082018190526102008201529050611c10565b5f80825f528360205360215f2090506001815f1a1b915062ffffff8116611be3575060019250929050565b5f5f1982036120545750610100919050565b507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f5555555555555555555555555555555555555555555555555555555555555555600183901c16909103600281901c7f3333333333333333333333333333333333333333333333333333333333333333908116911601600481901c01167f01010101010101010101010101010101010101010101010101010101010101010260f81c90565b5f805f61210986868661213d565b91509150806121345760405162bc8ecf60e31b81526004810187905260248101869052604401610ca3565b50949350505050565b5f805f85121561216a57604051634a7d166b60e01b81526004810186905260248101859052604401610ca3565b845f0361217c57505f90506001611b0b565b8460ff84168501858112156121ae5760405163d556b11160e01b81526004810188905260248101879052604401610ca3565b5f805f8312156121fa57604c198312156121d1575f809550955050505050611b0b565b825f03600a0a91508184816121e8576121e8612469565b0495505084029091149150611b0b9050565b5f83131561229357604d8313156122375760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b82600a0a9150815f198161224d5761224d612469565b048411156122815760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b5091909102925060019150611b0b9050565b8360019550955050505050611b0b565b6122ab61249c565b565b5f602082840312156122bd575f80fd5b81356001600160e01b0319811681146122d4575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6122d460208301846122db565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561233f575f80fd5b81356001600160401b0380821115612355575f80fd5b818401915084601f830112612368575f80fd5b81358181111561237a5761237a61231b565b604051601f8201601f19908116603f011681019083821181831017156123a2576123a261231b565b816040528281528760208487010111156123ba575f80fd5b826020860160208301375f928101602001929092525095945050505050565b83151581525f6020606060208401526123f560608401866122db565b8381036040850152845180825260208087019201905f5b818110156124285783518352928401929184019160010161240c565b509098975050505050505050565b808201808211156101d157634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261249757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52605160045260245ffdfe16cc16e916f8170717161726173517451754176417741783179317a217b217c217d217e117f016cc16f8170717161825183516cc16f8170717161825183518450101180010800082000100010480300038412a001810000010020004200004002038038ff54900cc66c61ff3dcab0616592209895f0b16fec9301b02e0920c5bfe561d21609201e959460b1974270f844db208bcd3bf1e989376111049db13b934301a0ae9a00af82a7805c138f40d28083f0742ef2104d561fd1415a13317716a6119d260cc107b9bfc0eec7ade15cba2891c6b14a512792bdb02e0f147185655891c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c621cfe1c391c391c391c391c391c391c391c391c391c391c391c391c39", + "object": "0x6080604052348015600e575f80fd5b506125e78061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c80636f5aa28d116100585780636f5aa28d146100dd578063c6c0cbb61461010b578063ccf4477514610135578063d6d8c9a814610148575f80fd5b806301ffc9a71461007e578063336284d4146100a6578063570c7a63146100bb575b5f80fd5b61009161008c3660046122c1565b610150565b60405190151581526020015b60405180910390f35b6100ae6101d7565b60405161009d919061231d565b6100ce6100c9366004612343565b610bc5565b60405161009d939291906123ed565b6040517ff2d0eca454c544ab10f9991c019349475a416e38494f112a50807174c3000d0b815260200161009d565b61011e610119366004612343565b610d09565b60408051921515835260208301919091520161009d565b60408051602081019091525f81526100ae565b6100ae610d41565b5f6001600160e01b031982166391ccb1d560e01b148061018057506001600160e01b03198216636f5aa28d60e01b145b8061019b57506001600160e01b03198216631a2c8edd60e01b145b806101b657506001600160e01b03198216630cd8a13560e21b145b806101d157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f6101e66004600161244a565b6101f190600261244a565b6101fc90600161244a565b61020790600161244a565b6001600160401b0381111561021e5761021e61232f565b60405190808252806020026020018201604052801561025157816020015b606081526020019060019003908161023c5790505b50604080516002808252606082019092529192505f9190816020015b6122b781526020019060019003908161026d5790505090506116cc815f8151811061029a5761029a612469565b60200260200101906001600160401b031690816001600160401b0316815250506116e9816001815181106102d0576102d0612469565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122b78152602001906001900390816103005790505090506116f8815f8151811061032d5761032d612469565b60200260200101906001600160401b031690816001600160401b0316815250506117078160018151811061036357610363612469565b60200260200101906001600160401b031690816001600160401b0316815250506117168160028151811061039957610399612469565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122b78152602001906001900390816103c9579050509050611726815f815181106103f6576103f6612469565b60200260200101906001600160401b031690816001600160401b0316815250506117358160018151811061042c5761042c612469565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122b781526020019060019003908161045c579050509050611745815f8151811061048957610489612469565b60200260200101906001600160401b031690816001600160401b031681525050611754816001815181106104bf576104bf612469565b60200260200101906001600160401b031690816001600160401b031681525050611764816002815181106104f5576104f5612469565b60200260200101906001600160401b031690816001600160401b0316815250506117748160038151811061052b5761052b612469565b60200260200101906001600160401b031690816001600160401b0316815250506117838160048151811061056157610561612469565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122b7815260200190600190039081610591579050509050611793815f815181106105be576105be612469565b60200260200101906001600160401b031690816001600160401b0316815250506117a2816001815181106105f4576105f4612469565b60200260200101906001600160401b031690816001600160401b0316815250506117b28160028151811061062a5761062a612469565b60200260200101906001600160401b031690816001600160401b0316815250506117c28160038151811061066057610660612469565b60200260200101906001600160401b031690816001600160401b0316815250506117d28160048151811061069657610696612469565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122b78152602001906001900390816106c55790505090506117e1815f815181106106f2576106f2612469565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122b7815260200190600190039081610721579050509050611804815f8151811061074e5761074e612469565b60200260200101906001600160401b031690816001600160401b03168152505086885f8151811061078157610781612469565b602002602001018190525085886001815181106107a0576107a0612469565b602002602001018190525084886002815181106107bf576107bf612469565b602002602001018190525083886003815181106107de576107de612469565b602002602001018190525082886004815181106107fd576107fd612469565b6020026020010181905250818860058151811061081c5761081c612469565b6020026020010181905250808860068151811061083b5761083b612469565b602090810291909101015260408051600680825260e082019092525f91816020015b6122b781526020019060019003908161085d5790505090506116cc815f8151811061088a5761088a612469565b60200260200101906001600160401b031690816001600160401b0316815250506116f8816001815181106108c0576108c0612469565b60200260200101906001600160401b031690816001600160401b031681525050611707816002815181106108f6576108f6612469565b60200260200101906001600160401b031690816001600160401b0316815250506117168160038151811061092c5761092c612469565b60200260200101906001600160401b031690816001600160401b0316815250506118398160048151811061096257610962612469565b60200260200101906001600160401b031690816001600160401b0316815250506118498160058151811061099857610998612469565b6001600160401b039092166020928302919091019091015280896109be6006600161244a565b815181106109ce576109ce612469565b602090810291909101015260408051600780825261010082019092525f91816020015b6122b78152602001906001900390816109f15790505090506116cc815f81518110610a1e57610a1e612469565b60200260200101906001600160401b031690816001600160401b0316815250506116f881600181518110610a5457610a54612469565b60200260200101906001600160401b031690816001600160401b03168152505061170781600281518110610a8a57610a8a612469565b60200260200101906001600160401b031690816001600160401b03168152505061171681600381518110610ac057610ac0612469565b60200260200101906001600160401b031690816001600160401b03168152505061183981600481518110610af657610af6612469565b60200260200101906001600160401b031690816001600160401b03168152505061184981600581518110610b2c57610b2c612469565b60200260200101906001600160401b031690816001600160401b03168152505061185981600681518110610b6257610b62612469565b6001600160401b0390921660209283029190910190910152808a610b886006600261244a565b81518110610b9857610b98612469565b602090810291909101015289610bb5610bb082611869565b6118cb565b9b50505050505050505050505090565b5f6060805f805f610be587610bd861195a565b610be061197a565b61199a565b9250925092505f610bfb82610220015160200190565b90505f8261022001515182610c10919061244a565b90505f610c2e83836f07fffffe0000000003ff200000000000611a8b565b80925081945050505f80610c4786610240015184611b27565b915091508115610cdc575f610c5c8783611bfe565b90506122b75f610c6a611c2d565b90505f60028251610c7b9190612491565b9050808510610cac576040516303bdd1b160e51b815260048101869052602481018290526044015b60405180910390fd5b6001850160020282015161ffff169250610cc58c8c8686565b9e509e509e50505050505050505050505050610d02565b5050604080515f80825281830190925260208101828152919a5090985096505050505050505b9193909250565b5f805f805f610d31866002810151815160228084019461ffff93909316840101920160200190565b505f988998509650505050505050565b60605f610d506004600161244a565b610d5b90600261244a565b610d6690600161244a565b610d7190600161244a565b6001600160401b03811115610d8857610d8861232f565b604051908082528060200260200182016040528015610dbb57816020015b6060815260200190600190039081610da65790505b50604080516002808252606082019092529192505f9190816020015b6122b7815260200190600190039081610dd7579050509050611c4d815f81518110610e0457610e04612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d81600181518110610e3a57610e3a612469565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122b7815260200190600190039081610e6a579050509050611c4d815f81518110610e9757610e97612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d81600181518110610ecd57610ecd612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d81600281518110610f0357610f03612469565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122b7815260200190600190039081610f33579050509050611c4d815f81518110610f6057610f60612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d81600181518110610f9657610f96612469565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122b7815260200190600190039081610fc6579050509050611c4d815f81518110610ff357610ff3612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160018151811061102957611029612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160028151811061105f5761105f612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160038151811061109557611095612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d816004815181106110cb576110cb612469565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122b78152602001906001900390816110fb579050509050611c4d815f8151811061112857611128612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160018151811061115e5761115e612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160028151811061119457611194612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d816003815181106111ca576111ca612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160048151811061120057611200612469565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122b781526020019060019003908161122f579050509050611c76815f8151811061125c5761125c612469565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122b781526020019060019003908161128b579050509050611d12815f815181106112b8576112b8612469565b60200260200101906001600160401b031690816001600160401b03168152505086885f815181106112eb576112eb612469565b6020026020010181905250858860018151811061130a5761130a612469565b6020026020010181905250848860028151811061132957611329612469565b6020026020010181905250838860038151811061134857611348612469565b6020026020010181905250828860048151811061136757611367612469565b6020026020010181905250818860058151811061138657611386612469565b602002602001018190525080886006815181106113a5576113a5612469565b602090810291909101015260408051600680825260e082019092525f91816020015b6122b78152602001906001900390816113c7579050509050611c4d815f815181106113f4576113f4612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160018151811061142a5761142a612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160028151811061146057611460612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160038151811061149657611496612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d816004815181106114cc576114cc612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160058151811061150257611502612469565b6001600160401b039092166020928302919091019091015280896115286006600161244a565b8151811061153857611538612469565b602090810291909101015260408051600780825261010082019092525f91816020015b6122b781526020019060019003908161155b579050509050611c4d815f8151811061158857611588612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d816001815181106115be576115be612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d816002815181106115f4576115f4612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160038151811061162a5761162a612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160048151811061166057611660612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160058151811061169657611696612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d81600681518110610b6257610b62612469565b5f6060806116da5f80611dca565b92509250925093509350939050565b5f6060806116da5f6001611dca565b5f6060806116da60015f611dca565b5f6060806116da600180611dca565b5f6060806116da60016002611dca565b5f6060806116da60025f611dca565b5f6060806116da60026001611dca565b5f6060806116da60035f611dca565b5f6060806116da60036001611dca565b5f6060806116da60036002611dca565b5f6060806116da600380611dca565b5f6060806116da60036004611dca565b5f6060806116da60045f611dca565b5f6060806116da60046001611dca565b5f6060806116da60046002611dca565b5f6060806116da60046003611dca565b5f6060806116da600480611dca565b5f60608060ff84166117f4600582611dca565b9350935093505093509350939050565b5f60608060ff80851690600886901c1661182861182283600661244a565b82611dca565b945094509450505093509350939050565b5f6060806116da60016003611dca565b5f6060806116da60016004611dca565b5f6060806116da60016005611dca565b60605f61187583611e4c565b9050606060405190506020820260200181016040528181526020840160208551028101602083015b818310156118c057602083515102806020855101835e602093909301920161189d565b509195945050505050565b60605f82516002026001600160401b038111156118ea576118ea61232f565b6040519080825280601f01601f191660200182016040528015611914576020820181803683370190505b50905061ffff80196020850160208651028101600285015b8183101561194e5780518351861690851617815260209092019160020161192c565b50939695505050505050565b60606040518060e0016040528060a281526020016124c560a29139905090565b606060405180606001604052806040815260200161256760409139905090565b5f80611a296040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b606061ffff600288015116935060ff600388015116925061ffff600588015116600588019750808852602081018801915050611a7587878760405180602001604052805f815250611e7a565b915080826101e001819052505093509350939050565b5f808060018187870360208111611aa25780611aa5565b60205b915050875192505b8519600184841a1b16158183101615611acb57600182019150611aad565b9681019660208290036008810293841c90931b92611b165760408051602081018590520160408051601f198184030181529082905263e47fe8b760e01b8252610ca39160040161231d565b50869350909150505b935093915050565b600182810180515f928392600560ff93909316602102870192830192909101835b81831015611bec5760018301516021909301805190935f90819060ff168180611b71838e61202b565b915091508186165f03611b93575f809b509b5050505050505050505050611bf7565b5f87611ba3600185038916612056565b016004028b015195505062ffffff9081169350841683039150611bd79050575060019750601c1a9550611bf7945050505050565b611be083612056565b84019350505050611b48565b5f8095509550505050505b9250929050565b6101c08201516002828102820101516101e08401515f9261ffff9092169190611c249083565b95945050505050565b60606040518060600160405280604081526020016125a760409139905090565b5f81515f14611c6f576040516304f8b58160e51b815260040160405180910390fd5b505f919050565b5f8151600103611cd3575060208101516001600160e01b038116601b0b60e082901d5f611ca483838361210f565b905061ffff811115611cc957604051631e4e01d760e21b815260040160405180910390fd5b9250611d0d915050565b81515f03611cf457604051630f16066b60e41b815260040160405180910390fd5b604051630358cd2160e31b815260040160405180910390fd5b919050565b5f8151600203611da757602082015160408301516001600160e01b038216601b0b60e083901d5f611d4483838361210f565b6001600160e01b038516601b0b935060e085901d925090505f611d6884848361210f565b905060ff821180611d79575060ff81115b15611d9757604051631e4e01d760e21b815260040160405180910390fd5b60081b179450611d0d9350505050565b600282511015611cf457604051630f16066b60e41b815260040160405180910390fd5b5f60608060ff851180611ddd575060ff84115b15611e0557604051639b0f326160e01b81526004810186905260248101859052604401610ca3565b6040805160248101909152600386602383015385602283015360106021830153806020830153506004815260408051602081019091525f8152600197919650945092505050565b5f60208201602083510281015b80821015611e735781515183019250602082019150611e59565b5050919050565b611f076040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b5f6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f801b81526020015f8152602001600481526020015f81526020015f81526020015f81526020015f801b815260200184815260200185815260200160046001600160401b03811115611f8c57611f8c61232f565b604051908082528060200260200182016040528015611fb5578160200160208202803683370190505b5081525f602080830182905260408084018b905260609384018a90528051601f01601f19168281528083018252835161ffff191681178452855290840182905283018190529082018190526080820181905260a08201819052610120820181905261014082018190526102008201529050611c24565b5f80825f528360205360215f2090506001815f1a1b915062ffffff8116611bf7575060019250929050565b5f5f1982036120685750610100919050565b507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f5555555555555555555555555555555555555555555555555555555555555555600183901c16909103600281901c7f3333333333333333333333333333333333333333333333333333333333333333908116911601600481901c01167f01010101010101010101010101010101010101010101010101010101010101010260f81c90565b5f805f61211d868686612151565b91509150806121485760405162bc8ecf60e31b81526004810187905260248101869052604401610ca3565b50949350505050565b5f805f85121561217e57604051634a7d166b60e01b81526004810186905260248101859052604401610ca3565b845f0361219057505f90506001611b1f565b8460ff84168501858112156121c25760405163d556b11160e01b81526004810188905260248101879052604401610ca3565b5f805f83121561220e57604c198312156121e5575f809550955050505050611b1f565b825f03600a0a91508184816121fc576121fc61247d565b0495505084029091149150611b1f9050565b5f8313156122a757604d83131561224b5760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b82600a0a9150815f19816122615761226161247d565b048411156122955760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b5091909102925060019150611b1f9050565b8360019550955050505050611b1f565b6122bf6124b0565b565b5f602082840312156122d1575f80fd5b81356001600160e01b0319811681146122e8575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6122e860208301846122ef565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215612353575f80fd5b81356001600160401b0380821115612369575f80fd5b818401915084601f83011261237c575f80fd5b81358181111561238e5761238e61232f565b604051601f8201601f19908116603f011681019083821181831017156123b6576123b661232f565b816040528281528760208487010111156123ce575f80fd5b826020860160208301375f928101602001929092525095945050505050565b83151581525f60206060602084015261240960608401866122ef565b8381036040850152845180825260208087019201905f5b8181101561243c57835183529284019291840191600101612420565b509098975050505050505050565b808201808211156101d157634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f826124ab57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52605160045260245ffdfe0101180010800082000100010480300038412a001810000010020004200004002038038ff54900cc66c61ff3dcab0616592209895f0b16fec9301b02e0920c5bfe561d21609201e959460b1974270f844db208bcd3bf1e989376111049db13b934301a0ae9a00af82a7805c138f40d28083f0742ef2104d561fd1415a13317716a6119d260cc107b9bfc0eec7ade15cba2891c6b14a512792bdb02e0f147185655891c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c761d121c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d16cc16e916f8170717161726173517451754176417741783179317a217b217c217d217e1180416cc16f8170717161839184916cc16f817071716183918491859", "linkReferences": {} } } diff --git a/src/generated/RaindexV6SubParser.pointers.sol b/src/generated/RaindexV6SubParser.pointers.sol index 633793e0f4..4bb5a7fa10 100644 --- a/src/generated/RaindexV6SubParser.pointers.sol +++ b/src/generated/RaindexV6SubParser.pointers.sol @@ -10,19 +10,19 @@ pragma solidity ^0.8.25; // file needs the contract to exist so that it can be compiled. /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x704aadc1ed56f63ff918ab219e6681a5d2851d774e2ee136bbe7904ea3b2fdcd); +bytes32 constant BYTECODE_HASH = bytes32(0x5ed1e395258ca9cdb61cffd06d89dae19fc5043a5e14bd4cdae7cb11b9588216); /// @dev The deterministic deploy address of the contract when deployed via /// the Zoltu factory. -address constant DEPLOYED_ADDRESS = address(0x09Bc7AF266012F44fb41D8Bd682da931666605e1); +address constant DEPLOYED_ADDRESS = address(0x420f597688A249eC28aBA121960ada4d9091cbAa); /// @dev The creation bytecode of the contract. bytes constant CREATION_CODE = - hex"6080604052348015600e575f80fd5b506125d38061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c80636f5aa28d116100585780636f5aa28d146100dd578063c6c0cbb61461010b578063ccf4477514610135578063d6d8c9a814610148575f80fd5b806301ffc9a71461007e578063336284d4146100a6578063570c7a63146100bb575b5f80fd5b61009161008c3660046122ad565b610150565b60405190151581526020015b60405180910390f35b6100ae6101d7565b60405161009d9190612309565b6100ce6100c936600461232f565b610bc5565b60405161009d939291906123d9565b6040517ff2d0eca454c544ab10f9991c019349475a416e38494f112a50807174c3000d0b815260200161009d565b61011e61011936600461232f565b610d09565b60408051921515835260208301919091520161009d565b60408051602081019091525f81526100ae565b6100ae610d41565b5f6001600160e01b031982166391ccb1d560e01b148061018057506001600160e01b03198216636f5aa28d60e01b145b8061019b57506001600160e01b03198216631a2c8edd60e01b145b806101b657506001600160e01b03198216630cd8a13560e21b145b806101d157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f6101e660046001612436565b6101f1906002612436565b6101fc906001612436565b610207906001612436565b6001600160401b0381111561021e5761021e61231b565b60405190808252806020026020018201604052801561025157816020015b606081526020019060019003908161023c5790505b50604080516002808252606082019092529192505f9190816020015b6122a381526020019060019003908161026d5790505090506116cc815f8151811061029a5761029a612455565b60200260200101906001600160401b031690816001600160401b0316815250506116e9816001815181106102d0576102d0612455565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122a38152602001906001900390816103005790505090506116f8815f8151811061032d5761032d612455565b60200260200101906001600160401b031690816001600160401b0316815250506117078160018151811061036357610363612455565b60200260200101906001600160401b031690816001600160401b0316815250506117168160028151811061039957610399612455565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122a38152602001906001900390816103c9579050509050611726815f815181106103f6576103f6612455565b60200260200101906001600160401b031690816001600160401b0316815250506117358160018151811061042c5761042c612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a381526020019060019003908161045c579050509050611745815f8151811061048957610489612455565b60200260200101906001600160401b031690816001600160401b031681525050611754816001815181106104bf576104bf612455565b60200260200101906001600160401b031690816001600160401b031681525050611764816002815181106104f5576104f5612455565b60200260200101906001600160401b031690816001600160401b0316815250506117748160038151811061052b5761052b612455565b60200260200101906001600160401b031690816001600160401b0316815250506117838160048151811061056157610561612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a3815260200190600190039081610591579050509050611793815f815181106105be576105be612455565b60200260200101906001600160401b031690816001600160401b0316815250506117a2816001815181106105f4576105f4612455565b60200260200101906001600160401b031690816001600160401b0316815250506117b28160028151811061062a5761062a612455565b60200260200101906001600160401b031690816001600160401b0316815250506117c28160038151811061066057610660612455565b60200260200101906001600160401b031690816001600160401b0316815250506117d28160048151811061069657610696612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a38152602001906001900390816106c55790505090506117e1815f815181106106f2576106f2612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a38152602001906001900390816107215790505090506117f0815f8151811061074e5761074e612455565b60200260200101906001600160401b031690816001600160401b03168152505086885f8151811061078157610781612455565b602002602001018190525085886001815181106107a0576107a0612455565b602002602001018190525084886002815181106107bf576107bf612455565b602002602001018190525083886003815181106107de576107de612455565b602002602001018190525082886004815181106107fd576107fd612455565b6020026020010181905250818860058151811061081c5761081c612455565b6020026020010181905250808860068151811061083b5761083b612455565b602090810291909101015260408051600680825260e082019092525f91816020015b6122a381526020019060019003908161085d5790505090506116cc815f8151811061088a5761088a612455565b60200260200101906001600160401b031690816001600160401b0316815250506116f8816001815181106108c0576108c0612455565b60200260200101906001600160401b031690816001600160401b031681525050611707816002815181106108f6576108f6612455565b60200260200101906001600160401b031690816001600160401b0316815250506117168160038151811061092c5761092c612455565b60200260200101906001600160401b031690816001600160401b0316815250506118258160048151811061096257610962612455565b60200260200101906001600160401b031690816001600160401b0316815250506118358160058151811061099857610998612455565b6001600160401b039092166020928302919091019091015280896109be60066001612436565b815181106109ce576109ce612455565b602090810291909101015260408051600780825261010082019092525f91816020015b6122a38152602001906001900390816109f15790505090506116cc815f81518110610a1e57610a1e612455565b60200260200101906001600160401b031690816001600160401b0316815250506116f881600181518110610a5457610a54612455565b60200260200101906001600160401b031690816001600160401b03168152505061170781600281518110610a8a57610a8a612455565b60200260200101906001600160401b031690816001600160401b03168152505061171681600381518110610ac057610ac0612455565b60200260200101906001600160401b031690816001600160401b03168152505061182581600481518110610af657610af6612455565b60200260200101906001600160401b031690816001600160401b03168152505061183581600581518110610b2c57610b2c612455565b60200260200101906001600160401b031690816001600160401b03168152505061184581600681518110610b6257610b62612455565b6001600160401b0390921660209283029190910190910152808a610b8860066002612436565b81518110610b9857610b98612455565b602090810291909101015289610bb5610bb082611855565b6118b7565b9b50505050505050505050505090565b5f6060805f805f610be587610bd8611946565b610be0611966565b611986565b9250925092505f610bfb82610220015160200190565b90505f8261022001515182610c109190612436565b90505f610c2e83836f07fffffe0000000003ff200000000000611a77565b80925081945050505f80610c4786610240015184611b13565b915091508115610cdc575f610c5c8783611bea565b90506122a35f610c6a611c19565b90505f60028251610c7b919061247d565b9050808510610cac576040516303bdd1b160e51b815260048101869052602481018290526044015b60405180910390fd5b6001850160020282015161ffff169250610cc58c8c8686565b9e509e509e50505050505050505050505050610d02565b5050604080515f80825281830190925260208101828152919a5090985096505050505050505b9193909250565b5f805f805f610d31866002810151815160228084019461ffff93909316840101920160200190565b505f988998509650505050505050565b60605f610d5060046001612436565b610d5b906002612436565b610d66906001612436565b610d71906001612436565b6001600160401b03811115610d8857610d8861231b565b604051908082528060200260200182016040528015610dbb57816020015b6060815260200190600190039081610da65790505b50604080516002808252606082019092529192505f9190816020015b6122a3815260200190600190039081610dd7579050509050611c39815f81518110610e0457610e04612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600181518110610e3a57610e3a612455565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122a3815260200190600190039081610e6a579050509050611c39815f81518110610e9757610e97612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600181518110610ecd57610ecd612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600281518110610f0357610f03612455565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122a3815260200190600190039081610f33579050509050611c39815f81518110610f6057610f60612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600181518110610f9657610f96612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a3815260200190600190039081610fc6579050509050611c39815f81518110610ff357610ff3612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160018151811061102957611029612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160028151811061105f5761105f612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160038151811061109557611095612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816004815181106110cb576110cb612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a38152602001906001900390816110fb579050509050611c39815f8151811061112857611128612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160018151811061115e5761115e612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160028151811061119457611194612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816003815181106111ca576111ca612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160048151811061120057611200612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a381526020019060019003908161122f579050509050611c62815f8151811061125c5761125c612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a381526020019060019003908161128b579050509050611cfe815f815181106112b8576112b8612455565b60200260200101906001600160401b031690816001600160401b03168152505086885f815181106112eb576112eb612455565b6020026020010181905250858860018151811061130a5761130a612455565b6020026020010181905250848860028151811061132957611329612455565b6020026020010181905250838860038151811061134857611348612455565b6020026020010181905250828860048151811061136757611367612455565b6020026020010181905250818860058151811061138657611386612455565b602002602001018190525080886006815181106113a5576113a5612455565b602090810291909101015260408051600680825260e082019092525f91816020015b6122a38152602001906001900390816113c7579050509050611c39815f815181106113f4576113f4612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160018151811061142a5761142a612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160028151811061146057611460612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160038151811061149657611496612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816004815181106114cc576114cc612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160058151811061150257611502612455565b6001600160401b0390921660209283029190910190910152808961152860066001612436565b8151811061153857611538612455565b602090810291909101015260408051600780825261010082019092525f91816020015b6122a381526020019060019003908161155b579050509050611c39815f8151811061158857611588612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816001815181106115be576115be612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816002815181106115f4576115f4612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160038151811061162a5761162a612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160048151811061166057611660612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160058151811061169657611696612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600681518110610b6257610b62612455565b5f6060806116da5f80611db6565b92509250925093509350939050565b5f6060806116da5f6001611db6565b5f6060806116da60015f611db6565b5f6060806116da600180611db6565b5f6060806116da60016002611db6565b5f6060806116da60025f611db6565b5f6060806116da60026001611db6565b5f6060806116da60035f611db6565b5f6060806116da60036001611db6565b5f6060806116da60036002611db6565b5f6060806116da600380611db6565b5f6060806116da60036004611db6565b5f6060806116da60045f611db6565b5f6060806116da60046001611db6565b5f6060806116da60046002611db6565b5f6060806116da60046003611db6565b5f6060806116da600480611db6565b5f6060806116da600585611db6565b5f60608060ff80851690600886901c1661181461180e836006612436565b82611db6565b945094509450505093509350939050565b5f6060806116da60016003611db6565b5f6060806116da60016004611db6565b5f6060806116da60016005611db6565b60605f61186183611e38565b9050606060405190506020820260200181016040528181526020840160208551028101602083015b818310156118ac57602083515102806020855101835e6020939093019201611889565b509195945050505050565b60605f82516002026001600160401b038111156118d6576118d661231b565b6040519080825280601f01601f191660200182016040528015611900576020820181803683370190505b50905061ffff80196020850160208651028101600285015b8183101561193a57805183518616908516178152602090920191600201611918565b50939695505050505050565b60606040518060e0016040528060a281526020016124f160a29139905090565b606060405180606001604052806040815260200161259360409139905090565b5f80611a156040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b606061ffff600288015116935060ff600388015116925061ffff600588015116600588019750808852602081018801915050611a6187878760405180602001604052805f815250611e66565b915080826101e001819052505093509350939050565b5f808060018187870360208111611a8e5780611a91565b60205b915050875192505b8519600184841a1b16158183101615611ab757600182019150611a99565b9681019660208290036008810293841c90931b92611b025760408051602081018590520160408051601f198184030181529082905263e47fe8b760e01b8252610ca391600401612309565b50869350909150505b935093915050565b600182810180515f928392600560ff93909316602102870192830192909101835b81831015611bd85760018301516021909301805190935f90819060ff168180611b5d838e612017565b915091508186165f03611b7f575f809b509b5050505050505050505050611be3565b5f87611b8f600185038916612042565b016004028b015195505062ffffff9081169350841683039150611bc39050575060019750601c1a9550611be3945050505050565b611bcc83612042565b84019350505050611b34565b5f8095509550505050505b9250929050565b6101c08201516002828102820101516101e08401515f9261ffff9092169190611c109083565b95945050505050565b60606040518060600160405280604081526020016124b160409139905090565b5f81515f14611c5b576040516304f8b58160e51b815260040160405180910390fd5b505f919050565b5f8151600103611cbf575060208101516001600160e01b038116601b0b60e082901d5f611c908383836120fb565b905061ffff811115611cb557604051631e4e01d760e21b815260040160405180910390fd5b9250611cf9915050565b81515f03611ce057604051630f16066b60e41b815260040160405180910390fd5b604051630358cd2160e31b815260040160405180910390fd5b919050565b5f8151600203611d9357602082015160408301516001600160e01b038216601b0b60e083901d5f611d308383836120fb565b6001600160e01b038516601b0b935060e085901d925090505f611d548484836120fb565b905060ff821180611d65575060ff81115b15611d8357604051631e4e01d760e21b815260040160405180910390fd5b60081b179450611cf99350505050565b600282511015611ce057604051630f16066b60e41b815260040160405180910390fd5b5f60608060ff851180611dc9575060ff84115b15611df157604051639b0f326160e01b81526004810186905260248101859052604401610ca3565b6040805160248101909152600386602383015385602283015360106021830153806020830153506004815260408051602081019091525f8152600197919650945092505050565b5f60208201602083510281015b80821015611e5f5781515183019250602082019150611e45565b5050919050565b611ef36040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b5f6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f801b81526020015f8152602001600481526020015f81526020015f81526020015f81526020015f801b815260200184815260200185815260200160046001600160401b03811115611f7857611f7861231b565b604051908082528060200260200182016040528015611fa1578160200160208202803683370190505b5081525f602080830182905260408084018b905260609384018a90528051601f01601f19168281528083018252835161ffff191681178452855290840182905283018190529082018190526080820181905260a08201819052610120820181905261014082018190526102008201529050611c10565b5f80825f528360205360215f2090506001815f1a1b915062ffffff8116611be3575060019250929050565b5f5f1982036120545750610100919050565b507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f5555555555555555555555555555555555555555555555555555555555555555600183901c16909103600281901c7f3333333333333333333333333333333333333333333333333333333333333333908116911601600481901c01167f01010101010101010101010101010101010101010101010101010101010101010260f81c90565b5f805f61210986868661213d565b91509150806121345760405162bc8ecf60e31b81526004810187905260248101869052604401610ca3565b50949350505050565b5f805f85121561216a57604051634a7d166b60e01b81526004810186905260248101859052604401610ca3565b845f0361217c57505f90506001611b0b565b8460ff84168501858112156121ae5760405163d556b11160e01b81526004810188905260248101879052604401610ca3565b5f805f8312156121fa57604c198312156121d1575f809550955050505050611b0b565b825f03600a0a91508184816121e8576121e8612469565b0495505084029091149150611b0b9050565b5f83131561229357604d8313156122375760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b82600a0a9150815f198161224d5761224d612469565b048411156122815760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b5091909102925060019150611b0b9050565b8360019550955050505050611b0b565b6122ab61249c565b565b5f602082840312156122bd575f80fd5b81356001600160e01b0319811681146122d4575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6122d460208301846122db565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561233f575f80fd5b81356001600160401b0380821115612355575f80fd5b818401915084601f830112612368575f80fd5b81358181111561237a5761237a61231b565b604051601f8201601f19908116603f011681019083821181831017156123a2576123a261231b565b816040528281528760208487010111156123ba575f80fd5b826020860160208301375f928101602001929092525095945050505050565b83151581525f6020606060208401526123f560608401866122db565b8381036040850152845180825260208087019201905f5b818110156124285783518352928401929184019160010161240c565b509098975050505050505050565b808201808211156101d157634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261249757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52605160045260245ffdfe16cc16e916f8170717161726173517451754176417741783179317a217b217c217d217e117f016cc16f8170717161825183516cc16f8170717161825183518450101180010800082000100010480300038412a001810000010020004200004002038038ff54900cc66c61ff3dcab0616592209895f0b16fec9301b02e0920c5bfe561d21609201e959460b1974270f844db208bcd3bf1e989376111049db13b934301a0ae9a00af82a7805c138f40d28083f0742ef2104d561fd1415a13317716a6119d260cc107b9bfc0eec7ade15cba2891c6b14a512792bdb02e0f147185655891c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c621cfe1c391c391c391c391c391c391c391c391c391c391c391c391c39"; + hex"6080604052348015600e575f80fd5b506125e78061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c80636f5aa28d116100585780636f5aa28d146100dd578063c6c0cbb61461010b578063ccf4477514610135578063d6d8c9a814610148575f80fd5b806301ffc9a71461007e578063336284d4146100a6578063570c7a63146100bb575b5f80fd5b61009161008c3660046122c1565b610150565b60405190151581526020015b60405180910390f35b6100ae6101d7565b60405161009d919061231d565b6100ce6100c9366004612343565b610bc5565b60405161009d939291906123ed565b6040517ff2d0eca454c544ab10f9991c019349475a416e38494f112a50807174c3000d0b815260200161009d565b61011e610119366004612343565b610d09565b60408051921515835260208301919091520161009d565b60408051602081019091525f81526100ae565b6100ae610d41565b5f6001600160e01b031982166391ccb1d560e01b148061018057506001600160e01b03198216636f5aa28d60e01b145b8061019b57506001600160e01b03198216631a2c8edd60e01b145b806101b657506001600160e01b03198216630cd8a13560e21b145b806101d157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f6101e66004600161244a565b6101f190600261244a565b6101fc90600161244a565b61020790600161244a565b6001600160401b0381111561021e5761021e61232f565b60405190808252806020026020018201604052801561025157816020015b606081526020019060019003908161023c5790505b50604080516002808252606082019092529192505f9190816020015b6122b781526020019060019003908161026d5790505090506116cc815f8151811061029a5761029a612469565b60200260200101906001600160401b031690816001600160401b0316815250506116e9816001815181106102d0576102d0612469565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122b78152602001906001900390816103005790505090506116f8815f8151811061032d5761032d612469565b60200260200101906001600160401b031690816001600160401b0316815250506117078160018151811061036357610363612469565b60200260200101906001600160401b031690816001600160401b0316815250506117168160028151811061039957610399612469565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122b78152602001906001900390816103c9579050509050611726815f815181106103f6576103f6612469565b60200260200101906001600160401b031690816001600160401b0316815250506117358160018151811061042c5761042c612469565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122b781526020019060019003908161045c579050509050611745815f8151811061048957610489612469565b60200260200101906001600160401b031690816001600160401b031681525050611754816001815181106104bf576104bf612469565b60200260200101906001600160401b031690816001600160401b031681525050611764816002815181106104f5576104f5612469565b60200260200101906001600160401b031690816001600160401b0316815250506117748160038151811061052b5761052b612469565b60200260200101906001600160401b031690816001600160401b0316815250506117838160048151811061056157610561612469565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122b7815260200190600190039081610591579050509050611793815f815181106105be576105be612469565b60200260200101906001600160401b031690816001600160401b0316815250506117a2816001815181106105f4576105f4612469565b60200260200101906001600160401b031690816001600160401b0316815250506117b28160028151811061062a5761062a612469565b60200260200101906001600160401b031690816001600160401b0316815250506117c28160038151811061066057610660612469565b60200260200101906001600160401b031690816001600160401b0316815250506117d28160048151811061069657610696612469565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122b78152602001906001900390816106c55790505090506117e1815f815181106106f2576106f2612469565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122b7815260200190600190039081610721579050509050611804815f8151811061074e5761074e612469565b60200260200101906001600160401b031690816001600160401b03168152505086885f8151811061078157610781612469565b602002602001018190525085886001815181106107a0576107a0612469565b602002602001018190525084886002815181106107bf576107bf612469565b602002602001018190525083886003815181106107de576107de612469565b602002602001018190525082886004815181106107fd576107fd612469565b6020026020010181905250818860058151811061081c5761081c612469565b6020026020010181905250808860068151811061083b5761083b612469565b602090810291909101015260408051600680825260e082019092525f91816020015b6122b781526020019060019003908161085d5790505090506116cc815f8151811061088a5761088a612469565b60200260200101906001600160401b031690816001600160401b0316815250506116f8816001815181106108c0576108c0612469565b60200260200101906001600160401b031690816001600160401b031681525050611707816002815181106108f6576108f6612469565b60200260200101906001600160401b031690816001600160401b0316815250506117168160038151811061092c5761092c612469565b60200260200101906001600160401b031690816001600160401b0316815250506118398160048151811061096257610962612469565b60200260200101906001600160401b031690816001600160401b0316815250506118498160058151811061099857610998612469565b6001600160401b039092166020928302919091019091015280896109be6006600161244a565b815181106109ce576109ce612469565b602090810291909101015260408051600780825261010082019092525f91816020015b6122b78152602001906001900390816109f15790505090506116cc815f81518110610a1e57610a1e612469565b60200260200101906001600160401b031690816001600160401b0316815250506116f881600181518110610a5457610a54612469565b60200260200101906001600160401b031690816001600160401b03168152505061170781600281518110610a8a57610a8a612469565b60200260200101906001600160401b031690816001600160401b03168152505061171681600381518110610ac057610ac0612469565b60200260200101906001600160401b031690816001600160401b03168152505061183981600481518110610af657610af6612469565b60200260200101906001600160401b031690816001600160401b03168152505061184981600581518110610b2c57610b2c612469565b60200260200101906001600160401b031690816001600160401b03168152505061185981600681518110610b6257610b62612469565b6001600160401b0390921660209283029190910190910152808a610b886006600261244a565b81518110610b9857610b98612469565b602090810291909101015289610bb5610bb082611869565b6118cb565b9b50505050505050505050505090565b5f6060805f805f610be587610bd861195a565b610be061197a565b61199a565b9250925092505f610bfb82610220015160200190565b90505f8261022001515182610c10919061244a565b90505f610c2e83836f07fffffe0000000003ff200000000000611a8b565b80925081945050505f80610c4786610240015184611b27565b915091508115610cdc575f610c5c8783611bfe565b90506122b75f610c6a611c2d565b90505f60028251610c7b9190612491565b9050808510610cac576040516303bdd1b160e51b815260048101869052602481018290526044015b60405180910390fd5b6001850160020282015161ffff169250610cc58c8c8686565b9e509e509e50505050505050505050505050610d02565b5050604080515f80825281830190925260208101828152919a5090985096505050505050505b9193909250565b5f805f805f610d31866002810151815160228084019461ffff93909316840101920160200190565b505f988998509650505050505050565b60605f610d506004600161244a565b610d5b90600261244a565b610d6690600161244a565b610d7190600161244a565b6001600160401b03811115610d8857610d8861232f565b604051908082528060200260200182016040528015610dbb57816020015b6060815260200190600190039081610da65790505b50604080516002808252606082019092529192505f9190816020015b6122b7815260200190600190039081610dd7579050509050611c4d815f81518110610e0457610e04612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d81600181518110610e3a57610e3a612469565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122b7815260200190600190039081610e6a579050509050611c4d815f81518110610e9757610e97612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d81600181518110610ecd57610ecd612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d81600281518110610f0357610f03612469565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122b7815260200190600190039081610f33579050509050611c4d815f81518110610f6057610f60612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d81600181518110610f9657610f96612469565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122b7815260200190600190039081610fc6579050509050611c4d815f81518110610ff357610ff3612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160018151811061102957611029612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160028151811061105f5761105f612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160038151811061109557611095612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d816004815181106110cb576110cb612469565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122b78152602001906001900390816110fb579050509050611c4d815f8151811061112857611128612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160018151811061115e5761115e612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160028151811061119457611194612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d816003815181106111ca576111ca612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160048151811061120057611200612469565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122b781526020019060019003908161122f579050509050611c76815f8151811061125c5761125c612469565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122b781526020019060019003908161128b579050509050611d12815f815181106112b8576112b8612469565b60200260200101906001600160401b031690816001600160401b03168152505086885f815181106112eb576112eb612469565b6020026020010181905250858860018151811061130a5761130a612469565b6020026020010181905250848860028151811061132957611329612469565b6020026020010181905250838860038151811061134857611348612469565b6020026020010181905250828860048151811061136757611367612469565b6020026020010181905250818860058151811061138657611386612469565b602002602001018190525080886006815181106113a5576113a5612469565b602090810291909101015260408051600680825260e082019092525f91816020015b6122b78152602001906001900390816113c7579050509050611c4d815f815181106113f4576113f4612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160018151811061142a5761142a612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160028151811061146057611460612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160038151811061149657611496612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d816004815181106114cc576114cc612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160058151811061150257611502612469565b6001600160401b039092166020928302919091019091015280896115286006600161244a565b8151811061153857611538612469565b602090810291909101015260408051600780825261010082019092525f91816020015b6122b781526020019060019003908161155b579050509050611c4d815f8151811061158857611588612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d816001815181106115be576115be612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d816002815181106115f4576115f4612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160038151811061162a5761162a612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160048151811061166057611660612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160058151811061169657611696612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d81600681518110610b6257610b62612469565b5f6060806116da5f80611dca565b92509250925093509350939050565b5f6060806116da5f6001611dca565b5f6060806116da60015f611dca565b5f6060806116da600180611dca565b5f6060806116da60016002611dca565b5f6060806116da60025f611dca565b5f6060806116da60026001611dca565b5f6060806116da60035f611dca565b5f6060806116da60036001611dca565b5f6060806116da60036002611dca565b5f6060806116da600380611dca565b5f6060806116da60036004611dca565b5f6060806116da60045f611dca565b5f6060806116da60046001611dca565b5f6060806116da60046002611dca565b5f6060806116da60046003611dca565b5f6060806116da600480611dca565b5f60608060ff84166117f4600582611dca565b9350935093505093509350939050565b5f60608060ff80851690600886901c1661182861182283600661244a565b82611dca565b945094509450505093509350939050565b5f6060806116da60016003611dca565b5f6060806116da60016004611dca565b5f6060806116da60016005611dca565b60605f61187583611e4c565b9050606060405190506020820260200181016040528181526020840160208551028101602083015b818310156118c057602083515102806020855101835e602093909301920161189d565b509195945050505050565b60605f82516002026001600160401b038111156118ea576118ea61232f565b6040519080825280601f01601f191660200182016040528015611914576020820181803683370190505b50905061ffff80196020850160208651028101600285015b8183101561194e5780518351861690851617815260209092019160020161192c565b50939695505050505050565b60606040518060e0016040528060a281526020016124c560a29139905090565b606060405180606001604052806040815260200161256760409139905090565b5f80611a296040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b606061ffff600288015116935060ff600388015116925061ffff600588015116600588019750808852602081018801915050611a7587878760405180602001604052805f815250611e7a565b915080826101e001819052505093509350939050565b5f808060018187870360208111611aa25780611aa5565b60205b915050875192505b8519600184841a1b16158183101615611acb57600182019150611aad565b9681019660208290036008810293841c90931b92611b165760408051602081018590520160408051601f198184030181529082905263e47fe8b760e01b8252610ca39160040161231d565b50869350909150505b935093915050565b600182810180515f928392600560ff93909316602102870192830192909101835b81831015611bec5760018301516021909301805190935f90819060ff168180611b71838e61202b565b915091508186165f03611b93575f809b509b5050505050505050505050611bf7565b5f87611ba3600185038916612056565b016004028b015195505062ffffff9081169350841683039150611bd79050575060019750601c1a9550611bf7945050505050565b611be083612056565b84019350505050611b48565b5f8095509550505050505b9250929050565b6101c08201516002828102820101516101e08401515f9261ffff9092169190611c249083565b95945050505050565b60606040518060600160405280604081526020016125a760409139905090565b5f81515f14611c6f576040516304f8b58160e51b815260040160405180910390fd5b505f919050565b5f8151600103611cd3575060208101516001600160e01b038116601b0b60e082901d5f611ca483838361210f565b905061ffff811115611cc957604051631e4e01d760e21b815260040160405180910390fd5b9250611d0d915050565b81515f03611cf457604051630f16066b60e41b815260040160405180910390fd5b604051630358cd2160e31b815260040160405180910390fd5b919050565b5f8151600203611da757602082015160408301516001600160e01b038216601b0b60e083901d5f611d4483838361210f565b6001600160e01b038516601b0b935060e085901d925090505f611d6884848361210f565b905060ff821180611d79575060ff81115b15611d9757604051631e4e01d760e21b815260040160405180910390fd5b60081b179450611d0d9350505050565b600282511015611cf457604051630f16066b60e41b815260040160405180910390fd5b5f60608060ff851180611ddd575060ff84115b15611e0557604051639b0f326160e01b81526004810186905260248101859052604401610ca3565b6040805160248101909152600386602383015385602283015360106021830153806020830153506004815260408051602081019091525f8152600197919650945092505050565b5f60208201602083510281015b80821015611e735781515183019250602082019150611e59565b5050919050565b611f076040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b5f6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f801b81526020015f8152602001600481526020015f81526020015f81526020015f81526020015f801b815260200184815260200185815260200160046001600160401b03811115611f8c57611f8c61232f565b604051908082528060200260200182016040528015611fb5578160200160208202803683370190505b5081525f602080830182905260408084018b905260609384018a90528051601f01601f19168281528083018252835161ffff191681178452855290840182905283018190529082018190526080820181905260a08201819052610120820181905261014082018190526102008201529050611c24565b5f80825f528360205360215f2090506001815f1a1b915062ffffff8116611bf7575060019250929050565b5f5f1982036120685750610100919050565b507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f5555555555555555555555555555555555555555555555555555555555555555600183901c16909103600281901c7f3333333333333333333333333333333333333333333333333333333333333333908116911601600481901c01167f01010101010101010101010101010101010101010101010101010101010101010260f81c90565b5f805f61211d868686612151565b91509150806121485760405162bc8ecf60e31b81526004810187905260248101869052604401610ca3565b50949350505050565b5f805f85121561217e57604051634a7d166b60e01b81526004810186905260248101859052604401610ca3565b845f0361219057505f90506001611b1f565b8460ff84168501858112156121c25760405163d556b11160e01b81526004810188905260248101879052604401610ca3565b5f805f83121561220e57604c198312156121e5575f809550955050505050611b1f565b825f03600a0a91508184816121fc576121fc61247d565b0495505084029091149150611b1f9050565b5f8313156122a757604d83131561224b5760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b82600a0a9150815f19816122615761226161247d565b048411156122955760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b5091909102925060019150611b1f9050565b8360019550955050505050611b1f565b6122bf6124b0565b565b5f602082840312156122d1575f80fd5b81356001600160e01b0319811681146122e8575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6122e860208301846122ef565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215612353575f80fd5b81356001600160401b0380821115612369575f80fd5b818401915084601f83011261237c575f80fd5b81358181111561238e5761238e61232f565b604051601f8201601f19908116603f011681019083821181831017156123b6576123b661232f565b816040528281528760208487010111156123ce575f80fd5b826020860160208301375f928101602001929092525095945050505050565b83151581525f60206060602084015261240960608401866122ef565b8381036040850152845180825260208087019201905f5b8181101561243c57835183529284019291840191600101612420565b509098975050505050505050565b808201808211156101d157634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f826124ab57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52605160045260245ffdfe0101180010800082000100010480300038412a001810000010020004200004002038038ff54900cc66c61ff3dcab0616592209895f0b16fec9301b02e0920c5bfe561d21609201e959460b1974270f844db208bcd3bf1e989376111049db13b934301a0ae9a00af82a7805c138f40d28083f0742ef2104d561fd1415a13317716a6119d260cc107b9bfc0eec7ade15cba2891c6b14a512792bdb02e0f147185655891c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c761d121c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d16cc16e916f8170717161726173517451754176417741783179317a217b217c217d217e1180416cc16f8170717161839184916cc16f817071716183918491859"; /// @dev The runtime bytecode of the contract. bytes constant RUNTIME_CODE = - hex"608060405234801561000f575f80fd5b506004361061007a575f3560e01c80636f5aa28d116100585780636f5aa28d146100dd578063c6c0cbb61461010b578063ccf4477514610135578063d6d8c9a814610148575f80fd5b806301ffc9a71461007e578063336284d4146100a6578063570c7a63146100bb575b5f80fd5b61009161008c3660046122ad565b610150565b60405190151581526020015b60405180910390f35b6100ae6101d7565b60405161009d9190612309565b6100ce6100c936600461232f565b610bc5565b60405161009d939291906123d9565b6040517ff2d0eca454c544ab10f9991c019349475a416e38494f112a50807174c3000d0b815260200161009d565b61011e61011936600461232f565b610d09565b60408051921515835260208301919091520161009d565b60408051602081019091525f81526100ae565b6100ae610d41565b5f6001600160e01b031982166391ccb1d560e01b148061018057506001600160e01b03198216636f5aa28d60e01b145b8061019b57506001600160e01b03198216631a2c8edd60e01b145b806101b657506001600160e01b03198216630cd8a13560e21b145b806101d157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f6101e660046001612436565b6101f1906002612436565b6101fc906001612436565b610207906001612436565b6001600160401b0381111561021e5761021e61231b565b60405190808252806020026020018201604052801561025157816020015b606081526020019060019003908161023c5790505b50604080516002808252606082019092529192505f9190816020015b6122a381526020019060019003908161026d5790505090506116cc815f8151811061029a5761029a612455565b60200260200101906001600160401b031690816001600160401b0316815250506116e9816001815181106102d0576102d0612455565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122a38152602001906001900390816103005790505090506116f8815f8151811061032d5761032d612455565b60200260200101906001600160401b031690816001600160401b0316815250506117078160018151811061036357610363612455565b60200260200101906001600160401b031690816001600160401b0316815250506117168160028151811061039957610399612455565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122a38152602001906001900390816103c9579050509050611726815f815181106103f6576103f6612455565b60200260200101906001600160401b031690816001600160401b0316815250506117358160018151811061042c5761042c612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a381526020019060019003908161045c579050509050611745815f8151811061048957610489612455565b60200260200101906001600160401b031690816001600160401b031681525050611754816001815181106104bf576104bf612455565b60200260200101906001600160401b031690816001600160401b031681525050611764816002815181106104f5576104f5612455565b60200260200101906001600160401b031690816001600160401b0316815250506117748160038151811061052b5761052b612455565b60200260200101906001600160401b031690816001600160401b0316815250506117838160048151811061056157610561612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a3815260200190600190039081610591579050509050611793815f815181106105be576105be612455565b60200260200101906001600160401b031690816001600160401b0316815250506117a2816001815181106105f4576105f4612455565b60200260200101906001600160401b031690816001600160401b0316815250506117b28160028151811061062a5761062a612455565b60200260200101906001600160401b031690816001600160401b0316815250506117c28160038151811061066057610660612455565b60200260200101906001600160401b031690816001600160401b0316815250506117d28160048151811061069657610696612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a38152602001906001900390816106c55790505090506117e1815f815181106106f2576106f2612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a38152602001906001900390816107215790505090506117f0815f8151811061074e5761074e612455565b60200260200101906001600160401b031690816001600160401b03168152505086885f8151811061078157610781612455565b602002602001018190525085886001815181106107a0576107a0612455565b602002602001018190525084886002815181106107bf576107bf612455565b602002602001018190525083886003815181106107de576107de612455565b602002602001018190525082886004815181106107fd576107fd612455565b6020026020010181905250818860058151811061081c5761081c612455565b6020026020010181905250808860068151811061083b5761083b612455565b602090810291909101015260408051600680825260e082019092525f91816020015b6122a381526020019060019003908161085d5790505090506116cc815f8151811061088a5761088a612455565b60200260200101906001600160401b031690816001600160401b0316815250506116f8816001815181106108c0576108c0612455565b60200260200101906001600160401b031690816001600160401b031681525050611707816002815181106108f6576108f6612455565b60200260200101906001600160401b031690816001600160401b0316815250506117168160038151811061092c5761092c612455565b60200260200101906001600160401b031690816001600160401b0316815250506118258160048151811061096257610962612455565b60200260200101906001600160401b031690816001600160401b0316815250506118358160058151811061099857610998612455565b6001600160401b039092166020928302919091019091015280896109be60066001612436565b815181106109ce576109ce612455565b602090810291909101015260408051600780825261010082019092525f91816020015b6122a38152602001906001900390816109f15790505090506116cc815f81518110610a1e57610a1e612455565b60200260200101906001600160401b031690816001600160401b0316815250506116f881600181518110610a5457610a54612455565b60200260200101906001600160401b031690816001600160401b03168152505061170781600281518110610a8a57610a8a612455565b60200260200101906001600160401b031690816001600160401b03168152505061171681600381518110610ac057610ac0612455565b60200260200101906001600160401b031690816001600160401b03168152505061182581600481518110610af657610af6612455565b60200260200101906001600160401b031690816001600160401b03168152505061183581600581518110610b2c57610b2c612455565b60200260200101906001600160401b031690816001600160401b03168152505061184581600681518110610b6257610b62612455565b6001600160401b0390921660209283029190910190910152808a610b8860066002612436565b81518110610b9857610b98612455565b602090810291909101015289610bb5610bb082611855565b6118b7565b9b50505050505050505050505090565b5f6060805f805f610be587610bd8611946565b610be0611966565b611986565b9250925092505f610bfb82610220015160200190565b90505f8261022001515182610c109190612436565b90505f610c2e83836f07fffffe0000000003ff200000000000611a77565b80925081945050505f80610c4786610240015184611b13565b915091508115610cdc575f610c5c8783611bea565b90506122a35f610c6a611c19565b90505f60028251610c7b919061247d565b9050808510610cac576040516303bdd1b160e51b815260048101869052602481018290526044015b60405180910390fd5b6001850160020282015161ffff169250610cc58c8c8686565b9e509e509e50505050505050505050505050610d02565b5050604080515f80825281830190925260208101828152919a5090985096505050505050505b9193909250565b5f805f805f610d31866002810151815160228084019461ffff93909316840101920160200190565b505f988998509650505050505050565b60605f610d5060046001612436565b610d5b906002612436565b610d66906001612436565b610d71906001612436565b6001600160401b03811115610d8857610d8861231b565b604051908082528060200260200182016040528015610dbb57816020015b6060815260200190600190039081610da65790505b50604080516002808252606082019092529192505f9190816020015b6122a3815260200190600190039081610dd7579050509050611c39815f81518110610e0457610e04612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600181518110610e3a57610e3a612455565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122a3815260200190600190039081610e6a579050509050611c39815f81518110610e9757610e97612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600181518110610ecd57610ecd612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600281518110610f0357610f03612455565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122a3815260200190600190039081610f33579050509050611c39815f81518110610f6057610f60612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600181518110610f9657610f96612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a3815260200190600190039081610fc6579050509050611c39815f81518110610ff357610ff3612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160018151811061102957611029612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160028151811061105f5761105f612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160038151811061109557611095612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816004815181106110cb576110cb612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a38152602001906001900390816110fb579050509050611c39815f8151811061112857611128612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160018151811061115e5761115e612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160028151811061119457611194612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816003815181106111ca576111ca612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160048151811061120057611200612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a381526020019060019003908161122f579050509050611c62815f8151811061125c5761125c612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a381526020019060019003908161128b579050509050611cfe815f815181106112b8576112b8612455565b60200260200101906001600160401b031690816001600160401b03168152505086885f815181106112eb576112eb612455565b6020026020010181905250858860018151811061130a5761130a612455565b6020026020010181905250848860028151811061132957611329612455565b6020026020010181905250838860038151811061134857611348612455565b6020026020010181905250828860048151811061136757611367612455565b6020026020010181905250818860058151811061138657611386612455565b602002602001018190525080886006815181106113a5576113a5612455565b602090810291909101015260408051600680825260e082019092525f91816020015b6122a38152602001906001900390816113c7579050509050611c39815f815181106113f4576113f4612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160018151811061142a5761142a612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160028151811061146057611460612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160038151811061149657611496612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816004815181106114cc576114cc612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160058151811061150257611502612455565b6001600160401b0390921660209283029190910190910152808961152860066001612436565b8151811061153857611538612455565b602090810291909101015260408051600780825261010082019092525f91816020015b6122a381526020019060019003908161155b579050509050611c39815f8151811061158857611588612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816001815181106115be576115be612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816002815181106115f4576115f4612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160038151811061162a5761162a612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160048151811061166057611660612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160058151811061169657611696612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600681518110610b6257610b62612455565b5f6060806116da5f80611db6565b92509250925093509350939050565b5f6060806116da5f6001611db6565b5f6060806116da60015f611db6565b5f6060806116da600180611db6565b5f6060806116da60016002611db6565b5f6060806116da60025f611db6565b5f6060806116da60026001611db6565b5f6060806116da60035f611db6565b5f6060806116da60036001611db6565b5f6060806116da60036002611db6565b5f6060806116da600380611db6565b5f6060806116da60036004611db6565b5f6060806116da60045f611db6565b5f6060806116da60046001611db6565b5f6060806116da60046002611db6565b5f6060806116da60046003611db6565b5f6060806116da600480611db6565b5f6060806116da600585611db6565b5f60608060ff80851690600886901c1661181461180e836006612436565b82611db6565b945094509450505093509350939050565b5f6060806116da60016003611db6565b5f6060806116da60016004611db6565b5f6060806116da60016005611db6565b60605f61186183611e38565b9050606060405190506020820260200181016040528181526020840160208551028101602083015b818310156118ac57602083515102806020855101835e6020939093019201611889565b509195945050505050565b60605f82516002026001600160401b038111156118d6576118d661231b565b6040519080825280601f01601f191660200182016040528015611900576020820181803683370190505b50905061ffff80196020850160208651028101600285015b8183101561193a57805183518616908516178152602090920191600201611918565b50939695505050505050565b60606040518060e0016040528060a281526020016124f160a29139905090565b606060405180606001604052806040815260200161259360409139905090565b5f80611a156040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b606061ffff600288015116935060ff600388015116925061ffff600588015116600588019750808852602081018801915050611a6187878760405180602001604052805f815250611e66565b915080826101e001819052505093509350939050565b5f808060018187870360208111611a8e5780611a91565b60205b915050875192505b8519600184841a1b16158183101615611ab757600182019150611a99565b9681019660208290036008810293841c90931b92611b025760408051602081018590520160408051601f198184030181529082905263e47fe8b760e01b8252610ca391600401612309565b50869350909150505b935093915050565b600182810180515f928392600560ff93909316602102870192830192909101835b81831015611bd85760018301516021909301805190935f90819060ff168180611b5d838e612017565b915091508186165f03611b7f575f809b509b5050505050505050505050611be3565b5f87611b8f600185038916612042565b016004028b015195505062ffffff9081169350841683039150611bc39050575060019750601c1a9550611be3945050505050565b611bcc83612042565b84019350505050611b34565b5f8095509550505050505b9250929050565b6101c08201516002828102820101516101e08401515f9261ffff9092169190611c109083565b95945050505050565b60606040518060600160405280604081526020016124b160409139905090565b5f81515f14611c5b576040516304f8b58160e51b815260040160405180910390fd5b505f919050565b5f8151600103611cbf575060208101516001600160e01b038116601b0b60e082901d5f611c908383836120fb565b905061ffff811115611cb557604051631e4e01d760e21b815260040160405180910390fd5b9250611cf9915050565b81515f03611ce057604051630f16066b60e41b815260040160405180910390fd5b604051630358cd2160e31b815260040160405180910390fd5b919050565b5f8151600203611d9357602082015160408301516001600160e01b038216601b0b60e083901d5f611d308383836120fb565b6001600160e01b038516601b0b935060e085901d925090505f611d548484836120fb565b905060ff821180611d65575060ff81115b15611d8357604051631e4e01d760e21b815260040160405180910390fd5b60081b179450611cf99350505050565b600282511015611ce057604051630f16066b60e41b815260040160405180910390fd5b5f60608060ff851180611dc9575060ff84115b15611df157604051639b0f326160e01b81526004810186905260248101859052604401610ca3565b6040805160248101909152600386602383015385602283015360106021830153806020830153506004815260408051602081019091525f8152600197919650945092505050565b5f60208201602083510281015b80821015611e5f5781515183019250602082019150611e45565b5050919050565b611ef36040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b5f6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f801b81526020015f8152602001600481526020015f81526020015f81526020015f81526020015f801b815260200184815260200185815260200160046001600160401b03811115611f7857611f7861231b565b604051908082528060200260200182016040528015611fa1578160200160208202803683370190505b5081525f602080830182905260408084018b905260609384018a90528051601f01601f19168281528083018252835161ffff191681178452855290840182905283018190529082018190526080820181905260a08201819052610120820181905261014082018190526102008201529050611c10565b5f80825f528360205360215f2090506001815f1a1b915062ffffff8116611be3575060019250929050565b5f5f1982036120545750610100919050565b507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f5555555555555555555555555555555555555555555555555555555555555555600183901c16909103600281901c7f3333333333333333333333333333333333333333333333333333333333333333908116911601600481901c01167f01010101010101010101010101010101010101010101010101010101010101010260f81c90565b5f805f61210986868661213d565b91509150806121345760405162bc8ecf60e31b81526004810187905260248101869052604401610ca3565b50949350505050565b5f805f85121561216a57604051634a7d166b60e01b81526004810186905260248101859052604401610ca3565b845f0361217c57505f90506001611b0b565b8460ff84168501858112156121ae5760405163d556b11160e01b81526004810188905260248101879052604401610ca3565b5f805f8312156121fa57604c198312156121d1575f809550955050505050611b0b565b825f03600a0a91508184816121e8576121e8612469565b0495505084029091149150611b0b9050565b5f83131561229357604d8313156122375760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b82600a0a9150815f198161224d5761224d612469565b048411156122815760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b5091909102925060019150611b0b9050565b8360019550955050505050611b0b565b6122ab61249c565b565b5f602082840312156122bd575f80fd5b81356001600160e01b0319811681146122d4575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6122d460208301846122db565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561233f575f80fd5b81356001600160401b0380821115612355575f80fd5b818401915084601f830112612368575f80fd5b81358181111561237a5761237a61231b565b604051601f8201601f19908116603f011681019083821181831017156123a2576123a261231b565b816040528281528760208487010111156123ba575f80fd5b826020860160208301375f928101602001929092525095945050505050565b83151581525f6020606060208401526123f560608401866122db565b8381036040850152845180825260208087019201905f5b818110156124285783518352928401929184019160010161240c565b509098975050505050505050565b808201808211156101d157634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261249757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52605160045260245ffdfe16cc16e916f8170717161726173517451754176417741783179317a217b217c217d217e117f016cc16f8170717161825183516cc16f8170717161825183518450101180010800082000100010480300038412a001810000010020004200004002038038ff54900cc66c61ff3dcab0616592209895f0b16fec9301b02e0920c5bfe561d21609201e959460b1974270f844db208bcd3bf1e989376111049db13b934301a0ae9a00af82a7805c138f40d28083f0742ef2104d561fd1415a13317716a6119d260cc107b9bfc0eec7ade15cba2891c6b14a512792bdb02e0f147185655891c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c621cfe1c391c391c391c391c391c391c391c391c391c391c391c391c39"; + hex"608060405234801561000f575f80fd5b506004361061007a575f3560e01c80636f5aa28d116100585780636f5aa28d146100dd578063c6c0cbb61461010b578063ccf4477514610135578063d6d8c9a814610148575f80fd5b806301ffc9a71461007e578063336284d4146100a6578063570c7a63146100bb575b5f80fd5b61009161008c3660046122c1565b610150565b60405190151581526020015b60405180910390f35b6100ae6101d7565b60405161009d919061231d565b6100ce6100c9366004612343565b610bc5565b60405161009d939291906123ed565b6040517ff2d0eca454c544ab10f9991c019349475a416e38494f112a50807174c3000d0b815260200161009d565b61011e610119366004612343565b610d09565b60408051921515835260208301919091520161009d565b60408051602081019091525f81526100ae565b6100ae610d41565b5f6001600160e01b031982166391ccb1d560e01b148061018057506001600160e01b03198216636f5aa28d60e01b145b8061019b57506001600160e01b03198216631a2c8edd60e01b145b806101b657506001600160e01b03198216630cd8a13560e21b145b806101d157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f6101e66004600161244a565b6101f190600261244a565b6101fc90600161244a565b61020790600161244a565b6001600160401b0381111561021e5761021e61232f565b60405190808252806020026020018201604052801561025157816020015b606081526020019060019003908161023c5790505b50604080516002808252606082019092529192505f9190816020015b6122b781526020019060019003908161026d5790505090506116cc815f8151811061029a5761029a612469565b60200260200101906001600160401b031690816001600160401b0316815250506116e9816001815181106102d0576102d0612469565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122b78152602001906001900390816103005790505090506116f8815f8151811061032d5761032d612469565b60200260200101906001600160401b031690816001600160401b0316815250506117078160018151811061036357610363612469565b60200260200101906001600160401b031690816001600160401b0316815250506117168160028151811061039957610399612469565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122b78152602001906001900390816103c9579050509050611726815f815181106103f6576103f6612469565b60200260200101906001600160401b031690816001600160401b0316815250506117358160018151811061042c5761042c612469565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122b781526020019060019003908161045c579050509050611745815f8151811061048957610489612469565b60200260200101906001600160401b031690816001600160401b031681525050611754816001815181106104bf576104bf612469565b60200260200101906001600160401b031690816001600160401b031681525050611764816002815181106104f5576104f5612469565b60200260200101906001600160401b031690816001600160401b0316815250506117748160038151811061052b5761052b612469565b60200260200101906001600160401b031690816001600160401b0316815250506117838160048151811061056157610561612469565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122b7815260200190600190039081610591579050509050611793815f815181106105be576105be612469565b60200260200101906001600160401b031690816001600160401b0316815250506117a2816001815181106105f4576105f4612469565b60200260200101906001600160401b031690816001600160401b0316815250506117b28160028151811061062a5761062a612469565b60200260200101906001600160401b031690816001600160401b0316815250506117c28160038151811061066057610660612469565b60200260200101906001600160401b031690816001600160401b0316815250506117d28160048151811061069657610696612469565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122b78152602001906001900390816106c55790505090506117e1815f815181106106f2576106f2612469565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122b7815260200190600190039081610721579050509050611804815f8151811061074e5761074e612469565b60200260200101906001600160401b031690816001600160401b03168152505086885f8151811061078157610781612469565b602002602001018190525085886001815181106107a0576107a0612469565b602002602001018190525084886002815181106107bf576107bf612469565b602002602001018190525083886003815181106107de576107de612469565b602002602001018190525082886004815181106107fd576107fd612469565b6020026020010181905250818860058151811061081c5761081c612469565b6020026020010181905250808860068151811061083b5761083b612469565b602090810291909101015260408051600680825260e082019092525f91816020015b6122b781526020019060019003908161085d5790505090506116cc815f8151811061088a5761088a612469565b60200260200101906001600160401b031690816001600160401b0316815250506116f8816001815181106108c0576108c0612469565b60200260200101906001600160401b031690816001600160401b031681525050611707816002815181106108f6576108f6612469565b60200260200101906001600160401b031690816001600160401b0316815250506117168160038151811061092c5761092c612469565b60200260200101906001600160401b031690816001600160401b0316815250506118398160048151811061096257610962612469565b60200260200101906001600160401b031690816001600160401b0316815250506118498160058151811061099857610998612469565b6001600160401b039092166020928302919091019091015280896109be6006600161244a565b815181106109ce576109ce612469565b602090810291909101015260408051600780825261010082019092525f91816020015b6122b78152602001906001900390816109f15790505090506116cc815f81518110610a1e57610a1e612469565b60200260200101906001600160401b031690816001600160401b0316815250506116f881600181518110610a5457610a54612469565b60200260200101906001600160401b031690816001600160401b03168152505061170781600281518110610a8a57610a8a612469565b60200260200101906001600160401b031690816001600160401b03168152505061171681600381518110610ac057610ac0612469565b60200260200101906001600160401b031690816001600160401b03168152505061183981600481518110610af657610af6612469565b60200260200101906001600160401b031690816001600160401b03168152505061184981600581518110610b2c57610b2c612469565b60200260200101906001600160401b031690816001600160401b03168152505061185981600681518110610b6257610b62612469565b6001600160401b0390921660209283029190910190910152808a610b886006600261244a565b81518110610b9857610b98612469565b602090810291909101015289610bb5610bb082611869565b6118cb565b9b50505050505050505050505090565b5f6060805f805f610be587610bd861195a565b610be061197a565b61199a565b9250925092505f610bfb82610220015160200190565b90505f8261022001515182610c10919061244a565b90505f610c2e83836f07fffffe0000000003ff200000000000611a8b565b80925081945050505f80610c4786610240015184611b27565b915091508115610cdc575f610c5c8783611bfe565b90506122b75f610c6a611c2d565b90505f60028251610c7b9190612491565b9050808510610cac576040516303bdd1b160e51b815260048101869052602481018290526044015b60405180910390fd5b6001850160020282015161ffff169250610cc58c8c8686565b9e509e509e50505050505050505050505050610d02565b5050604080515f80825281830190925260208101828152919a5090985096505050505050505b9193909250565b5f805f805f610d31866002810151815160228084019461ffff93909316840101920160200190565b505f988998509650505050505050565b60605f610d506004600161244a565b610d5b90600261244a565b610d6690600161244a565b610d7190600161244a565b6001600160401b03811115610d8857610d8861232f565b604051908082528060200260200182016040528015610dbb57816020015b6060815260200190600190039081610da65790505b50604080516002808252606082019092529192505f9190816020015b6122b7815260200190600190039081610dd7579050509050611c4d815f81518110610e0457610e04612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d81600181518110610e3a57610e3a612469565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122b7815260200190600190039081610e6a579050509050611c4d815f81518110610e9757610e97612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d81600181518110610ecd57610ecd612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d81600281518110610f0357610f03612469565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122b7815260200190600190039081610f33579050509050611c4d815f81518110610f6057610f60612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d81600181518110610f9657610f96612469565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122b7815260200190600190039081610fc6579050509050611c4d815f81518110610ff357610ff3612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160018151811061102957611029612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160028151811061105f5761105f612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160038151811061109557611095612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d816004815181106110cb576110cb612469565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122b78152602001906001900390816110fb579050509050611c4d815f8151811061112857611128612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160018151811061115e5761115e612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160028151811061119457611194612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d816003815181106111ca576111ca612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160048151811061120057611200612469565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122b781526020019060019003908161122f579050509050611c76815f8151811061125c5761125c612469565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122b781526020019060019003908161128b579050509050611d12815f815181106112b8576112b8612469565b60200260200101906001600160401b031690816001600160401b03168152505086885f815181106112eb576112eb612469565b6020026020010181905250858860018151811061130a5761130a612469565b6020026020010181905250848860028151811061132957611329612469565b6020026020010181905250838860038151811061134857611348612469565b6020026020010181905250828860048151811061136757611367612469565b6020026020010181905250818860058151811061138657611386612469565b602002602001018190525080886006815181106113a5576113a5612469565b602090810291909101015260408051600680825260e082019092525f91816020015b6122b78152602001906001900390816113c7579050509050611c4d815f815181106113f4576113f4612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160018151811061142a5761142a612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160028151811061146057611460612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160038151811061149657611496612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d816004815181106114cc576114cc612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160058151811061150257611502612469565b6001600160401b039092166020928302919091019091015280896115286006600161244a565b8151811061153857611538612469565b602090810291909101015260408051600780825261010082019092525f91816020015b6122b781526020019060019003908161155b579050509050611c4d815f8151811061158857611588612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d816001815181106115be576115be612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d816002815181106115f4576115f4612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160038151811061162a5761162a612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160048151811061166057611660612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d8160058151811061169657611696612469565b60200260200101906001600160401b031690816001600160401b031681525050611c4d81600681518110610b6257610b62612469565b5f6060806116da5f80611dca565b92509250925093509350939050565b5f6060806116da5f6001611dca565b5f6060806116da60015f611dca565b5f6060806116da600180611dca565b5f6060806116da60016002611dca565b5f6060806116da60025f611dca565b5f6060806116da60026001611dca565b5f6060806116da60035f611dca565b5f6060806116da60036001611dca565b5f6060806116da60036002611dca565b5f6060806116da600380611dca565b5f6060806116da60036004611dca565b5f6060806116da60045f611dca565b5f6060806116da60046001611dca565b5f6060806116da60046002611dca565b5f6060806116da60046003611dca565b5f6060806116da600480611dca565b5f60608060ff84166117f4600582611dca565b9350935093505093509350939050565b5f60608060ff80851690600886901c1661182861182283600661244a565b82611dca565b945094509450505093509350939050565b5f6060806116da60016003611dca565b5f6060806116da60016004611dca565b5f6060806116da60016005611dca565b60605f61187583611e4c565b9050606060405190506020820260200181016040528181526020840160208551028101602083015b818310156118c057602083515102806020855101835e602093909301920161189d565b509195945050505050565b60605f82516002026001600160401b038111156118ea576118ea61232f565b6040519080825280601f01601f191660200182016040528015611914576020820181803683370190505b50905061ffff80196020850160208651028101600285015b8183101561194e5780518351861690851617815260209092019160020161192c565b50939695505050505050565b60606040518060e0016040528060a281526020016124c560a29139905090565b606060405180606001604052806040815260200161256760409139905090565b5f80611a296040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b606061ffff600288015116935060ff600388015116925061ffff600588015116600588019750808852602081018801915050611a7587878760405180602001604052805f815250611e7a565b915080826101e001819052505093509350939050565b5f808060018187870360208111611aa25780611aa5565b60205b915050875192505b8519600184841a1b16158183101615611acb57600182019150611aad565b9681019660208290036008810293841c90931b92611b165760408051602081018590520160408051601f198184030181529082905263e47fe8b760e01b8252610ca39160040161231d565b50869350909150505b935093915050565b600182810180515f928392600560ff93909316602102870192830192909101835b81831015611bec5760018301516021909301805190935f90819060ff168180611b71838e61202b565b915091508186165f03611b93575f809b509b5050505050505050505050611bf7565b5f87611ba3600185038916612056565b016004028b015195505062ffffff9081169350841683039150611bd79050575060019750601c1a9550611bf7945050505050565b611be083612056565b84019350505050611b48565b5f8095509550505050505b9250929050565b6101c08201516002828102820101516101e08401515f9261ffff9092169190611c249083565b95945050505050565b60606040518060600160405280604081526020016125a760409139905090565b5f81515f14611c6f576040516304f8b58160e51b815260040160405180910390fd5b505f919050565b5f8151600103611cd3575060208101516001600160e01b038116601b0b60e082901d5f611ca483838361210f565b905061ffff811115611cc957604051631e4e01d760e21b815260040160405180910390fd5b9250611d0d915050565b81515f03611cf457604051630f16066b60e41b815260040160405180910390fd5b604051630358cd2160e31b815260040160405180910390fd5b919050565b5f8151600203611da757602082015160408301516001600160e01b038216601b0b60e083901d5f611d4483838361210f565b6001600160e01b038516601b0b935060e085901d925090505f611d6884848361210f565b905060ff821180611d79575060ff81115b15611d9757604051631e4e01d760e21b815260040160405180910390fd5b60081b179450611d0d9350505050565b600282511015611cf457604051630f16066b60e41b815260040160405180910390fd5b5f60608060ff851180611ddd575060ff84115b15611e0557604051639b0f326160e01b81526004810186905260248101859052604401610ca3565b6040805160248101909152600386602383015385602283015360106021830153806020830153506004815260408051602081019091525f8152600197919650945092505050565b5f60208201602083510281015b80821015611e735781515183019250602082019150611e59565b5050919050565b611f076040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b5f6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f801b81526020015f8152602001600481526020015f81526020015f81526020015f81526020015f801b815260200184815260200185815260200160046001600160401b03811115611f8c57611f8c61232f565b604051908082528060200260200182016040528015611fb5578160200160208202803683370190505b5081525f602080830182905260408084018b905260609384018a90528051601f01601f19168281528083018252835161ffff191681178452855290840182905283018190529082018190526080820181905260a08201819052610120820181905261014082018190526102008201529050611c24565b5f80825f528360205360215f2090506001815f1a1b915062ffffff8116611bf7575060019250929050565b5f5f1982036120685750610100919050565b507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f5555555555555555555555555555555555555555555555555555555555555555600183901c16909103600281901c7f3333333333333333333333333333333333333333333333333333333333333333908116911601600481901c01167f01010101010101010101010101010101010101010101010101010101010101010260f81c90565b5f805f61211d868686612151565b91509150806121485760405162bc8ecf60e31b81526004810187905260248101869052604401610ca3565b50949350505050565b5f805f85121561217e57604051634a7d166b60e01b81526004810186905260248101859052604401610ca3565b845f0361219057505f90506001611b1f565b8460ff84168501858112156121c25760405163d556b11160e01b81526004810188905260248101879052604401610ca3565b5f805f83121561220e57604c198312156121e5575f809550955050505050611b1f565b825f03600a0a91508184816121fc576121fc61247d565b0495505084029091149150611b1f9050565b5f8313156122a757604d83131561224b5760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b82600a0a9150815f19816122615761226161247d565b048411156122955760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b5091909102925060019150611b1f9050565b8360019550955050505050611b1f565b6122bf6124b0565b565b5f602082840312156122d1575f80fd5b81356001600160e01b0319811681146122e8575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6122e860208301846122ef565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215612353575f80fd5b81356001600160401b0380821115612369575f80fd5b818401915084601f83011261237c575f80fd5b81358181111561238e5761238e61232f565b604051601f8201601f19908116603f011681019083821181831017156123b6576123b661232f565b816040528281528760208487010111156123ce575f80fd5b826020860160208301375f928101602001929092525095945050505050565b83151581525f60206060602084015261240960608401866122ef565b8381036040850152845180825260208087019201905f5b8181101561243c57835183529284019291840191600101612420565b509098975050505050505050565b808201808211156101d157634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f826124ab57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52605160045260245ffdfe0101180010800082000100010480300038412a001810000010020004200004002038038ff54900cc66c61ff3dcab0616592209895f0b16fec9301b02e0920c5bfe561d21609201e959460b1974270f844db208bcd3bf1e989376111049db13b934301a0ae9a00af82a7805c138f40d28083f0742ef2104d561fd1415a13317716a6119d260cc107b9bfc0eec7ade15cba2891c6b14a512792bdb02e0f147185655891c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c761d121c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d16cc16e916f8170717161726173517451754176417741783179317a217b217c217d217e1180416cc16f8170717161839184916cc16f817071716183918491859"; /// @dev The hash of the meta that describes the contract. bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0xf2d0eca454c544ab10f9991c019349475a416e38494f112a50807174c3000d0b); @@ -56,13 +56,13 @@ uint8 constant PARSE_META_BUILD_DEPTH = 1; /// to things that happen entirely on the interpreter such as well known /// constants and references to the context grid. bytes constant SUB_PARSER_WORD_PARSERS = - hex"16cc16e916f8170717161726173517451754176417741783179317a217b217c217d217e117f016cc16f8170717161825183516cc16f817071716182518351845"; + hex"16cc16e916f8170717161726173517451754176417741783179317a217b217c217d217e1180416cc16f8170717161839184916cc16f817071716183918491859"; /// @dev Every two bytes is a function pointer for an operand handler. /// These positional indexes all map to the same indexes looked up in the parse /// meta. bytes constant OPERAND_HANDLER_FUNCTION_POINTERS = - hex"1c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c621cfe1c391c391c391c391c391c391c391c391c391c391c391c391c39"; + hex"1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c761d121c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d1c4d"; /// @dev Every two bytes is a function pointer for a literal parser. /// Literal dispatches are determined by the first byte(s) of the literal diff --git a/src/lib/LibRaindexSubParser.sol b/src/lib/LibRaindexSubParser.sol index 9aa1a0f9b8..686faa6985 100644 --- a/src/lib/LibRaindexSubParser.sol +++ b/src/lib/LibRaindexSubParser.sol @@ -277,14 +277,15 @@ library LibRaindexSubParser { } /// @dev Maps the "signers" word to the signed context signers column. - /// Uses the operand to select the row. + /// The low byte of the operand selects the row. function subParserSigners(uint256, uint256, OperandV2 operand) internal pure returns (bool, bytes memory, bytes32[] memory) { + uint256 row = uint256(OperandV2.unwrap(operand)) & 0xFF; //slither-disable-next-line unused-return - return LibSubParse.subParserContext(CONTEXT_SIGNED_CONTEXT_SIGNERS_COLUMN, uint256(OperandV2.unwrap(operand))); + return LibSubParse.subParserContext(CONTEXT_SIGNED_CONTEXT_SIGNERS_COLUMN, row); } /// @dev Maps the "deposit-token" word to the calling context column. diff --git a/src/lib/deploy/LibRaindexDeploy.sol b/src/lib/deploy/LibRaindexDeploy.sol index b37c8c7975..1e6becc40b 100644 --- a/src/lib/deploy/LibRaindexDeploy.sol +++ b/src/lib/deploy/LibRaindexDeploy.sol @@ -762,6 +762,62 @@ library LibRaindexDeploy { bytes32 constant GENERIC_POOL_FLASH_BORROWER_DEPLOYED_CODEHASH_0_1_12 = 0x03cde49152f7b5e29826ea8c561481b747b86be1f5cb4136fa064be6e4ac1c0d; + /// The deployed address of the `RaindexV6` contract at the published `0.1.13` + /// tag. (Unchanged from `0.1.12`.) + address constant RAINDEX_DEPLOYED_ADDRESS_0_1_13 = 0x37FC0EFec37D19f8A221aa4F8F7600C9ba2AcD20; + + /// The runtime code hash of the `RaindexV6` contract at the published `0.1.13` + /// tag. + bytes32 constant RAINDEX_DEPLOYED_CODEHASH_0_1_13 = + 0x6dccd7018126439bb9bceec4cd37f5bcfdd5319979fbf70f9faf41450da10b6f; + + /// The deployed address of the `RaindexV6SubParser` contract at the + /// published `0.1.13` tag. (Changed in 0.1.13 — mask signer row operand to + /// low byte.) + address constant SUB_PARSER_DEPLOYED_ADDRESS_0_1_13 = 0x420f597688A249eC28aBA121960ada4d9091cbAa; + + /// The runtime code hash of the `RaindexV6SubParser` contract at the + /// published `0.1.13` tag. + bytes32 constant SUB_PARSER_DEPLOYED_CODEHASH_0_1_13 = + 0x5ed1e395258ca9cdb61cffd06d89dae19fc5043a5e14bd4cdae7cb11b9588216; + + /// The deployed address of the `RouteProcessor4` contract at the published + /// `0.1.13` tag. (Unchanged from `0.1.0`.) + address constant ROUTE_PROCESSOR_DEPLOYED_ADDRESS_0_1_13 = 0x6E2d0e71d900474b262E545Bc4C98b71ab368d21; + + /// The runtime code hash of the `RouteProcessor4` contract at the published + /// `0.1.13` tag. (Unchanged from `0.1.0`.) + bytes32 constant ROUTE_PROCESSOR_DEPLOYED_CODEHASH_0_1_13 = + 0xeb3745a79c6ba48e8767b9c355b8e7b79f9d6edeca004e4bb91be4de515a7eeb; + + /// The deployed address of the `GenericPoolRaindexV6ArbOrderTaker` contract + /// at the published `0.1.13` tag. (Unchanged from `0.1.12`.) + address constant GENERIC_POOL_ARB_ORDER_TAKER_DEPLOYED_ADDRESS_0_1_13 = 0xE84c106B0A89A164d2D65205B9EBAE37c15Fd84a; + + /// The runtime code hash of the `GenericPoolRaindexV6ArbOrderTaker` contract + /// at the published `0.1.13` tag. + bytes32 constant GENERIC_POOL_ARB_ORDER_TAKER_DEPLOYED_CODEHASH_0_1_13 = + 0x02b17ab238a36ebcedee19fa5a374d6122865be8fff61bf45ad15822c8482030; + + /// The deployed address of the `RouteProcessorRaindexV6ArbOrderTaker` + /// contract at the published `0.1.13` tag. (Unchanged from `0.1.12`.) + address constant ROUTE_PROCESSOR_ARB_ORDER_TAKER_DEPLOYED_ADDRESS_0_1_13 = + 0x1350420cbf3E9eb8F1734bbe466e0F303579eE24; + + /// The runtime code hash of the `RouteProcessorRaindexV6ArbOrderTaker` + /// contract at the published `0.1.13` tag. + bytes32 constant ROUTE_PROCESSOR_ARB_ORDER_TAKER_DEPLOYED_CODEHASH_0_1_13 = + 0x9a0d64fd312dc16761f28a7e13e48a8e8ad2f0ba5995c16710514e7524f43ee2; + + /// The deployed address of the `GenericPoolRaindexV6FlashBorrower` contract + /// at the published `0.1.13` tag. (Unchanged from `0.1.12`.) + address constant GENERIC_POOL_FLASH_BORROWER_DEPLOYED_ADDRESS_0_1_13 = 0x032d9D94A79909F3b337ECFE6f73f4e86bA79c7E; + + /// The runtime code hash of the `GenericPoolRaindexV6FlashBorrower` contract + /// at the published `0.1.13` tag. + bytes32 constant GENERIC_POOL_FLASH_BORROWER_DEPLOYED_CODEHASH_0_1_13 = + 0x03cde49152f7b5e29826ea8c561481b747b86be1f5cb4136fa064be6e4ac1c0d; + uint256 constant RAINDEX_START_BLOCK_ARBITRUM = 473899359; uint256 constant RAINDEX_START_BLOCK_BASE = 47387582; uint256 constant RAINDEX_START_BLOCK_FLARE = 63011168; diff --git a/test/concrete/parser/RaindexV6SubParser.signers.t.sol b/test/concrete/parser/RaindexV6SubParser.signers.t.sol index 45fdc44e43..9db10a20dc 100644 --- a/test/concrete/parser/RaindexV6SubParser.signers.t.sol +++ b/test/concrete/parser/RaindexV6SubParser.signers.t.sol @@ -72,4 +72,20 @@ contract RaindexV6SubParserSignersTest is OpTest { checkUnhappyParse2(rainlang, abi.encodeWithSelector(StackAllocationMismatch.selector, 2, 1)); } + + /// signer<256>() must resolve to the same row as signer<0>(): the row + /// operand is masked to its low byte so 256 wraps to 0. + function testSubParserContextSignerRowMaskLowByte() external view { + address subParserAddress = LibRaindexDeploy.SUB_PARSER_DEPLOYED_ADDRESS; + + StackItem[] memory expectedStack = new StackItem[](1); + expectedStack[0] = StackItem.wrap(keccak256(bytes("signer-0"))); + + bytes memory rainlang = + bytes(string.concat("using-words-from ", subParserAddress.toHexString(), " _: signer<256>();")); + + checkHappy( + rainlang, LibRaindexSubParserContextFixture.hashedNamesContext(), expectedStack, "signer-256-wraps-to-0" + ); + } }