@pytest.mark.parametrize(
"expected_output",
[pytest.param(Spec.PAIRING_TRUE, id=pytest.HIDDEN_PARAM)],
)
@pytest.mark.parametrize(
"input_data",
[
pytest.param(
Spec.INF_G1
+ Spec.INF_G2
+ Spec.INF_G1
+ Spec.INF_G2
+ Spec.INF_G1
+ Spec.INF_G2,
),
pytest.param(
Spec.INF_G1
+ Spec.INF_G2
+ Spec.INF_G1
+ Spec.INF_G2
+ Spec.INF_G1
+ Spec.INF_G2
+ Spec.INF_G1
+ Spec.INF_G2
+ Spec.INF_G1
+ Spec.INF_G2
+ Spec.INF_G1
+ Spec.INF_G2,
),
pytest.param(
Spec.INF_G1
+ Spec.INF_G2
+ PointG1(
0x103AA4B2AEFF1BC7AFC5CD39952C872C8F29D64188E8D18C1B65E526D6277A33,
0x209854E0AC153A98EFF0FD08A0C73D46DBBE4209F8A6A4F2AAD914E40686F472,
)
+ Spec.INF_G2
+ PointG1(0x1, 0x2)
+ Spec.INF_G2,
),
pytest.param(
Spec.INF_G1
+ PointG2(
(
0x0EF4AAC9B7954D5FC6EAFAE7F4F4C2A732AB05B45F8D50D102CEE4973F36EB2C,
0x23DB7D30C99E0A2A7F3BB5CD1F04635AAEA58732B58887DF93D9239C28230D28,
),
(
0x2BD99D31A5054F2556D226F2E5EF0E075423D8604178B2E2C08006311CAEE54F,
0x0F11AFB0C6073D12D21B13F4F78210E8CA9A66729206D3FCC2C1B04824C425F2,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
),
),
pytest.param(
PointG1(0x1, 0x2)
+ Spec.INF_G2
+ PointG1(0x1, 0x2)
+ Spec.INF_G2
+ PointG1(0x1, 0x2)
+ Spec.INF_G2
+ PointG1(0x1, 0x2)
+ Spec.INF_G2,
),
pytest.param(
PointG1(0x1, 0x2)
+ PointG2(
(
0x203E205DB4F19B37B60121B83A7333706DB86431C6D835849957ED8C3928AD79,
0x27DC7234FD11D3E8C36C59277C3E6F149D5CD3CFA9A62AEE49F8130962B4B3B9,
),
(
0x195E8AA5B7827463722B8C153931579D3505566B4EDF48D498E185F0509DE152,
0x04BB53B8977E5F92A0BC372742C4830944A59B4FE6B1C0466E2A6DAD122B5D2E,
),
)
+ PointG1(
0x104316C97997C17267A1BB67365523B4388E1306D66EA6E4D8F4A4A4B65F5C7D,
0x06E286B49C56F6293B2CEA30764F0D5EABE5817905468A41F09B77588F692E8B,
)
+ PointG2(
(
0x081070EFE3D4913DDE35BBA2513C426D065DEE815C478700CEF07180FB614618,
0x2432428B1490A4F25053D4C20C8723A73DE6F0681BD3A8FCA41008A6C3C28825,
),
(
0x2D50F18403272E96C10135F96DB0F8D0AEC25033EBDFFB88D2E7956C9BB198EC,
0x072462211EBC0A2F042F993D5BD76CAF4ADB5E99610DCF7C1D992595E6976AA3,
),
),
),
pytest.param(
PointG1(
0x0084C3136563609CE6D7218719AF3024E2163EA8124130CFB61C2521379B0067,
0x2E775227CCD46BB5BD8B9F9714ECAE9E037F8E91246B2A7E171337CF1332E341,
)
+ PointG2(
(
0x1FEE9EEA81AF0F92485CB60CEC6FDD90385B3F390C67D0885520BEA38A07BB08,
0x1242A8A318BA046CD7F4B87B4EDE31C0C19F823CE0AB3192F36ACC7683A91704,
),
(
0x11D50FA9A8A15815BAF103030117065601AFF6B54F4242D2A5A14E3147E89E25,
0x133CA084BE363F41CB3886EED01FA8D896A609C22E099C4C9F5BB5A4363A57AD,
),
)
+ PointG1(
0x2F9B2CAF0345E3EC3ECCBC16AF5713BBF15EAF2A17CD9F7A02966BD5E7CCD6FE,
0x185A77DFE45C4C1C9042C67FDB65D25BBD8B6F79DFDDE27458A35792653443F3,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
),
),
pytest.param(
PointG1(
0x00898CC97B5A1F95221E7272C6EA8CEB56E702D678AC6C24275A4F6147D2B279,
0x16F336255E3F8970FD79A12281E6A6BEE510E7D2CE5117214F4DD8C764E00EF3,
)
+ PointG2(
(
0x12580B380DDF94A3370E6842E68B260A12012AB02C883678ABF3F0F37606F55C,
0x268F02E60DFC36A40BB1FA3DBA22BBA44953358031876C21748D5D57DFB39EF4,
),
(
0x07C890D2B747CB1E0456C9C1B30C03BADFFB8CDE540704104B016976D0A37447,
0x2A3E2918076D66622D7D6014299B77850A74B2691DDA1DADCD0232FBBFE2A9E0,
),
)
+ PointG1(
0x2781B3ACE921B11D98193720D1493609C4D47F607A2266D608185C6382B5D235,
0x19797C215563C8B73CC7F0041D1F5FE1CE017B36AFBEFFE56683E3FFCCB9380B,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
),
),
pytest.param(
PointG1(
0x06236320CF783A01E2B8BE7816A84671DE9E8BEBDA0E8F957809EE1253565BAE,
0x0A4CE1AC405B9974E4EAF9342C2A43BD1FDC4EDC2BD18235249BF51EC4328744,
)
+ Spec.INF_G2
+ PointG1(0x1, 0x2)
+ Spec.INF_G2
+ PointG1(0x1, 0x2)
+ Spec.INF_G2,
),
pytest.param(
PointG1(
0x082A5B0EB620C491DC7CFBF269EA3E9DB35FDAF6C7C4BAA25A829127A56F63C4,
0x1C49E6C57C3C0DDCA035138E5AADB79AC638F67A918E6A4377200EBFA80ED188,
)
+ PointG2(
(
0x0BF4734681E3030E126C2A595DE85F80B46BD327BAE8A860A3ED5F5BE7318037,
0x116C5E07DE19E858EB720604F6E2935BF0F5E40D9194CFBA05BFEA0AB69F1D82,
),
(
0x263EE7293C68743B04034A5B63E1D2B65261F7C6758D8084A50419CC65D02AD2,
0x14189E61084D61CF2AD9B6140B951CA35AE18A008CB3C1C4904E59F462E66B04,
),
)
+ PointG1(
0x28EC2C3D544A901AD85AF62E1EC02AAC643E707A3A45983EF168877B6901A19D,
0x108E7A47061FD472BD715C35B71B842FC1914A8972E472A2A4FAA4880E0D2787,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
),
),
pytest.param(
PointG1(
0x09148BA3625B1D4862ECFED71970E395D22BC4DAFAA4A662546E4FB39141D8BA,
0x0A8F563782B2B31347C9E7CED5A21D959A38F4AE4BBC7CD37B1180A0D491CAD6,
)
+ PointG2(
(
0x17F32B902D2096A48B25F94AD6C692A99C68E937A4BAE3C820F25093CF2786AB,
0x155C57D2B7F4AEFC0E1A44A78C7D59D2CAC917546717C665DC001FA43CF57753,
),
(
0x17B81FE685DD2E24A14899EF74821D1D147B88FE0C63D0921EB45C191146E7E4,
0x1C9AE775EBA85EA225258C9BAFDF5CBAD6106CD79194F4B0F8E7814068370DAF,
),
)
+ PointG1(
0x302AC8191CD6D55B858891D05B919AD95F5E2F16B78C5B0AD2ECC72C3FE23842,
0x1A924FA7E779AD503830C25838C2489D9BBC21FD519CEB3F4A10F4DC3E3B72BE,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
),
),
pytest.param(
PointG1(
0x0EE7F0252E8210EAA3EE452C8731AD6864D8506BA61836F48C99A16A03D59B0D,
0x2BA1DDC868F452EF0CFDCAC410E9D38D726557B05EDC84F8D4F62203ACC1F9F0,
)
+ PointG2(
(
0x29AA08ECADE2C1D537C14BAF6CF62758C02E6F3C4EEB0B621AD3AB941B1559DE,
0x11EAC12AAF058F799EE8146F36A0BBBF8E67A0AA0F9E2C192BAFD05FF8DA45D3,
),
(
0x03B7BD661BECFA6FF5092B36F1768C815434F3B7F4254FB4B8ABF68E36086CD3,
0x196CAA297895D4A1D58A5FE388416FBAC2A74FB9BEB835DBBBAA8F6B63BF9CAB,
),
)
+ PointG1(
0x29A00816ED140FC36E515F43FB054C891B4B07F013C9E6D5C3F284C8528C71AE,
0x2F060699E8F54B1028B78E5F016D8142563947ADCAC5A5857137B6958DDC995E,
)
+ PointG2(
(
0x141DD828AF529924148912360FD71EF6A365A707173AA2C06C8290D54FAE458E,
0x1CF61D5E9CECED0C662C6E2DF96D63ADC7D84E182FA0F62E08B9AFDD5C90545E,
),
(
0x01F3E8049B7934995DEE28FAA0E401289B92CCD1A2F408C85383F5312F528C9E,
0x2C6AAA06B56E9D6C98A701B4A9CF2F8CFDDBFA93D7104D5EAFBAD9A84B5174E5,
),
),
),
pytest.param(
PointG1(
0x0F740D88DE760DF099674C96DD2D476B42673D0F2972E6D5D1F9DBA95A29D26A,
0x04A44D72C2A82088DA663FF162FE2D3DDD4A139E1EF6C0BBB1124D8DE75F7C68,
)
+ PointG2(
(
0x196346D9774F017C351DBBDD99960E834B188B3347B92FAC7F83CC6453617FE1,
0x1E3BA24A0848096A0D6484133AF97B7487CA9A4309CB5574D8BB96CFD7F22678,
),
(
0x235603772D0E9CF9503D05742962B07CD0AF71A7C7B757960CED6FCFA74D3DED,
0x1CEED193F30FBBE5E9A9438E82BAC927A0977B49F6E476AEE20923E1A230F2C4,
),
)
+ PointG1(
0x201AF9371C7CEA66800F961D6A7219DA9C27FBE61B5DF43FCCB275D8C034BF8E,
0x1F0E7C5A1143B0F8E850D9516EA2C836B0331521829DC2B71DBF775078C770F4,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
),
),
pytest.param(
PointG1(
0x107B8A2CB6318AABD95763C0CAFC3B24D8A9ACDF8DD967176F05C400951B3E06,
0x13A1C9847BF87C8CC79EF1120ED6E3E98412F0DD4E9C8C8C421057A2353279E6,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
)
+ PointG1(
0x2FB5B7E464A0A76D9ACA8698E73802782DA01FCE50384F459BE1427855C0EB50,
0x2E6C7AF07418CD0203FAD6A1ABDE95E745C41A78C6AD1AE7B1B2ADA2E643FD37,
)
+ PointG2(
(
0x260E01B251F6F1C7E7FF4E580791DEE8EA51D87A358E038B4EFE30FAC09383C1,
0x0118C4D5B837BCC2BC89B5B398B5974E9F5944073B32078B7E231FEC938883B0,
),
(
0x04FC6369F7110FE3D25156C1BB9A72859CF2A04641F99BA4EE413C80DA6A5FE4,
0x22FEBDA3C0C0632A56475B4214E5615E11E6DD3F96E6CEA2854A87D4DACC5E55,
),
),
),
pytest.param(
PointG1(
0x1147057B17237DF94A3186435ACF66924E1D382B8C935FDD493CEB38C38DEF73,
0x03CD046286139915160357CE5B29B9EA28BFB781B71734455D20EF1A64BE76CA,
)
+ PointG2(
(
0x0DAA7CC4983CF74C94607519DF747F61E317307C449BAFB6923F6D6A65299A7E,
0x1D48DB8F275830859FD61370ADDBC5D5EF3F0CE7491D16918E065F7E3727439D,
),
(
0x1CA8AC2F4A0F540E5505EDBE1D15D13899A2A0DFCCB012D068134AC66EDEC625,
0x2162C315417D1D12C9D7028C5619015391003A9006D4D8979784C7AF2C4537A3,
),
)
+ PointG1(
0x0D221A19CA86DAFA8CB804DAFF78FD3D1BED30AA32E7D4029B1AA69AFDA2D750,
0x018628C766A98DE1D0CCA887A6D90303E68A7729490F25F937B76B57624BA0BE,
)
+ PointG2(
(
0x14550CCF7139312DA6FA9EB1259C6365B0BD688A27473CCB42BC5CD6F14C8ABD,
0x165F8721EE9F614382C8C7EDB103C941D3A55C1849C9787F34317777D5D9365B,
),
(
0x0D19DA7439EDB573A1B3E357FAADE63D5D68B6031771FD911459B7AB0BDA9D3F,
0x25A50A44D10C99C5F107E3B3874F717873CB2D4674699A468204DF27C0C50A9A,
),
)
+ PointG1(
0x0D7136C59B907615E1B45CF730FBFD6CF38B7E126E85E52BE804620A23ACE4FB,
0x03E80C29D24ED5CC407329AE093BB1BE00F9E3C9332F532BC3658937110D7607,
)
+ PointG2(
(
0x2129813BD7247065AC58EAC42C81E874044E199F48C12AA749A9FE6BB6E4BDDC,
0x1B72B9AB4579283E62445555D5B2921424213D09A776152361C46988B82BE8A7,
),
(
0x111BC8198F932E379B8F9825F01AF0F5E5CACBF8BFE274BF674F6EAA6E338E04,
0x259F58D438FD6391E158C991E155966218E6A432703A84068A32543965749857,
),
)
+ PointG1(
0x1BA47A91D487CCE77AA78390A295DF54D9351637D67810C400415FB374278E3F,
0x24318BBC05A4E4D779B9498075841C360C6973C1C51DEA254281829BBC9AEF33,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
)
+ PointG1(
0x1E219772C16EEE72450BBF43E9CADAE7BF6B2E6AE6637CFEB1D1E8965287ACFB,
0x0347E7BF4245DEBD3D00B6F51D2D50FD718E6769352F4FE1DB0EFE492FED2FC3,
)
+ PointG2(
(
0x24FDCC7D4ED0953E3DAD500C7EF9836FC61DED44BA454EC76F0A6D0687F4C1B4,
0x282B18F7E59C1DB4852E622919B2CE9AA5980CA883EAC312049C19A3DEB79F6D,
),
(
0x0C9D6CE303B7811DD7EA506C8FA124837405BD209B8731BDA79A66EB7206277B,
0x1AC5DAC62D2332FAA8069FACA3B0D27FCDF95D8C8BAFC9074EE72B5C1F33AA70,
),
),
),
pytest.param(
PointG1(
0x117196C7EA11E6362BCA58533A55DE3DEADC441B18B0A7CA68557F374DFED6A6,
0x29B1B63F1D649480AA9655406C454B55CBBF8D29F3AEDC30DE3B0745BED3BE52,
)
+ PointG2(
(
0x226AD93C0A164E73D8D9161F9D0206AB232FA5A08CB349F7DF3633096CD04E92,
0x0DE4A56223EE43AA3C4A18BF4C84BE1879DD9182FD4A03318A4BEBD642627D1E,
),
(
0x142A0ED74BA11936E27101A43DB8E16F6A603953C3EA4B14EAEBBE117970268A,
0x2ABCED69FFBCE2E34440530111050A4D72282DD5F4FAA7703D5762D043271756,
),
)
+ PointG1(
0x19EEDB06C5D1F53510F7F7464B39730659ECCF0E9DFEEC2CC131FD0D27C4F8E3,
0x043AAEA131D0E69B79A816B675AC0DD21B4796046C149CA16DF5884D615025C5,
)
+ PointG2(
(
0x238F967690E26443E6F5207B5C2AF7FEDB837D534282C7DB1CA926A9BC06A739,
0x0EC4C043A606711A021205EF7D97785D9AE246BA06B2912E24FF9E669FB700B4,
),
(
0x2714A2E42C4BD73A79CD7B2243D1B784CADB22A58E6360BE1AF873424EFD420C,
0x12F54BDCF07FF30854629A0531065973197E685193051F2FA11A7761B0CC39F6,
),
),
),
pytest.param(
PointG1(
0x13B076F9E2DDF66BD1E9EC7509945EC37289D9AD65F210ED35E78BA2B02E7E3D,
0x2C6D9689097E79C4227B7B8519E4850BE2D795F9496A70AE8607A3172208371A,
)
+ PointG2(
(
0x0774089B1BE2375B269AC0CD913803AF1E8E967C7A12DED9E38BBFE816CB6B2B,
0x25E481BF589A76E531E3CBAEE9B47A07FB832B052A71029665A5CA89F1EB6D6B,
),
(
0x0F10223646F0D0F8F79189C456F40295FA02708A2629B8A88D7AE36CAAB47055,
0x2B4BF562F83ED28EDF524EDC1646B4C4CD538BEC5D544D8071F0C73406339B2E,
),
)
+ PointG1(
0x2043A8194E50B9FF3B93D13873035FEE0CCC3B4A0FDA33D34AC7A4771C9B884D,
0x291B24054553ECAB7EB9A6807281A895BDCF29E95D8D3A2552749B7FC0932637,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
),
),
pytest.param(
PointG1(
0x15D6EAAA18C5737E7BD229C2900F8DEDDF6DA9C0E20E7E905E7B7491D041EABA,
0x2AB7D1B2A259B85054253DA8947C2FD38B04A4EDE3BFA6E258E22F668DCB5A63,
)
+ PointG2(
(
0x092A62B029973FCD9EC18DB33EB4C7B6B649A2E6196561761789E39BC84F11AC,
0x0A59F2672462BE814A277F495D53244691C40DA85D39B210ED3E099B397A4CF9,
),
(
0x2AD603022931E8C20C927FA114866CA26B305156336511A9224D6BD88E5BA7FB,
0x2B44DD02DF7F7A846F546C77F3330CC171ABEEA7747EC03607C4B754A0710142,
),
)
+ PointG1(
0x1F4B96B82BD3631447045F1BB66198FA6A904E48092750762EFD419FB5FF52B5,
0x1FAC61C1A7265D0E1A6433E9767CB51C71E9AC5A119BE9894F509BF92B0FB1B4,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
),
),
pytest.param(
PointG1(
0x16F5D1473D8A9012DF4EFC624AE3B5FC3B1C1742BB73B9B62AA50C0DEC9848AD,
0x1B2381A593F0A661DB10B659329907FB62B4F5FD196092EF235F0775463B11F3,
)
+ PointG2(
(
0x054F9C54B1560A307E173C70FCE534A2E4C7B248EC342F968A9DB905FB31BA36,
0x2513859B9C3A196E357D5D4F34E17F5CB2D78F4160103ECAE86CB57A3E48EF77,
),
(
0x15E96B3AD7BFBCCC491029F30BE0CED0654C6C2600B49BFAFC70AF802B305A09,
0x154BB828C71576E1809723E3BBB5D459ECE5BDCCB9BCDFF733761FE908E1E1D5,
),
)
+ PointG1(
0x2F91CEC7B5D03D4C5930875239F825C55849B352FA27B4E20581FC4A68950C75,
0x2EE478820A0DC3F22866E7C5111D6FD1F057C18B7C9C1568173916CE67555C47,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
),
),
pytest.param(
PointG1(
0x18DD52DAAA11FF5DBB97C8776924D95B1BB86BF16481BA52519674873E0279EA,
0x0B32F4758CC18142794358E62B9C29951D3CB7E705D97E4CEFD8422FA340ED58,
)
+ PointG2(
(
0x04CBAC0707B92F59B87024017AAE6941A3D8F42C6B93C619FA85CD54A3F05963,
0x25EF128BD051C44F95F7AA6122A390666691C2EC8A328F5302605F0AAAE670DB,
),
(
0x14A3194DB0C978125B0212D2DBCF3639650E40F8ACAEFF5A5C20BA700DE3966F,
0x004D3F0A629EB1456685DB5A1B94D4B2F8DC0A9CDC5D29CCCC5B596D88BA29FE,
),
)
+ PointG1(
0x0BCF53D38A1B0732FD90B73149559E0EE767F525875EBDB26F7F123136282AFA,
0x28E440620EA4064D1F0190C75E2A36003F18643507A927926130EB54ECC1004D,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
),
),
pytest.param(
PointG1(
0x1B6E4577CC71DF5E856ED88D2D14A464343F140B07693E3B08308570B28FD55B,
0x24198AA6EE0F5BFEC020AD2FF15729434439E4AF7554FA0F7395EE20CB926346,
)
+ PointG2(
(
0x246B8E8C771C3DB7226A8066537632923D7D5A542F8E0D600E7F0195240F1EC5,
0x13CBE706F9BA436DD4A781FAB85FA2E9D82854446CF91182DCFA66EB68C4B7E7,
),
(
0x2533A60B837F9CF4838C4C38F4F9C8988FEE10C9895753E7925A86330E925DB7,
0x02F47F10F7DA957CFCC613361AB6AAEB67F14D22C06EEC14E47E36988C4EE067,
),
)
+ PointG1(
0x05A596BD22BBB13DC898ACFDD420C88893DD09F7FD4875E8B3FB65B54AD9643F,
0x2847AB3C7D853E89CFDF520DE28E1092C1955B7E17D9CBA5808F047A3D6898FD,
)
+ PointG2(
(
0x2F64F057DEDA8BBB646D5B9864D9789A696ABF2A42218F7AF28BAAE517F5E457,
0x23BD3952D332068086B2079260B285896CB84C73ECE3647094FAC90D8B1374C2,
),
(
0x1EEBB3F8EA3C3D9147FA09E4506BCFF1C222A02EA8B4904FC6DF3BCA1CC0505E,
0x133D9A4794EB099E9BDF82A6FECDB2E2E29B0867BF0FE557475DC758D796714E,
),
),
),
pytest.param(
PointG1(
0x1EE2AF29808BC7BAAD8EB3E87BF55588EF59763AE59585453AA57222A6040914,
0x1756D11B0679F2E3C44A95592D270F55F76670C2D248FE2C0B391A11AA90D0EC,
)
+ PointG2(
(
0x0EA16E33157B6D0F197ED197CE3AD5B93AC91458632464DD5E4AA23EC628E6CB,
0x03C160EB0D2AB47566D495F1A53B7B1CDB659CB64E26C848C74267BC74FFEEC8,
),
(
0x1D5EE181514337F685E60BA02DACCDED24EA3122FB04D9DA37790F3DCE545878,
0x03087C55D223005FF8AD78F6F417B19CAFF564E8B8CB820D0EADB6BEC43F0CF9,
),
)
+ PointG1(
0x02B88F6E24920BD60DBBF082DF1CD200ABF141B6C01E7FCB262525364C14C205,
0x02958D26F4E6AD2D9B1DB8A6B23E7FA5DC4D0E4C6673B0F840C000EEAC001988,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
),
),
pytest.param(
PointG1(
0x1F357DB2CD961C374F81A4AE374F5306787361C3AEA270815962003C0915B5D2,
0x044C12E4C6321F0A73B09480C1D7A84CE30EE9219B3B649FF36EC7553150428F,
)
+ PointG2(
(
0x1B789C458E1E033DB933F65230C01F173DC581494D23407494818CBC70C5E4EB,
0x05685001B0F48E5191BC50797F1330BEB69D7DABE58B9B7D0C9C86C61C8D2A33,
),
(
0x01C8DC500074BC4207038E94F028D954405D8B6FF8B3F1B52A7CE67C97382C0B,
0x0A9C7D7844CA3F0A571B04211C021DC96A29628119B067364A06FEA760698A06,
),
)
+ PointG1(
0x0452283EEFD9B336E591F37119AA473F03932C9C6D7CB0256C93E2BB7EBC2140,
0x24A87B7AFBB4143434A5AECBEC2C38E02C7E01E8B056B812C80DEAB761BD9429,
)
+ PointG2(
(
0x06B4A2CADF0C0D14E9015F1DD1833E1A71BDECFCC8D400F0C96C309DD8F3F30E,
0x243FDDB630078AF3593C50273C6FBC2C33F2FC6E208AD1E6DD537079F569CD5F,
),
(
0x25E6C61EB8D52BFE15205FB66A6E90DA703A7CB8B441023F90AE987E35C72F80,
0x0E8E708E896B7BA90163F4DD87BB6660359CA5558473831DEA4AAC4D222FE443,
),
),
),
pytest.param(
PointG1(
0x21B1479BE2A88D421D6AA893A59FE4966322436BCD047E610F90929A5823188A,
0x2FEB0BAED066808BE65012E37E364243877A4D47B75CD9FFE4A5DF3011A68F90,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
)
+ PointG1(
0x1AA2BA0E64E80047D931DF5931420DE2D4DC0B7B6FC83121A9F155DDF9D65775,
0x20108E265338E3F2BDCC276BF69D955D60C73419D7BA24C25A40E9EFD4CB24B8,
)
+ PointG2(
(
0x0DBBD035AB913DC40917C815E66941EEF6529D94ECBAAEE8F77EFE9AAC45AAB2,
0x2FF4691BD3AA5F5BBB6067C1A4392DC87BB7A9997F7A660DD960DF462203C18F,
),
(
0x2D4E9EE9F56967D24826884A2473B374D24B5AFEF1CB8D11555A2A62249B44A9,
0x07A93F02C17DA88BBEF2E8B41A34EE1137AA7EDB0459E06BE0BD88EF68A876B0,
),
),
),
pytest.param(
PointG1(
0x2371E7D92E9FC444D0E11526F0752B520318C80BE68BF0131704B36B7976572E,
0x2DCA8F05ED5D58E0F2E13C49AE40480C0F99DFCD9268521EEA6C81C6387B66C4,
)
+ PointG2(
(
0x051A93D697DB02AFD3DCF8414ECB906A114A2BFDB6B06C95D41798D1801B3CBD,
0x2E275FEF7A0BDB0A2AEA77D8EC5817E66E199B3D55BC0FA308DCDDA74E85060B,
),
(
0x1C7E33C2A72D6E12A31EABABAD3DBC388525135628102BB64742D9E325F43410,
0x115DC41FA10B2DBF99036F252AD6F00E8876B22F02CB4738DC4413B22EA9B2DF,
),
)
+ PointG1(
0x09A760EA8F9BD87DC258A949395A03F7D2500C6E72C61F570986328A096B610A,
0x148027063C072345298117EB2CB980AD79601DB31CC69BBA6BCBE4937ADA6720,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
),
),
pytest.param(
PointG1(
0x23E6648726D779A5E9943A9CB2C3D89CC966F0CA965BBE7BBDC1BD93DF642930,
0x2A1E299A0D2C7FB74AF9E086C19B07B357C55E76D2C65FBA3B122C8158EE2B76,
)
+ PointG2(
(
0x071A0694C6A785AE2FF2553F4C06E2D24D031B86A4023A0D41A095B9D35EC8D3,
0x0C1AB42B9A9D852E0901C708A5A0DFA9920E0BA08828620A5EBBDF1FFB8F9D85,
),
(
0x1741332DCD8798B695EDF6BE41E0E58803AB926516D0D600514C4572575B2924,
0x1A64993DDD9BE2BAB46A7190024DE9E051862F46AC3130DB54EDE8C322E604A2,
),
)
+ PointG1(
0x2E198A9651F4D48DC87F0EBC9FBA1061D49962668790EDC37948681DA728A79F,
0x1649DC12A9101AD7E6C1631C1290BEC29720BF5617EE6B5AFA720733748BC3FE,
)
+ PointG2(
(
0x2AE647DA926E44CC8E5476A15FFC62F11EAFC89CB7D1D9EA1107403E1773C49A,
0x2408EAAABD36AA0A8DC6DB3FB091F3C8B4DF202714F74AE8D8CCA11A216A3017,
),
(
0x25EF6BF83C607781E9C1696E31CB5BAA60B9E2DEB0856479B342737592C09612,
0x11D363F2F2FC286D903A1E94C6673714464530BDB734DED5608B4654466D3F35,
),
),
),
pytest.param(
PointG1(
0x24AB69F46F3E3333027D67D51AF71571141BD5652B9829157A3C5D1268461984,
0x0F0E1495665BCCF97D627B714E8A49E9C77C21E8D5B383AD7DDE7E50040D0F62,
)
+ PointG2(
(
0x2CAB595B9D579F8B82E433249B83AE1D7B62D7073A4F67CB3AEB9B316988907F,
0x1326D1905FFDE0C77E8EBD98257AA239B05AE76C8EC7723EC19BBC8282B0DEBE,
),
(
0x130502106676B537E01CC356765E91C005D6C4BD1A75F5F6D41D2556C73E56AC,
0x2DC4CB08068B4AA5F14B7F1096AB35D5C13D78319EC7E66E9F67A1FF20CBBF03,
),
)
+ PointG1(
0x1459F4140B271CBC8746DE9DFCB477D5B72D50EF95BEC5FEF4A68DD69DDFDB2E,
0x2C589584551D16A9723B5D356D1EE2066D10381555CDC739E39EFCA2612FC544,
)
+ PointG2(
(
0x229AB0ABDB0A7D1A5F0D93FB36CE41E12A31BA52FD9E3C27BEBCE524AB6C4E9B,
0x00F8756832B244377D06E2D00EEB95EC8096DCFD81F4E4931B50FEA23C04A2FE,
),
(
0x29605352CE973EC48D1AB2C8355643C999B70FF771946078B519C556058C3D56,
0x059A65AE6E0189D4E04A966140AA40F781A1345824A90A91BB035E12AD29AF1D,
),
),
),
pytest.param(
PointG1(
0x24AB69F46F3E3333027D67D51AF71571141BD5652B9829157A3C5D1268461984,
0x0F0E1495665BCCF97D627B714E8A49E9C77C21E8D5B383AD7DDE7E50040D0F62,
)
+ PointG2(
(
0x2CAB595B9D579F8B82E433249B83AE1D7B62D7073A4F67CB3AEB9B316988907F,
0x1326D1905FFDE0C77E8EBD98257AA239B05AE76C8EC7723EC19BBC8282B0DEBE,
),
(
0x130502106676B537E01CC356765E91C005D6C4BD1A75F5F6D41D2556C73E56AC,
0x2DC4CB08068B4AA5F14B7F1096AB35D5C13D78319EC7E66E9F67A1FF20CBBF03,
),
)
+ PointG1(
0x1459F4140B271CBC8746DE9DFCB477D5B72D50EF95BEC5FEF4A68DD69DDFDB2E,
0x2C589584551D16A9723B5D356D1EE2066D10381555CDC739E39EFCA2612FC544,
)
+ PointG2(
(
0x229AB0ABDB0A7D1A5F0D93FB36CE41E12A31BA52FD9E3C27BEBCE524AB6C4E9B,
0x00F8756832B244377D06E2D00EEB95EC8096DCFD81F4E4931B50FEA23C04A2FE,
),
(
0x29605352CE973EC48D1AB2C8355643C999B70FF771946078B519C556058C3D56,
0x059A65AE6E0189D4E04A966140AA40F781A1345824A90A91BB035E12AD29AF1D,
),
)
+ PointG1(
0x1459F4140B271CBC8746DE9DFCB477D5B72D50EF95BEC5FEF4A68DD69DDFDB2E,
0x2C589584551D16A9723B5D356D1EE2066D10381555CDC739E39EFCA2612FC544,
)
+ PointG2(
(
0x229AB0ABDB0A7D1A5F0D93FB36CE41E12A31BA52FD9E3C27BEBCE524AB6C4E9B,
0x00F8756832B244377D06E2D00EEB95EC8096DCFD81F4E4931B50FEA23C04A2FE,
),
(
0x29605352CE973EC48D1AB2C8355643C999B70FF771946078B519C556058C3D56,
0x059A65AE6E0189D4E04A966140AA40F781A1345824A90A91BB035E12AD29AF1D,
),
)
+ PointG1(
0x24AB69F46F3E3333027D67D51AF71571141BD5652B9829157A3C5D1268461984,
0x0F0E1495665BCCF97D627B714E8A49E9C77C21E8D5B383AD7DDE7E50040D0F62,
)
+ PointG2(
(
0x2CAB595B9D579F8B82E433249B83AE1D7B62D7073A4F67CB3AEB9B316988907F,
0x1326D1905FFDE0C77E8EBD98257AA239B05AE76C8EC7723EC19BBC8282B0DEBE,
),
(
0x130502106676B537E01CC356765E91C005D6C4BD1A75F5F6D41D2556C73E56AC,
0x2DC4CB08068B4AA5F14B7F1096AB35D5C13D78319EC7E66E9F67A1FF20CBBF03,
),
),
),
pytest.param(
PointG1(
0x2B5154892605B4B57C6F309A1F39D91A89D985264F9DC47342470B5605532939,
0x153954F4AC012E3D5860731081C59B0B5D9DF76EEECA47C1EDE99D0A73A8D135,
)
+ PointG2(
(
0x1B7962C4F91943B75BFA71D26698F33807C0A82C4AFF43116E6B0E97E087D64E,
0x0337B7F3F182A6241093041180E874062C10467E0147E1ABD93857DDA7E6AA34,
),
(
0x153CAC48663D8DE0C9F23D1A2CECF0BD14F6D7CF877EF833751F8A524D0F4C1C,
0x1FF902721CD414E4C564C569143A0356D3B6CB7B1970067365C0A0F8ECB4976B,
),
)
+ PointG1(
0x0DA26CA39BACCC3B276B50CBD06DB50B1C544055C0C636256FA35AFDAFEE49BF,
0x2238E1B69BC5E674C9351B702C26021F8EB254E0F890595F5F22CA04B2057480,
)
+ PointG2(
(
0x03D0A15AC5814B86F5463C48D5F7D398DA010569D67F979B2AF9381802B485FD,
0x2D3DE1B5338AC2222D3D1BFCA2E20F7C1A280780BA9ABD54B46D42380FDA599C,
),
(
0x243C33DBB5C54E9566FDDA8567E059B596FBA1E9AFEF57DEB1703F27CD93CE74,
0x19779141BB51EAA0EA4F1FD39EFC61AEE4E6B40316248277599C599EC30C8DD4,
),
),
),
pytest.param(
PointG1(
0x2CC6C9ACABC199E21BE075D6D7885ACFA1F38FEC18999D78105C87E55A5D8EB7,
0x238E3F5EDEA71116B4905645DF360589EED6E69FF4145A28C6AE29599CCB590E,
)
+ PointG2(
(
0x0E8248A6CCD8770C3CDBBD6D7F247C76F189978508B6F3514877833B00A7C593,
0x261D44028C3119AD2707A456739918AD10B51E7257B539A34E7F479F2E76707A,
),
(
0x2B359C070959C19EB7BB2BF1DBBB2CC060558F6DD682965535CBA0F2392D13B8,
0x18A023E2B4D60C38C7C0AB6AF9FF0887DD192AC88B5070851F4D0E7495A1144D,
),
)
+ PointG1(
0x0ED1531303F89B56EBE6E9A39E7B7C4B5F2385D774AB00AB0B3C32C9B110552A,
0x0794C8D242F2AA6F638A597E53D8F236C780FCAC4A7E2CABCB688896A84046C7,
)
+ PointG2(
(
0x13532C71AEAC024EEA1BBCCB01B45CEB4AD91E106200B7E25B0E30BC588D7835,
0x20692D41373A18914E163949FA765D49DBAA5999B1D606300A469555DA182B59,
),
(
0x1FE664FC1DC73F67D3261D81477FD5B43E9B7D9A376A09E4A2B82F935CE0EF73,
0x0ABD60B3B4CA1E15EAE3DD484E5E22F0F8F50DFBC756B40CB2406E6A1D86C07C,
),
),
),
pytest.param(
PointG1(
0x2E565CD418929C3795ADF3EA378F2616AF24A1D7A93962C5BE375E7FBDFE3D73,
0x1197465669E70FD0793C00FB922D25DD53C8C35D4D686985E4E04741569497D1,
)
+ Spec.INF_G2
+ PointG1(
0x03A781E0964591A816D07C8D6AA23D23B2AD50AE3ACC529F877ABF4D13E3F35E,
0x0FC25D443BA88FF661C914498D09F6C47BD3DB7F8768C13AC2602E02250C34D1,
)
+ Spec.INF_G2,
),
pytest.param(
PointG1(
0x2E5E8D67B60E1D06ACD7A490F8394BE4AAB0ECA89EAC6738FFF6664263500F2B,
0x23A1B85312F58351B078BFABD3AB8517E383900CC23A4D9A8FDB0A5AE691BD00,
)
+ PointG2(
(
0x23751D707CD5ABABE78100ADE4BCC1691182EF8A6086BE7AF4A0A62B52D7A594,
0x0DEA3332F3C63C37814CBA5AFB4380C5C3EE3920EF5DE5484C1961A98430C282,
),
(
0x0C10E66F5BD143C35562D6B5F1BD6D0A256F4AFB69641A3D8C871F5CAA98FA6A,
0x1C8F31E252726F5FB9F5F444F60B32FCF94BA5E077C9724D36246EC666D767CC,
),
)
+ PointG1(
0x1F0BEFE534AA028FAF6181644D6774E4E14F600A5657B3E2F6287115317F678C,
0x13357844009932B0B873101C362A9EE9FEA643412DA278256377C345E3F409DC,
)
+ PointG2(
(
0x1DB60E215FC52C5AF9D1B5045473F2F06BB20399DE3CDE3CE877BA545B994F33,
0x27C359CD987E9F2D05F015974E1B18B98B8F9684A24B0A50441244333BF5A35A,
),
(
0x023036AEB27F556CA1E93DD351651594C723239A7C0CB15B8AB7A0446BA789FF,
0x17E4FCBE1D017009100203F39E446D7B686E30FCE3323EF61D46BC956143947C,
),
),
),
pytest.param(
PointG1(
0x30618669FA4F387A7E9FCBF763BC0DC9908CF927D1F92B585CA17D46B7E97FD9,
0x02ACC05526844E174394B69B1E0B78D24F7B5BD0CFADCB6A33AA6DC090D9028F,
)
+ PointG2(
(
0x160C5AF4494850EE7590972D0EFDA781E2879E76C807A16DD60EDE657E0BE6A8,
0x230F495774D31E8B73BF7CE73E6F87826D7A59E1C47B508D5F953A61C2B4939F,
),
(
0x0492560C98F9FEAB356C744C09F1EC80F5FC9CC579F9929A3C7D9046585431B7,
0x273A1175635E2AB1F1B63838C13BD9D1DAF4DAD2620A0E72BEAE5F66AB88ACAB,
),
)
+ PointG1(
0x0F0887388FBCFEED9D128B7324B47676549D378C55D6D28B80CC179258A28017,
0x11423DE6D1555ACFFE946EEBAEE182F8D007D5BAFEA10C7E00236552DE1C68B3,
)
+ PointG2(
(
0x2B74C50FE814021736DF034CFE502673B483BAA8F12825B9C7F74C59943CA535,
0x16196E1E69CEE3DC1A0CEEBCD6163C57F0155AFB41D78AAC57966A2681FCCD02,
),
(
0x29B85E084727DB2843D66CC73E163875AE0CDF5CE9386BD6B2BE7018476D4606,
0x25BB91869E1C2453109BA45CDA0FA3F4BA9B8186DF72098E81CA6F131140D8B0,
),
),
),
],
ids=lambda _: "positive_",
)
def test_positive(
state_test: StateTestFiller,
pre: Alloc,
post: dict,
tx: Transaction,
) -> None:
"""Test valid inputs where the pairing check succeeds."""
state_test(
env=Environment(),
pre=pre,
tx=tx,
post=post,
)