diff --git a/Pipfile b/Pipfile index 3e29adb2f..100bbf90e 100644 --- a/Pipfile +++ b/Pipfile @@ -15,7 +15,7 @@ ape-infura = "*" ape-foundry = "*" flake8 = "*" isort = "*" -nucypher-core = "==0.15.0" +nucypher-core = { git = "https://github.com/nucypher/nucypher-core.git", ref = "main", subdirectory = "nucypher-core-python" } pre-commit = "*" tox = "*" pyyaml = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 89a7fc63d..7ccf063ad 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "edfc0c49181708fbe2af2edbb2fb7a2fe2b9ae07048e883aa22aca0bd1cd44fc" + "sha256": "09883f2c9b0b4d2bb985a9da4df3adfb5ede7c7b482d7ba5fac51cff02cde871" }, "pipfile-spec": 6, "requires": { @@ -26,95 +26,129 @@ }, "aiohttp": { "hashes": [ - "sha256:010cc9bbd06db80fe234d9003f67e97a10fe003bfbedb40da7d71c1008eda0fe", - "sha256:049ec0360f939cd164ecbfd2873eaa432613d5e77d6b04535e3d1fbae5a9e645", - "sha256:098e92835b8119b54c693f2f88a1dec690e20798ca5f5fe5f0520245253ee0af", - "sha256:0a146708808c9b7a988a4af3821379e379e0f0e5e466ca31a73dbdd0325b0263", - "sha256:0a23918fedc05806966a2438489dcffccbdf83e921a1170773b6178d04ade142", - "sha256:0c643f4d75adea39e92c0f01b3fb83d57abdec8c9279b3078b68a3a52b3933b6", - "sha256:1004e67962efabbaf3f03b11b4c43b834081c9e3f9b32b16a7d97d4708a9abe6", - "sha256:14954a2988feae3987f1eb49c706bff39947605f4b6fa4027c1d75743723eb09", - "sha256:1a649001580bdb37c6fdb1bebbd7e3bc688e8ec2b5c6f52edbb664662b17dc84", - "sha256:2776c7ec89c54a47029940177e75c8c07c29c66f73464784971d6a81904ce9d1", - "sha256:2abbb216a1d3a2fe86dbd2edce20cdc5e9ad0be6378455b05ec7f77361b3ab50", - "sha256:2c7d81a277fa78b2203ab626ced1487420e8c11a8e373707ab72d189fcdad20a", - "sha256:2ce13fcfb0bb2f259fb42106cdc63fa5515fb85b7e87177267d89a771a660b79", - "sha256:2e5a495cb1be69dae4b08f35a6c4579c539e9b5706f606632102c0f855bcba7c", - "sha256:2ee8a8ac39ce45f3e55663891d4b1d15598c157b4d494a4613e704c8b43112cd", - "sha256:3b6f0af863cf17e6222b1735a756d664159e58855da99cfe965134a3ff63b0b0", - "sha256:3bdd6e17e16e1dbd3db74d7f989e8af29c4d2e025f9828e6ef45fbdee158ec75", - "sha256:3beb14f053222b391bf9cf92ae82e0171067cc9c8f52453a0f1ec7c37df12a77", - "sha256:3c5092ce14361a73086b90c6efb3948ffa5be2f5b6fbcf52e8d8c8b8848bb97c", - "sha256:3ead1c00f8521a5c9070fcb88f02967b1d8a0544e6d85c253f6968b785e1a2ab", - "sha256:3eae49032c29d356b94eee45a3f39fdf4b0814b397638c2f718e96cfadf4c4e4", - "sha256:3f9d7c55b41ed687b9d7165b17672340187f87a773c98236c987f08c858145a9", - "sha256:40b3fee496a47c3b4a39a731954c06f0bd9bd3e8258c059a4beb76ac23f8e421", - "sha256:421da6fd326460517873274875c6c5a18ff225b40da2616083c5a34a7570b685", - "sha256:4420cf9d179ec8dfe4be10e7d0fe47d6d606485512ea2265b0d8c5113372771b", - "sha256:46749be6e89cd78d6068cdf7da51dbcfa4321147ab8e4116ee6678d9a056a0cf", - "sha256:47f6b962246f0a774fbd3b6b7be25d59b06fdb2f164cf2513097998fc6a29693", - "sha256:4c39e87afe48aa3e814cac5f535bc6199180a53e38d3f51c5e2530f5aa4ec58c", - "sha256:4fc61385e9c98d72fcdf47e6dd81833f47b2f77c114c29cd64a361be57a763a2", - "sha256:5015082477abeafad7203757ae44299a610e89ee82a1503e3d4184e6bafdd519", - "sha256:5346b93e62ab51ee2a9d68e8f73c7cf96ffb73568a23e683f931e52450e4148d", - "sha256:536ad7234747a37e50e7b6794ea868833d5220b49c92806ae2d7e8a9d6b5de02", - "sha256:56822ff5ddfd1b745534e658faba944012346184fbfe732e0d6134b744516eea", - "sha256:57d16590a351dfc914670bd72530fd78344b885a00b250e992faea565b7fdc05", - "sha256:5fa5d9eb82ce98959fc1031c28198b431b4d9396894f385cb63f1e2f3f20ca6b", - "sha256:6404dfc8cdde35c69aaa489bb3542fb86ef215fc70277c892be8af540e5e21c0", - "sha256:6443cca89553b7a5485331bc9bedb2342b08d073fa10b8c7d1c60579c4a7b9bd", - "sha256:691d203c2bdf4f4637792efbbcdcd157ae11e55eaeb5e9c360c1206fb03d4d98", - "sha256:6990ef617f14450bc6b34941dba4f12d5613cbf4e33805932f853fbd1cf18bfb", - "sha256:6c5f40ec615e5264f44b4282ee27628cea221fcad52f27405b80abb346d9f3f8", - "sha256:6d86a2fbdd14192e2f234a92d3b494dd4457e683ba07e5905a0b3ee25389ac9f", - "sha256:74bdd8c864b36c3673741023343565d95bfbd778ffe1eb4d412c135a28a8dc89", - "sha256:74dad41b3458dbb0511e760fb355bb0b6689e0630de8a22b1b62a98777136e16", - "sha256:760fb7db442f284996e39cf9915a94492e1896baac44f06ae551974907922b64", - "sha256:79b26fe467219add81d5e47b4a4ba0f2394e8b7c7c3198ed36609f9ba161aecb", - "sha256:7c7dd29c7b5bda137464dc9bfc738d7ceea46ff70309859ffde8c022e9b08ba7", - "sha256:7fbc8a7c410bb3ad5d595bb7118147dfbb6449d862cc1125cf8867cb337e8728", - "sha256:802d3868f5776e28f7bf69d349c26fc0efadb81676d0afa88ed00d98a26340b7", - "sha256:83603f881e11f0f710f8e2327817c82e79431ec976448839f3cd05d7afe8f830", - "sha256:8466151554b593909d30a0a125d638b4e5f3836e5aecde85b66b80ded1cb5b0d", - "sha256:86ceded4e78a992f835209e236617bffae649371c4a50d5e5a3987f237db84b8", - "sha256:894261472691d6fe76ebb7fcf2e5870a2ac284c7406ddc95823c8598a1390f0d", - "sha256:8e995e1abc4ed2a454c731385bf4082be06f875822adc4c6d9eaadf96e20d406", - "sha256:8faa08fcc2e411f7ab91d1541d9d597d3a90e9004180edb2072238c085eac8c2", - "sha256:9b2af240143dd2765e0fb661fd0361a1b469cab235039ea57663cda087250ea9", - "sha256:9f922ffd05034d439dde1c77a20461cf4a1b0831e6caa26151fe7aa8aaebc315", - "sha256:a041e7e2612041a6ddf1c6a33b883be6a421247c7afd47e885969ee4cc58bd8d", - "sha256:aaa2234bb60c4dbf82893e934d8ee8dea30446f0647e024074237a56a08c01bd", - "sha256:ac77f709a2cde2cc71257ab2d8c74dd157c67a0558a0d2799d5d571b4c63d44d", - "sha256:ad702e57dc385cae679c39d318def49aef754455f237499d5b99bea4ef582e51", - "sha256:b2acbbfff69019d9014508c4ba0401822e8bae5a5fdc3b6814285b71231b60f3", - "sha256:b390ef5f62bb508a9d67cb3bba9b8356e23b3996da7062f1a57ce1a79d2b3d34", - "sha256:b52dcf013b57464b6d1e51b627adfd69a8053e84b7103a7cd49c030f9ca44461", - "sha256:b5b7fe4972d48a4da367043b8e023fb70a04d1490aa7d68800e465d1b97e493b", - "sha256:b6fc902bff74d9b1879ad55f5404153e2b33a82e72a95c89cec5eb6cc9e92fbc", - "sha256:b7011a70b56facde58d6d26da4fec3280cc8e2a78c714c96b7a01a87930a9530", - "sha256:b761bac1192ef24e16706d761aefcb581438b34b13a2f069a6d343ec8fb693a5", - "sha256:b784d6ed757f27574dca1c336f968f4e81130b27595e458e69457e6878251f5d", - "sha256:b97752ff12cc12f46a9b20327104448042fce5c33a624f88c18f66f9368091c7", - "sha256:bc4fbc61bb3548d3b482f9ac7ddd0f18c67e4225aaa4e8552b9f1ac7e6bda9e5", - "sha256:bc9a0f6569ff990e0bbd75506c8d8fe7214c8f6579cca32f0546e54372a3bb54", - "sha256:bd44d5936ab3193c617bfd6c9a7d8d1085a8dc8c3f44d5f1dcf554d17d04cf7d", - "sha256:ced339d7c9b5030abad5854aa5413a77565e5b6e6248ff927d3e174baf3badf7", - "sha256:d3ce17ce0220383a0f9ea07175eeaa6aa13ae5a41f30bc61d84df17f0e9b1117", - "sha256:d5f1b4ce5bc528a6ee38dbf5f39bbf11dd127048726323b72b8e85769319ffc4", - "sha256:d849b0901b50f2185874b9a232f38e26b9b3d4810095a7572eacea939132d4e1", - "sha256:db71ce547012a5420a39c1b744d485cfb823564d01d5d20805977f5ea1345676", - "sha256:e153e8adacfe2af562861b72f8bc47f8a5c08e010ac94eebbe33dc21d677cd5b", - "sha256:edd533a07da85baa4b423ee8839e3e91681c7bfa19b04260a469ee94b778bf6d", - "sha256:f0adb4177fa748072546fb650d9bd7398caaf0e15b370ed3317280b13f4083b0", - "sha256:f0fa751efb11a541f57db59c1dd821bec09031e01452b2b6217319b3a1f34f3d", - "sha256:f2800614cd560287be05e33a679638e586a2d7401f4ddf99e304d98878c29444", - "sha256:f813c3e9032331024de2eb2e32a88d86afb69291fbc37a3a3ae81cc9917fb3d0", - "sha256:fc49c4de44977aa8601a00edbf157e9a421f227aa7eb477d9e3df48343311065", - "sha256:fd736ed420f4db2b8148b52b46b88ed038d0354255f9a73196b7bbce3ea97545", - "sha256:fe086edf38b2222328cdf89af0dde2439ee173b8ad7cb659b4e4c6f385b2be3d" + "sha256:04c3971421576ed24c191f610052bcb2f059e395bc2489dd99e397f9bc466329", + "sha256:05c4dd3c48fb5f15db31f57eb35374cb0c09afdde532e7fb70a75aede0ed30f6", + "sha256:070599407f4954021509193404c4ac53153525a19531051661440644728ba9a7", + "sha256:0740f31a60848d6edb296a0df827473eede90c689b8f9f2a4cdde74889eb2254", + "sha256:088912a78b4d4f547a1f19c099d5a506df17eacec3c6f4375e2831ec1d995742", + "sha256:0a3d54e822688b56e9f6b5816fb3de3a3a64660efac64e4c2dc435230ad23bad", + "sha256:0db1e24b852f5f664cd728db140cf11ea0e82450471232a394b3d1a540b0f906", + "sha256:0e87dff73f46e969af38ab3f7cb75316a7c944e2e574ff7c933bc01b10def7f5", + "sha256:1237c1375eaef0db4dcd7c2559f42e8af7b87ea7d295b118c60c36a6e61cb811", + "sha256:16f15a4eac3bc2d76c45f7ebdd48a65d41b242eb6c31c2245463b40b34584ded", + "sha256:1f9b2c2d4b9d958b1f9ae0c984ec1dd6b6689e15c75045be8ccb4011426268ca", + "sha256:204ffff2426c25dfda401ba08da85f9c59525cdc42bda26660463dd1cbcfec6f", + "sha256:20b10bbfbff766294fe99987f7bb3b74fdd2f1a2905f2562132641ad434dcf98", + "sha256:20db2d67985d71ca033443a1ba2001c4b5693fe09b0e29f6d9358a99d4d62a8a", + "sha256:228a1cd556b3caca590e9511a89444925da87d35219a49ab5da0c36d2d943a6a", + "sha256:2372b15a5f62ed37789a6b383ff7344fc5b9f243999b0cd9b629d8bc5f5b4155", + "sha256:23ad365e30108c422d0b4428cf271156dd56790f6dd50d770b8e360e6c5ab2e6", + "sha256:23fb0783bc1a33640036465019d3bba069942616a6a2353c6907d7fe1ccdaf4e", + "sha256:2475391c29230e063ef53a66669b7b691c9bfc3f1426a0f7bcdf1216bdbac38b", + "sha256:27e569eb9d9e95dbd55c0fc3ec3a9335defbf1d8bc1d20171a49f3c4c607b93e", + "sha256:29562998ec66f988d49fb83c9b01694fa927186b781463f376c5845c121e4e0b", + "sha256:2adebd4577724dcae085665f294cc57c8701ddd4d26140504db622b8d566d7aa", + "sha256:2ca6ffef405fc9c09a746cb5d019c1672cd7f402542e379afc66b370833170cf", + "sha256:2e1a9bea6244a1d05a4e57c295d69e159a5c50d8ef16aa390948ee873478d9a5", + "sha256:364e25edaabd3d37b1db1f0cbcee8c73c9a3727bfa262b83e5e4cf3489a2a9dc", + "sha256:364f55663085d658b8462a1c3f17b2b84a5c2e1ba858e1b79bff7b2e24ad1514", + "sha256:39d02cb6025fe1aabca329c5632f48c9532a3dabccd859e7e2f110668972331f", + "sha256:3a92cf4b9bea33e15ecbaa5c59921be0f23222608143d025c989924f7e3e0c07", + "sha256:40176a52c186aefef6eb3cad2cdd30cd06e3afbe88fe8ab2af9c0b90f228daca", + "sha256:4356474ad6333e41ccefd39eae869ba15a6c5299c9c01dfdcfdd5c107be4363e", + "sha256:43dff14e35aba17e3d6d5ba628858fb8cb51e30f44724a2d2f0c75be492c55e9", + "sha256:4647d02df098f6434bafd7f32ad14942f05a9caa06c7016fdcc816f343997dd0", + "sha256:47f438b1a28e926c37632bff3c44df7d27c9b57aaf4e34b1def3c07111fdb782", + "sha256:4dd3db9d0f4ebca1d887d76f7cdbcd1116ac0d05a9221b9dad82c64a62578c4d", + "sha256:4ebf9cfc9ba24a74cf0718f04aac2a3bbe745902cc7c5ebc55c0f3b5777ef213", + "sha256:5276807b9de9092af38ed23ce120539ab0ac955547b38563a9ba4f5b07b95293", + "sha256:53b07472f235eb80e826ad038c9d106c2f653584753f3ddab907c83f49eedead", + "sha256:550bf765101ae721ee1d37d8095f47b1f220650f85fe1af37a90ce75bab89d04", + "sha256:56d36e80d2003fa3fc0207fac644216d8532e9504a785ef9a8fd013f84a42c61", + "sha256:585542825c4bc662221fb257889e011a5aa00f1ae4d75d1d246a5225289183e3", + "sha256:5b927cf9b935a13e33644cbed6c8c4b2d0f25b713d838743f8fe7191b33829c4", + "sha256:5d7f02042c1f009ffb70067326ef183a047425bb2ff3bc434ead4dd4a4a66a2b", + "sha256:6315fb6977f1d0dd41a107c527fee2ed5ab0550b7d885bc15fee20ccb17891da", + "sha256:66bac29b95a00db411cd758fea0e4b9bdba6d549dfe333f9a945430f5f2cc5a6", + "sha256:6c00dbcf5f0d88796151e264a8eab23de2997c9303dd7c0bf622e23b24d3ce22", + "sha256:6e7352512f763f760baaed2637055c49134fd1d35b37c2dedfac35bfe5cf8725", + "sha256:7519bdc7dfc1940d201651b52bf5e03f5503bda45ad6eacf64dda98be5b2b6be", + "sha256:78cd586d8331fb8e241c2dd6b2f4061778cc69e150514b39a9e28dd050475661", + "sha256:7a653d872afe9f33497215745da7a943d1dc15b728a9c8da1c3ac423af35178e", + "sha256:7c3a50345635a02db61792c85bb86daffac05330f6473d524f1a4e3ef9d0046d", + "sha256:7fbdf5ad6084f1940ce88933de34b62358d0f4a0b6ec097362dcd3e5a65a4989", + "sha256:7fd19df530c292542636c2a9a85854fab93474396a52f1695e799186bbd7f24c", + "sha256:868e195e39b24aaa930b063c08bb0c17924899c16c672a28a65afded9c46c6ec", + "sha256:8709a0f05d59a71f33fd05c17fc11fcb8c30140506e13c2f5e8ee1b8964e1b45", + "sha256:88d6c017966a78c5265d996c19cdb79235be5e6412268d7e2ce7dee339471b7a", + "sha256:8aa7c807df234f693fed0ecd507192fc97692e61fee5702cdc11155d2e5cadc8", + "sha256:8b2f1414f6a1e0683f212ec80e813f4abef94c739fd090b66c9adf9d2a05feac", + "sha256:93655083005d71cd6c072cdab54c886e6570ad2c4592139c3fb967bfc19e4694", + "sha256:939ced4a7add92296b0ad38892ce62b98c619288a081170695c6babe4f50e636", + "sha256:9434bc0d80076138ea986833156c5a48c9c7a8abb0c96039ddbb4afc93184169", + "sha256:94f05348c4406450f9d73d38efb41d669ad6cd90c7ee194810d0eefbfa875a7a", + "sha256:960c2fc686ba27b535f9fd2b52d87ecd7e4fd1cf877f6a5cba8afb5b4a8bd204", + "sha256:96581619c57419c3d7d78703d5b78c1e5e5fc0172d60f555bdebaced82ded19a", + "sha256:97a0895a8e840ab3520e2288db7cace3a1981300d48babeb50e7425609e2e0ab", + "sha256:98c4fb90bb82b70a4ed79ca35f656f4281885be076f3f970ce315402b53099ae", + "sha256:99c5280a329d5fa18ef30fd10c793a190d996567667908bef8a7f81f8202b948", + "sha256:9acda8604a57bb60544e4646a4615c1866ee6c04a8edef9b8ee6fd1d8fa2ddc8", + "sha256:9c705601e16c03466cb72011bd1af55d68fa65b045356d8f96c216e5f6db0fa5", + "sha256:9e8f8afb552297aca127c90cb840e9a1d4bfd6a10d7d8f2d9176e1acc69bad30", + "sha256:9eb3e33fdbe43f88c3c75fa608c25e7c47bbd80f48d012763cb67c47f39a7e16", + "sha256:9ec49dff7e2b3c85cdeaa412e9d438f0ecd71676fde61ec57027dd392f00c693", + "sha256:9f377d0a924e5cc94dc620bc6366fc3e889586a7f18b748901cf016c916e2084", + "sha256:a09a6d073fb5789456545bdee2474d14395792faa0527887f2f4ec1a486a59d3", + "sha256:a2713a95b47374169409d18103366de1050fe0ea73db358fc7a7acb2880422d4", + "sha256:a3b6fb0c207cc661fa0bf8c66d8d9b657331ccc814f4719468af61034b478592", + "sha256:a4b88ebe35ce54205c7074f7302bd08a4cb83256a3e0870c72d6f68a3aaf8e49", + "sha256:a88d13e7ca367394908f8a276b89d04a3652044612b9a408a0bb22a5ed976a1a", + "sha256:ac6cde5fba8d7d8c6ac963dbb0256a9854e9fafff52fbcc58fdf819357892c3e", + "sha256:ae32f24bbfb7dbb485a24b30b1149e2f200be94777232aeadba3eecece4d0aa4", + "sha256:b009194665bcd128e23eaddef362e745601afa4641930848af4c8559e88f18f9", + "sha256:b1e56bab2e12b2b9ed300218c351ee2a3d8c8fdab5b1ec6193e11a817767e47b", + "sha256:b395bbca716c38bef3c764f187860e88c724b342c26275bc03e906142fc5964f", + "sha256:b59d13c443f8e049d9e94099c7e412e34610f1f49be0f230ec656a10692a5802", + "sha256:ba2715d842ffa787be87cbfce150d5e88c87a98e0b62e0f5aa489169a393dbbb", + "sha256:bb7fb776645af5cc58ab804c58d7eba545a97e047254a52ce89c157b5af6cd0b", + "sha256:c038a8fdc8103cd51dbd986ecdce141473ffd9775a7a8057a6ed9c3653478011", + "sha256:c20423ce14771d98353d2e25e83591fa75dfa90a3c1848f3d7c68243b4fbded3", + "sha256:c5c94825f744694c4b8db20b71dba9a257cd2ba8e010a803042123f3a25d50d7", + "sha256:cf00e5db968c3f67eccd2778574cf64d8b27d95b237770aa32400bd7a1ca4f6c", + "sha256:d23b5fe492b0805a50d3371e8a728a9134d8de5447dce4c885f5587294750734", + "sha256:d7bc4b7f9c4921eba72677cd9fedd2308f4a4ca3e12fab58935295ad9ea98700", + "sha256:d8a9b889aeabd7a4e9af0b7f4ab5ad94d42e7ff679aaec6d0db21e3b639ad58d", + "sha256:dacd50501cd017f8cccb328da0c90823511d70d24a323196826d923aad865901", + "sha256:e036a3a645fe92309ec34b918394bb377950cbb43039a97edae6c08db64b23e2", + "sha256:e09a0a06348a2dd73e7213353c90d709502d9786219f69b731f6caa0efeb46f5", + "sha256:e0c8e31cfcc4592cb200160344b2fb6ae0f9e4effe06c644b5a125d4ae5ebe23", + "sha256:e1b4951125ec10c70802f2cb09736c895861cd39fd9dcb35107b4dc8ae6220b8", + "sha256:e2a9ea08e8c58bb17655630198833109227dea914cd20be660f52215f6de5613", + "sha256:e3403f24bcb9c3b29113611c3c16a2a447c3953ecf86b79775e7be06f7ae7ccb", + "sha256:e574a7d61cf10351d734bcddabbe15ede0eaa8a02070d85446875dc11189a251", + "sha256:e67446b19e014d37342f7195f592a2a948141d15a312fe0e700c2fd2f03124f6", + "sha256:e736c93e9c274fce6419af4aac199984d866e55f8a4cec9114671d0ea9688780", + "sha256:e7c952aefdf2460f4ae55c5e9c3e80aa72f706a6317e06020f80e96253b1accd", + "sha256:e7f8659a48995edee7229522984bd1009c1213929c769c2daa80b40fe49a180c", + "sha256:e96eb1a34396e9430c19d8338d2ec33015e4a87ef2b4449db94c22412e25ccdf", + "sha256:ec7534e63ae0f3759df3a1ed4fa6bc8f75082a924b590619c0dd2f76d7043caa", + "sha256:ed2f9c7216e53c3df02264f25d824b079cc5914f9e2deba94155190ef648ee40", + "sha256:eeacf451c99b4525f700f078becff32c32ec327b10dcf31306a8a52d78166de7", + "sha256:f10d9c0b0188fe85398c61147bbd2a657d616c876863bfeff43376e0e3134673", + "sha256:f2bef8237544f4e42878c61cef4e2839fee6346dc60f5739f876a9c50be7fcdb", + "sha256:f33c8748abef4d8717bb20e8fb1b3e07c6adacb7fd6beaae971a764cf5f30d61", + "sha256:f7c183e786e299b5d6c49fb43a769f8eb8e04a2726a2bd5887b98b5cc2d67940", + "sha256:fa4dcb605c6f82a80c7f95713c2b11c3b8e9893b3ebd2bc9bde93165ed6107be", + "sha256:fa89cb11bc71a63b69568d5b8a25c3ca25b6d54c15f907ca1c130d72f320b76b", + "sha256:fe242cd381e0fb65758faf5ad96c2e460df6ee5b2de1072fe97e4127927e00b4", + "sha256:fe91b87fc295973096251e2d25a811388e7d8adf3bd2b97ef6ae78bc4ac6c476", + "sha256:fed38a5edb7945f4d1bcabe2fcd05db4f6ec7e0e82560088b754f7e08d93772d", + "sha256:ff0a7b0a82a7ab905cbda74006318d1b12e37c797eb1b0d4eb3e316cf47f658f", + "sha256:ff15c147b2ad66da1f2cbb0622313f2242d8e6e8f9b79b5206c84523a4473248", + "sha256:ff5e771f5dcbc81c64898c597a434f7682f2259e0cd666932a913d53d1341d1a" ], "markers": "python_version >= '3.9'", - "version": "==3.12.15" + "version": "==3.13.2" }, "aiosignal": { "hashes": [ @@ -139,12 +173,12 @@ }, "ape-foundry": { "hashes": [ - "sha256:9c6e387c2aee70e246fbf84492d51dd9b2a68414877209550013ec2aa09c34fb", - "sha256:b2ca178cc68f3ef5a4e466c4a3024fcbe81a5480a1d2fc0ff1c60e816059b692" + "sha256:2541242853e6a6b7e08dbf3f5599f509ad9f4fe41511bf0d56bae1d8b05b7d54", + "sha256:4d1738a6337bf23cac4bce2161c29ca3bbb371f907e6fcebfdfefca2a13d8d3d" ], "index": "pypi", "markers": "python_version >= '3.9' and python_version < '4'", - "version": "==0.8.9" + "version": "==0.8.10" }, "ape-infura": { "hashes": [ @@ -182,11 +216,11 @@ }, "attrs": { "hashes": [ - "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", - "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b" + "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", + "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373" ], - "markers": "python_version >= '3.8'", - "version": "==25.3.0" + "markers": "python_version >= '3.9'", + "version": "==25.4.0" }, "base58": { "hashes": [ @@ -198,171 +232,141 @@ }, "bitarray": { "hashes": [ - "sha256:00a129b2d790e772fbfb26e31c65f54d5451636654e7f0600af03086aba6461a", - "sha256:028e95a4792ddef067a5c6151d223089665d5c566cb88f3fe68155e251d8f522", - "sha256:02e9ed2a586a63dea57e3692727b4c56ae71347e058b5465188b592767bd1c84", - "sha256:085b83604bf4ab3e193bbd2f8a913ae3ec6965b2e334f0fdd50b078af807d208", - "sha256:09c807c7cd43001c7a2d1746ba2352c97dd8a1c0c232f8b61976aa27ee7d9202", - "sha256:0b17de6920a45e70de8a58a69b1b309da9f5203efd27ac4712bb46cac882b823", - "sha256:0b2ece38b225891dde8a17b1ed432f116b8e18a0a1a913c757d4d9e888540283", - "sha256:0c1d916d36c03c2100af0accc3698091c0bc2e94470cac88462d9f6b56758f37", - "sha256:0e0dbd5301e803c93b9e948b2bba9c12f5d76a16c94039888580b42f8419c8ba", - "sha256:137bfb9c00c172c16ddabe8615a4746e745789cfedb0e7c5b25236a20ccf051c", - "sha256:1825fccae78906d7a642fcde100f7efe0dfd7497ee14376259bda08a1bee93b9", - "sha256:18fc5ce54aa8ba7bd717a64c518bc4d67f4f51b4ebf30e5c5ecf63ee86399562", - "sha256:1ad4e07524372225302e17cb92e7f682baa38fe323e2647dc4f6202304dd8d1a", - "sha256:1b6b68a6f7b7b872ea4838d438547ee69a1b020078893f087b35152dd6c3550e", - "sha256:1e04d1176f0657fc250ad022c3adc86b52ac7c5352d3d00262b0fc53c376005a", - "sha256:24c898583ac116ce9608b8573f7b596ba0087301f29e9c4c6bcbe504a59d6313", - "sha256:2574fba97ae17cd58b1b0d59fa9a69e0cff0a83e1fa9eb4adeee1b7bca1df41b", - "sha256:25cc576ac013b33e69b8123dd7eca78af80100f1a10174e5a30e174ad31f715a", - "sha256:26180314ad363dcefa03fff9b7008d8cc2dcc7b080bb38e5bfde545d08e0a7cb", - "sha256:27666556eccbfb3c6524a175fc557534f1fda1d7ca09a6f77673fa63278308a0", - "sha256:2858a633151134f0734fd78e8b36ac7401277dffd6ee70ada773b2edce596f36", - "sha256:285a4a39b8d4715bc5165ee3e0bc81bc7f27ef92483bae478dc3d430c0734e82", - "sha256:298a0f4442edb98695040009e9d411f221b33cc8d3b749a00d9813a69c047fc1", - "sha256:2a2f08fa831bafb42903231c23df5c597d2cc47fabb2532659180a54386dc49a", - "sha256:2d511549d169a62533a99e235c06355a43e70fb0dbe6ff05df2c700704f1adc6", - "sha256:2dc5ba1cb99cd3391c09b61fffa95d22287b49d7304fba15bd3d3886a16b78a5", - "sha256:32dc6efc7c87badd7c7941df5ca40346a29532d37bd97a52b67ed563d324b6c7", - "sha256:34a8c0f9d3e27a486d620db769f8f9d800830a7805d5e7a336018c991371bc60", - "sha256:357f6c07cb3116a2d4a917fd4f54727f1b71102f5e316c2d4c9fe26ec3dfd8e9", - "sha256:36cd656877eb3d215ecbb575743d05c521911514985b2a0999a23bb504a8ae64", - "sha256:37bb5c678d3957104a33e093427bd514d3b08673e47b358242be6a53d33613ce", - "sha256:384eee34bdb4ea52517421cac778d4a881652cd7a5a052bd0939adbca9a6b7d6", - "sha256:38ce28427eea22bafcef073768d7e14d14233ced3eea8505ee13b92fb3723bce", - "sha256:3abea085790b12c12b3f8ceefae4a7953e14518d88c4b0547187805b999e4158", - "sha256:3b04a4884e52958d2a5c5e17389fdcc99cb01acbf311a7aa81871a28a2756f89", - "sha256:3c8e23f03dca065698c6fe931bc78aea5ca6db3e1be2e7204c584029a9444d33", - "sha256:3ef907cf76d12506ec05278b65147e64babd7ccf5ecc549669300fe4729eef00", - "sha256:40035ca664c0479af8439a84ae218da631a6ef5d3f6d89ec43566f7a54f1f23d", - "sha256:41248ab4781a68d5f7ad492d1546b98c2f190c99941de6c92445b693d79123b4", - "sha256:4255bff37b01562b8e6adcf9db256029765985b0790c5ff76bbe1837edcd53ea", - "sha256:43d2244aa721dc92713a72695d43dd2a75b920338c9f34da50133d05e23c9ff3", - "sha256:445fdb24af5fb4d8d3d6e1ff34ca25f94793ea1ef23b5c33e1787db9138e3dac", - "sha256:4af03ea3ed535f0c50ed1b871b1c7985188310b26fc5455241a66efb7ac0139f", - "sha256:4b17029647fd990ce6fd3f1fb253ff47bfc27df8255bea99b5e381b2030b6d54", - "sha256:4e9d19a85d9d027ad4e99e579d04bda3ed5ab06aab37e5bffc6410772cc3b6f0", - "sha256:4ec62778cea9a23baf8112bbdd070fa174646dc9d36b8e1b34dad041cf21b495", - "sha256:507cc28c1ff26646b0868e6a854ee0fad1f1e36fefc1286f3f9db4533dae581c", - "sha256:52320d72dca8022b4c61bfb5d059743f44421488c0502df623ff87b6d6f48166", - "sha256:53824a01475f53a314b734711673110bfcaeedaa4235b7398a7687ecb9847d70", - "sha256:5455059a12eeb1690f943f478de9fc20064a7afd2b78559e98b325bffda55d00", - "sha256:547b075e81f907b7e50ca76103eb7ab81fbac763aebb73daf542c59f5b9528b2", - "sha256:55575dd221eec2176531fe29a99eb2682d6107b34ba036b77d48549a1f3aa9dc", - "sha256:5560a87c77c48f1e30d422e1f771307870e0f98315695745b0f9a3148aec05fc", - "sha256:55bbc633a2aab0c3d31514d3efb045b7dc5b46c97d9a1fbc225660f8de98c6e9", - "sha256:57d15b0903ab8f0eee14fea52c44267fe8b498562a293a3c7ca7063a16c70d51", - "sha256:5ee5b9ba3eadd40717c9ec79a831e765a49dde0e0bc1c6e3238b34fc4ea45059", - "sha256:639fc29267348a78b259fb24c471b7e3322c85f1eb95712bac852ab2a56e742a", - "sha256:64a3a8c79468bd5283907f2e60651c857f0dab3dc671943bcf5ec2d15e2f8177", - "sha256:65c058f45cd7edec858a83af8bf40ec03d357e0d870ef3d1fe422dff68980bca", - "sha256:65db64692b1ae518d3339c4f7fc5bbda17e8e0274784bd0167360d329d2b4974", - "sha256:66db701a1c3ea69919a2eb415fb0fce83d55179fd65390399eb40579b102f0a4", - "sha256:6b6e05e0ecc32b1099b3d53b765676a2bfffc708d02ef7dcb60b5a6c2d15b0c8", - "sha256:6dd497b807e87c3ba27d85027a57414292a119ef5c329b19dd719ac402a99dcc", - "sha256:7134fa2d0d253ce1fcd6a5d646f4024ede4a3bf845420bc799dccb430c254ecc", - "sha256:716ec396af5292275f7f572850596990ff84bf1a8552428ee982fe54f773aeb9", - "sha256:73cee88d7af7a881447ea593cbaae207be4a472a8c0a9f2da54bcb17512fd75f", - "sha256:78a3c6fe40206a3d550a1d10249732152a849d1817fced3e7af5b19f5e832615", - "sha256:78afb2f8212e931150072fb4ec30281aa968c2e5643af3d01469d8f83da7a151", - "sha256:7a2581ad5f45eba60bb8d5be324d26052620bb72fd3f76cb6d54d3d0f74859b2", - "sha256:7bc717849ea0693b6b93480e499f0da3ea7501f52aaea2b144aa28ac5eecbe62", - "sha256:7de7f6cd5df096dae16ae8a31d5237b191b98b40e2bb03ef71d9b5479922584c", - "sha256:7f16d704c40bd3db661005819daa818c4f5f82823d29491d6744dfc7ff3d6b4a", - "sha256:7f53d6a0ac86d67b6760530196963ea0598588c1a9b155f7e137d9b6a1befd27", - "sha256:8404a2c126abdc6cb236347565d4ea622712734fa0987f13c6505b550963b651", - "sha256:84951ce773cbe69e4e15ae27bf6617f08ef2415ad37e1114a2d7979e210bf9e5", - "sha256:861bda407bf9b774b2a662acf96993869f8c687aa207b52c8e8e18afef0da9c0", - "sha256:883f3bdd214a66a531d2074cd3c8955e72af4bb9acacccb77894eb5a23dd9ef7", - "sha256:88563f3b8e23aa3f342cf5d65f4551f8aa9d1733ba12bcf7bc58cbb126e40770", - "sha256:88c54caba69b9b70ffe123a98d97574e77d74f74676f5a5cfeb97fa7ad5d2e64", - "sha256:8aa92c400c813961ff868801ef71a6fa161c6f546433bfb396ee3f596d807a20", - "sha256:8db11d96c1fcce48dced1e06084cc5dfd76db7bc41ec78c85f972ed6922cc328", - "sha256:8dceb8d43fe51b8643766152736ec0f32f0a6a5b6e2e6742f1165cbe5799102e", - "sha256:9016c534c64342cf3d8c6fda8df681b9771e9fa15a1697423a3766e986d2f958", - "sha256:91f9ef64a2b973b5ae8a43db43d6ff5d274b02e8d169a641ac2b24f7a3aec5bf", - "sha256:966478685f59bd429e2425f6a8172a6d8f54fd7d6df48fcae98fd24ff03163d1", - "sha256:992b7ecdfa792fe15670d8f3b74373467341e24669fd40aa05b2c884b84d1475", - "sha256:9b263a460b4ea6a7ebbe450593928651fa81fa3a1426732ff6ea52bb4b210d6c", - "sha256:9f7a85d16fef11dbeaa85b6a8df5ac98917b933e10d6e94a29eded45f6fc41a1", - "sha256:a0b200c3382fb585ac9d9018fea2a5fe2ce5ff655098e1f1e804bdb8419ae56d", - "sha256:a15055d392a921093d3c583e7978acc63fd3f76068a10f8e2deaa078b58a0ac9", - "sha256:a2120ce67c0d0047564c5af1afdd7d03688c2d7109e21ce699742366934c658f", - "sha256:a236fc1e87a70adb588b37b09b18add71224279d28140d9ee847778e1f3f5a1a", - "sha256:aba6043eb44b68055145c5ae2062f976c02ec0b04ff688ee5b43deda8185b708", - "sha256:ac29a0cda5ea50c78ff20d06d8c5b8402147448a9dde2b118ecea2b4cec490ec", - "sha256:ae700d6a55a912c853c6ebd1effe3da1303da4d66d8d21cfcb0f426b41568400", - "sha256:b0059a2bd2263f7bee6b8b0cf9914eb3ac7c0d8e2f7d8f84b4c12875e8194fd5", - "sha256:b12c11894d991dfaa415229329452e8be2b230e06fba2aff27110158e2f0dafd", - "sha256:b18b80658df576d088b1e338212c0a674ca3efb067eb73d7403b4cadd75ab32e", - "sha256:b2c36ebfba3fb9436c78ef043f75078cd0e61581aaff742194b554e772cb992b", - "sha256:b5cec7314701c2e8f63a5ad0b86911099b61bd2bd9c2c50c73094a751d86cfa1", - "sha256:bab001c6bd051efa9e4fbe725b0250c55cd21e56c38c651d90692963e97e46f4", - "sha256:bb69c4ccc5433ecf5462a867a3b4ff3dce9080ce665f7dcf6189f6786e440ef9", - "sha256:bdc3b4b5b57a0718abb957971af21b044ee7d568b67d6979081ac443c1418c79", - "sha256:be8f2fd4798539f9b49db517ec9a2e9d1e9132ec92562220f67f80f176900c21", - "sha256:c277f6a1cbfdedcec704add6ff2ace89b56a29c1955f2441a7fd2fbde410f791", - "sha256:c8d8f78bf8bebac391867a7637008ffa68f4870d9ee8154c836745ff237cfa98", - "sha256:c9d578179a618b8176fd625dcc3f756f9dc46647c35250798c318e5d4689d096", - "sha256:cae78167bceb3991652dab9d5e66c94e09860005753b51ba608a803a8c2504fb", - "sha256:cb277d69541c5763c27bba6c74a603e6d177b4614e3d3af68a37414a8e06415b", - "sha256:cba075e4b15a5824f23fd876087d4a0b9e0e72d31ee48ac43829d18f0dd46a5f", - "sha256:cd2d9c5527be2996555e5b71bb30d4b98bb155916fa118372d314b316f7b5af7", - "sha256:cff53ab9cf8d088e88402174ed53529c6ec3897a5146c2a18625253b3b2f6d21", - "sha256:d17db3e301f7aaa9ba9e30599de1362b06b6871fd5cb3abf7c73a7dc08c38a06", - "sha256:d23b40c9e97a57e2b2dc75b78282ce62b9fea76013a171421ab18f1056d7a7a1", - "sha256:d3776c1155fd690c18bf7ae0f15c6b10d4e0cf0fec696ec31cd53d8ff4109e59", - "sha256:d3916c63580d9ca9c3264744ce1162e500a6b99c841f25b9657bca2595d2d438", - "sha256:d5cf59d8f1ee8332f60e7352464209db1de909ae960d3b1f9d76897e484aa4ed", - "sha256:dd211eba612ca9fff50b1b55bd654e1cd406f78cb9c4456d2a12b9df68d53b16", - "sha256:ddbbcbfede6e78bd2fdfa5b625859a7ddaeedb0d4130fdb31cdd10a6a3533d19", - "sha256:e3361f1c9e537925284d1f37447a3aad5f5dc1c741cec2ebc078250232d939af", - "sha256:e870d8f161a93a325d43bd04e61990d0e4123d800442f38f4ba819802452bc70", - "sha256:e92011003d87e224e101533a98ede388bb40de0ec65978c6d0bb0d98f949f1b8", - "sha256:eb590c1d8b956cfcb16c055de87dc992e3136df9d31cf07bda69febe6b39a7c0", - "sha256:eb6ba70e7cf5128ec43787dbc0b5cd661118bf32b756078ff5cb143c9c825d11", - "sha256:ecc825ecd7f9a51c65a7b22c0015f39de9c3c0ab5a349ed9de6dd56e9f222de3", - "sha256:ed3009c2ecb7c01b4da8fd0a5e47e0e86a45af746700a6386f247fd922cd3cc2", - "sha256:ee5ee008313e9b53accf719be44905e41c968da94cbe1b7812498e87d07987f7", - "sha256:f29dccd681ffe55b14f7561030f07f8eb6a5c8c7b1974be459c4bee28d7da85e", - "sha256:f2b724859e46d3fa93bb1816bfd71faeeaa7b71473484a998beb7cca551a5b1c", - "sha256:f378316f45ffcec4ed429cf2ef446c8a3d7afe29e5020eb51ed789e443f4359f", - "sha256:f7e853cdb173ca644a58cba6d5438af0f8df3ea17165d85dd20bc8ba8ec1e6c1", - "sha256:f84fdb0c901db810548b8e01e1204462a806066299befbe1a6141a098ca2c5c9", - "sha256:f922b8fb406c241ccece1b358019e992167dc4ec31d4a77e4066886c5dacbff6", - "sha256:fb4c0635001566a68bde26bc1f47553ceeb83474069a68d7b1f29ac2cb473da1" - ], - "version": "==3.6.1" + "sha256:004d518fa410e6da43386d20e07b576a41eb417ac67abf9f30fa75e125697199", + "sha256:014df8a9430276862392ac5d471697de042367996c49f32d0008585d2c60755a", + "sha256:01c5f0dc080b0ebb432f7a68ee1e88a76bd34f6d89c9568fcec65fb16ed71f0e", + "sha256:025d133bf4ca8cf75f904eeb8ea946228d7c043231866143f31946a6f4dd0bf3", + "sha256:0ca70ccf789446a6dfde40b482ec21d28067172cd1f8efd50d5548159fccad9e", + "sha256:0df69d26f21a9d2f1b20266f6737fa43f08aa5015c99900fb69f255fbe4dabb4", + "sha256:0f8069a807a3e6e3c361ce302ece4bf1c3b49962c1726d1d56587e8f48682861", + "sha256:15a2eff91f54d2b1f573cca8ca6fb58763ce8fea80e7899ab028f3987ef71cd5", + "sha256:15e8d0597cc6e8496de6f4dea2a6880c57e1251502a7072f5631108a1aa28521", + "sha256:165052a0e61c880f7093808a0c524ce1b3555bfa114c0dfb5c809cd07918a60d", + "sha256:178c5a4c7fdfb5cd79e372ae7f675390e670f3732e5bc68d327e01a5b3ff8d55", + "sha256:18214bac86341f1cc413772e66447d6cca10981e2880b70ecaf4e826c04f95e9", + "sha256:1a54d7e7999735faacdcbe8128e30207abc2caf9f9fd7102d180b32f1b78bfce", + "sha256:1a926fa554870642607fd10e66ee25b75fdd9a7ca4bbffa93d424e4ae2bf734a", + "sha256:1c8f2a5d8006db5a555e06f9437e76bf52537d3dfd130cb8ae2b30866aca32c9", + "sha256:21ca6a47bf20db9e7ad74ca04b3d479e4d76109b68333eb23535553d2705339e", + "sha256:22c540ed20167d3dbb1e2d868ca935180247d620c40eace90efa774504a40e3b", + "sha256:239578587b9c29469ab61149dda40a2fe714a6a4eca0f8ff9ea9439ec4b7bc30", + "sha256:25b9cff6c9856bc396232e2f609ea0c5ec1a8a24c500cee4cca96ba8a3cd50b6", + "sha256:26714898eb0d847aac8af94c4441c9cb50387847d0fe6b9fc4217c086cd68b80", + "sha256:28a85b056c0eb7f5d864c0ceef07034117e8ebfca756f50648c71950a568ba11", + "sha256:2a3d1b05ffdd3e95687942ae7b13c63689f85d3f15c39b33329e3cb9ce6c015f", + "sha256:2c3bb96b6026643ce24677650889b09073f60b9860a71765f843c99f9ab38b25", + "sha256:2fa23fdb3beab313950bbb49674e8a161e61449332d3997089fe3944953f1b77", + "sha256:2fe8c54b15a9cd4f93bc2aaceab354ec65af93370aa1496ba2f9c537a4855ee0", + "sha256:30989a2451b693c3f9359d91098a744992b5431a0be4858f1fdf0ec76b457125", + "sha256:31a4ad2b730128e273f1c22300da3e3631f125703e4fee0ac44d385abfb15671", + "sha256:337c8cd46a4c6568d367ed676cbf2d7de16f890bb31dbb54c44c1d6bb6d4a1de", + "sha256:33af25c4ff7723363cb8404dfc2eefeab4110b654f6c98d26aba8a08c745d860", + "sha256:3ea52df96566457735314794422274bd1962066bfb609e7eea9113d70cf04ffe", + "sha256:3eae38daffd77c9621ae80c16932eea3fb3a4af141fb7cc724d4ad93eff9210d", + "sha256:41b53711f89008ba2de62e4c2d2260a8b357072fd4f18e1351b28955db2719dc", + "sha256:451f9958850ea98440d542278368c8d1e1ea821e2494b204570ba34a340759df", + "sha256:46cf239856b87fe1c86dfbb3d459d840a8b1649e7922b1e0bfb6b6464692644a", + "sha256:4779f356083c62e29b4198d290b7b17a39a69702d150678b7efff0fdddf494a8", + "sha256:4902f4ecd5fcb6a5f482d7b0ae1c16c21f26fc5279b3b6127363d13ad8e7a9d9", + "sha256:4d73d4948dcc5591d880db8933004e01f1dd2296df9de815354d53469beb26fe", + "sha256:4d9984017314da772f5f7460add7a0301a4ffc06c72c2998bb16c300a6253607", + "sha256:4f298daaaea58d45e245a132d6d2bdfb6f856da50dc03d75ebb761439fb626cf", + "sha256:50ddbe3a7b4b6ab96812f5a4d570f401a2cdb95642fd04c062f98939610bbeee", + "sha256:5338a313f998e1be7267191b7caaae82563b4a2b42b393561055412a34042caa", + "sha256:5591daf81313096909d973fb2612fccd87528fdfdd39f6478bdce54543178954", + "sha256:56896ceeffe25946c4010320629e2d858ca763cd8ded273c81672a5edbcb1e0a", + "sha256:58a01ea34057463f7a98a4d6ff40160f65f945e924fec08a5b39e327e372875d", + "sha256:5bfac7f236ba1a4d402644bdce47fb9db02a7cf3214a1f637d3a88390f9e5428", + "sha256:5c5a8a83df95e51f7a7c2b083eaea134cbed39fc42c6aeb2e764ddb7ccccd43e", + "sha256:5f2fb10518f6b365f5b720e43a529c3b2324ca02932f609631a44edb347d8d54", + "sha256:64af877116edf051375b45f0bda648143176a017b13803ec7b3a3111dc05f4c5", + "sha256:6d70fa9c6d2e955bde8cd327ffc11f2cc34bc21944e5571a46ca501e7eadef24", + "sha256:6d79f659965290af60d6acc8e2716341865fe74609a7ede2a33c2f86ad893b8f", + "sha256:720963fee259291a88348ae9735d9deb5d334e84a016244f61c89f5a49aa400a", + "sha256:75a3b6e9c695a6570ea488db75b84bb592ff70a944957efa1c655867c575018b", + "sha256:792462abfeeca6cc8c6c1e6d27e14319682f0182f6b0ba37befe911af794db70", + "sha256:79ec4498a545733ecace48d780d22407411b07403a2e08b9a4d7596c0b97ebd7", + "sha256:7f14d6b303e55bd7d19b28309ef8014370e84a3806c5e452e078e7df7344d97a", + "sha256:7f65bd5d4cdb396295b6aa07f84ca659ac65c5c68b53956a6d95219e304b0ada", + "sha256:81c6b4a6c1af800d52a6fa32389ef8f4281583f4f99dc1a40f2bb47667281541", + "sha256:82a07de83dce09b4fa1bccbdc8bde8f188b131666af0dc9048ba0a0e448d8a3b", + "sha256:847c7f61964225fc489fe1d49eda7e0e0d253e98862c012cecf845f9ad45cdf4", + "sha256:84b52b2cf77bb7f703d16c4007b021078dbbe6cf8ffb57abe81a7bacfc175ef2", + "sha256:86685fa04067f7175f9718489ae755f6acde03593a1a9ca89305554af40e14fd", + "sha256:8a9c962c64a4c08def58b9799333e33af94ec53038cf151d36edacdb41f81646", + "sha256:8cbd4bfc933b33b85c43ef4c1f4d5e3e9d91975ea6368acf5fbac02bac06ea89", + "sha256:8ffe660e963ae711cb9e2b8d8461c9b1ad6167823837fc17d59d5e539fb898fa", + "sha256:94652da1a4ca7cfb69c15dd6986b205e0bd9c63a05029c3b48b4201085f527bd", + "sha256:969fd67de8c42affdb47b38b80f1eaa79ac0ef17d65407cdd931db1675315af1", + "sha256:9858dcbc23ba7eaadcd319786b982278a1a2b2020720b19db43e309579ff76fb", + "sha256:99d25aff3745c54e61ab340b98400c52ebec04290a62078155e0d7eb30380220", + "sha256:99f55e14e7c56f4fafe1343480c32b110ef03836c21ff7c48bae7add6818f77c", + "sha256:9d35d8f8a1c9ed4e2b08187b513f8a3c71958600129db3aa26d85ea3abfd1310", + "sha256:a2ba92f59e30ce915e9e79af37649432e3a212ddddf416d4d686b1b4825bcdb2", + "sha256:a2cb35a6efaa0e3623d8272471371a12c7e07b51a33e5efce9b58f655d864b4e", + "sha256:a358277122456666a8b2a0b9aa04f1b89d34e8aa41d08a6557d693e6abb6667c", + "sha256:a60da2f9efbed355edb35a1fb6829148676786c829fad708bb6bb47211b3593a", + "sha256:aa7dec53c25f1949513457ef8b0ea1fb40e76c672cc4d2daa8ad3c8d6b73491a", + "sha256:b1572ee0eb1967e71787af636bb7d1eb9c6735d5337762c450650e7f51844594", + "sha256:b4f10d3f304be7183fac79bf2cd997f82e16aa9a9f37343d76c026c6e435a8a8", + "sha256:bbbbfbb7d039b20d289ce56b1beb46138d65769d04af50c199c6ac4cb6054d52", + "sha256:c394a3f055b49f92626f83c1a0b6d6cd2c628f1ccd72481c3e3c6aa4695f3b20", + "sha256:c396358023b876cff547ce87f4e8ff8a2280598873a137e8cc69e115262260b8", + "sha256:c5ba07e58fd98c9782201e79eb8dd4225733d212a5a3700f9a84d329bd0463a6", + "sha256:c764fb167411d5afaef88138542a4bfa28bd5e5ded5e8e42df87cef965efd6e9", + "sha256:cbba763d99de0255a3e4938f25a8579930ac8aa089233cb2fb2ed7d04d4aff02", + "sha256:cbd1660fb48827381ce3a621a4fdc237959e1cd4e98b098952a8f624a0726425", + "sha256:cd761d158f67e288fd0ebe00c3b158095ce80a4bc7c32b60c7121224003ba70d", + "sha256:cdfbb27f2c46bb5bbdcee147530cbc5ca8ab858d7693924e88e30ada21b2c5e2", + "sha256:d2dbe8a3baf2d842e342e8acb06ae3844765d38df67687c144cdeb71f1bcb5d7", + "sha256:d5c931ec1c03111718cabf85f6012bb2815fa0ce578175567fa8d6f2cc15d3b4", + "sha256:df6d7bf3e15b7e6e202a16ff4948a51759354016026deb04ab9b5acbbe35e096", + "sha256:dfbe2aa45b273f49e715c5345d94874cb65a28482bf231af408891c260601b8d", + "sha256:e12769d3adcc419e65860de946df8d2ed274932177ac1cdb05186e498aaa9149", + "sha256:e5aed4754895942ae15ffa48c52d181e1c1463236fda68d2dba29c03aa61786b", + "sha256:e645b4c365d6f1f9e0799380ad6395268f3c3b898244a650aaeb8d9d27b74c35", + "sha256:ed3493a369fe849cce98542d7405c88030b355e4d2e113887cb7ecc86c205773", + "sha256:f08342dc8d19214faa7ef99574dea6c37a2790d6d04a9793ef8fa76c188dc08d", + "sha256:f0a55cf02d2cdd739b40ce10c09bbdd520e141217696add7a48b56e67bdfdfe6", + "sha256:f0ce9d9e07c75da8027c62b4c9f45771d1d8aae7dc9ad7fb606c6a5aedbe9741", + "sha256:f1f723e260c35e1c7c57a09d3a6ebe681bd56c83e1208ae3ce1869b7c0d10d4f", + "sha256:f2fcbe9b3a5996b417e030aa33a562e7e20dfc86271e53d7e841fc5df16268b8", + "sha256:f3fd8df63c41ff6a676d031956aebf68ebbc687b47c507da25501eb22eec341f", + "sha256:f8d3417db5e14a6789073b21ae44439a755289477901901bae378a57b905e148", + "sha256:fbf05678c2ae0064fb1b8de7e9e8f0fc30621b73c8477786dd0fb3868044a8c8", + "sha256:fc98ff43abad61f00515ad9a06213b7716699146e46eabd256cdfe7cb522bd97", + "sha256:ff1863f037dad765ef5963efc2e37d399ac023e192a6f2bb394e2377d023cefe" + ], + "version": "==3.8.0" }, "black": { "hashes": [ - "sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171", - "sha256:055e59b198df7ac0b7efca5ad7ff2516bca343276c466be72eb04a3bcc1f82d7", - "sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da", - "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", - "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", - "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", - "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", - "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", - "sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32", - "sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f", - "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", - "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", - "sha256:a1ee0a0c330f7b5130ce0caed9936a904793576ef4d2b98c40835d6a65afa6a0", - "sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18", - "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", - "sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3", - "sha256:bacabb307dca5ebaf9c118d2d2f6903da0d62c9faa82bd21a33eecc319559355", - "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", - "sha256:d9e6827d563a2c820772b32ce8a42828dc6790f095f441beef18f96aa6f8294e", - "sha256:db8ea9917d6f8fc62abd90d944920d95e73c83a5ee3383493e35d271aca872e9", - "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", - "sha256:f3df5f1bf91d36002b0a75389ca8663510cf0531cca8aa5c1ef695b46d98655f" + "sha256:0172a012f725b792c358d57fe7b6b6e8e67375dd157f64fa7a3097b3ed3e2175", + "sha256:0474bca9a0dd1b51791fcc507a4e02078a1c63f6d4e4ae5544b9848c7adfb619", + "sha256:154b06d618233fe468236ba1f0e40823d4eb08b26f5e9261526fde34916b9140", + "sha256:1b9dc70c21ef8b43248f1d86aedd2aaf75ae110b958a7909ad8463c4aa0880b0", + "sha256:2ab0ce111ef026790e9b13bd216fa7bc48edd934ffc4cbf78808b235793cbc92", + "sha256:3bec74ee60f8dfef564b573a96b8930f7b6a538e846123d5ad77ba14a8d7a64f", + "sha256:456386fe87bad41b806d53c062e2974615825c7a52159cde7ccaeb0695fa28fa", + "sha256:474b34c1342cdc157d307b56c4c65bce916480c4a8f6551fdc6bf9b486a7c4ae", + "sha256:77e7060a00c5ec4b3367c55f39cf9b06e68965a4f2e61cecacd6d0d9b7ec945a", + "sha256:846d58e3ce7879ec1ffe816bb9df6d006cd9590515ed5d17db14e17666b2b357", + "sha256:8e46eecf65a095fa62e53245ae2795c90bdecabd53b50c448d0a8bcd0d2e74c4", + "sha256:9101ee58ddc2442199a25cb648d46ba22cd580b00ca4b44234a324e3ec7a0f7e", + "sha256:a16b14a44c1af60a210d8da28e108e13e75a284bf21a9afa6b4571f96ab8bb9d", + "sha256:aaf319612536d502fdd0e88ce52d8f1352b2c0a955cc2798f79eeca9d3af0608", + "sha256:b756fc75871cb1bcac5499552d771822fd9db5a2bb8db2a7247936ca48f39831", + "sha256:c0372a93e16b3954208417bfe448e09b0de5cc721d521866cd9e0acac3c04a1f", + "sha256:ce41ed2614b706fd55fd0b4a6909d06b5bab344ffbfadc6ef34ae50adba3d4f7", + "sha256:d119957b37cc641596063cd7db2656c5be3752ac17877017b2ffcdb9dfc4d2b1", + "sha256:e3c1f4cd5e93842774d9ee4ef6cd8d17790e65f44f7cdbaab5f2cf8ccf22a823", + "sha256:e593466de7b998374ea2585a471ba90553283fb9beefcfa430d84a2651ed5933", + "sha256:ef69351df3c84485a8beb6f7b8f9721e2009e20ef80a8d619e2d1788b7816d47", + "sha256:f96b6726d690c96c60ba682955199f8c39abc1ae0c3a494a9c62c0184049a713" ], "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==25.1.0" + "version": "==25.9.0" }, "bump2version": { "hashes": [ @@ -383,157 +387,165 @@ }, "cachetools": { "hashes": [ - "sha256:1c7bb3cf9193deaf3508b7c5f2a79986c13ea38965c5adcff1f84519cf39163e", - "sha256:b4c4f404392848db3ce7aac34950d17be4d864da4b8b66911008e430bc544587" + "sha256:09868944b6dde876dfd44e1d47e18484541eaf12f26f29b7af91b26cc892d701", + "sha256:3f391e4bd8f8bf0931169baf7456cc822705f4e2a31f840d218f445b9a854201" ], "markers": "python_version >= '3.9'", - "version": "==6.1.0" + "version": "==6.2.1" }, "cchecksum": { "hashes": [ - "sha256:09d2651712db96adecbd914464acaa7461491b6ecb04add3715b6e18c0655301", - "sha256:0aedaa8ad36ee52563a2c58bb4c9c2e80ddcba01458ac25f1e05e4f187c0d107", - "sha256:0d81c2aebfddba2cd34c240e9913426e2623144bed5ccba2ac8835b99a69b606", - "sha256:23b1b39c88e8f96145c181e7ad20c0cf13c868ac2124783053000e7f2288c69c", - "sha256:2517e0d4cd7048add6882231622ad34b78f12524958e2aa40468d3946e64ece5", - "sha256:2808d1037b205de97f05401f3110bddb0b9f6ecab5d68d2acdbfc3831a8cc141", - "sha256:29549b8890cf3c6bf97ab025990c593f83323c79a714e2e3813822dd8d11d714", - "sha256:33f73fbaa18dd61e0be6f9540a991d82da631ced9b253a857b79a770181d3ed1", - "sha256:388bd8b4af749e9f7675818f44e78fa397ffdb224a6160e1846f76c6a4e4700c", - "sha256:4080ac16804c71054f712d5164fdd814eea33d6e006442cbc25377787086c5d8", - "sha256:49b8c81eba58b7595c40b6d212bd26c0381d4b2c5336452ff3b257cfea5fe99c", - "sha256:4cdb1614f81464a7564469298699c2f564d959b4049b78d4fef68349a3dd6b4b", - "sha256:4dbd28bef638b26d5f369046542179fa8acf05a27c9400d2e7c73f02089b12b0", - "sha256:4eee7ccbd677b30ed2f375c9564226b19bb12a4f3c497e9dc3c981bf4308ebf4", - "sha256:58c8bed22f71a69e2990deffb9a38c84197fb7c8ec2cf7e7076c1e739b21921b", - "sha256:5a66c89106eeeaf6dfacb4a1bc06ff0a6104a2288f7f2dcd103e18484b49d47e", - "sha256:6312fa8c897cab1972920b2275aab2343b0c56597689f9647844e178308c1bef", - "sha256:64c705a262fabc2868064ee39f960a476761425e8fcba1476e31543dd8bc0b25", - "sha256:6d343d4c742d55621912ecff7b8e3a76b36a65eac13d542478b30cd5c1583205", - "sha256:6e9313a5820bd2d1bff99953c55732f65fac528c570e9f8cad103805a25f5994", - "sha256:6f864e6f764df0d3ea517fbce797f2379c3f9f6cb200fe7f3afeae60d93467e3", - "sha256:75da31d58cf9c08b08a48a5dfa7a0daf1f0e69eee6d53d0ee28225b5cd01d0e1", - "sha256:768c20f60ea3a08ca13be141d36ab4fc1e3a0058f8dd1f104ba37501876f9ea0", - "sha256:76ed08044239d1a0c0574c53c5412d1bcbb409d47a4cdece88ec70430266d639", - "sha256:791735f13d4c456cf772c8b656a91eea2831de1246f0185d1789c7a23caf9012", - "sha256:8024bd2add89982aed7ca5490e7d4f94d461a17ee69d693af3cfd30a91028203", - "sha256:8132bfbb1ccb1fb8ed32b31d2348f07e202874331e6aab907a3380f8255ea273", - "sha256:83119a2426d1a937d04a76797571b0f8089daa4a8d9e157adb398a488f9ab476", - "sha256:83da927c1067d15a2933fbd29479118b3eba9aca0efc8a654f35831ffd378746", - "sha256:8431c90ec3e7ce497ea390b13b6fb04d0df09d4069c68adb8da7d2b86af8f2e0", - "sha256:90815938fbc302ad112170752d709b4bccfaa6fec23465af5f0492536c35fd5b", - "sha256:90bdaec97e253f5e1c1f6f0a09c70ce79b7f1cb903e20658fa455c3446273133", - "sha256:911f23ea4974ec7d6e2c71beb5bd091b2fbb944e33ece85e14fb93a14ea85d47", - "sha256:9293e60b682e9740aed5f7decf04b3f5bd1279a81ad29253c8927426fc80ab40", - "sha256:95c47c8b8e9196b79af2bc12232b14b6be98a7b71f84d0cfd7db1a771da31bf0", - "sha256:9e7d14206937ff956c2b62108ff76fca2018ac3b094f3bd405de04d4297bd377", - "sha256:a6437e82c52d4cd05458f6d52d461e3b9e4af1a5d43cff2c976a8a130c275096", - "sha256:aea82078b60ce05db90952c2cd9c8389e38687cf28dea7ddc3c9ff6a93551076", - "sha256:bd1cd5595fc70b23ddafe08ab3050814f169dd8de4738eb707dfca100e5316fd", - "sha256:c0a4c945048c4a28e149b009422e74491a35dd480e1003065a3f6dc6f784fb68", - "sha256:c1465c6a5bc4aab5f5f2a2ead8ed799983a8ebf3431c54644a5a0c91e52ff8aa", - "sha256:c2cf9b2d6e98374c6e1f2c69abbce5da2e295910423316a7f9e8ea4b496fb2f6", - "sha256:c50ee237653a0a9524f5ba2ae6673d33bfd786a60b4ba1806355c5dbb0674f95", - "sha256:c6511f893f700443a1d8a8eebdc1b96ae6caee70e0cb65b48098d8eb446fd484", - "sha256:c7af2f17f445f1ed6f5efa5dd74c92b144ba45f363e136db969bfa8d08880feb", - "sha256:d7ff7ac99337f2bf407e27e1e01ca4d4bddd126b248db0a0a896b217ee4ce13f", - "sha256:d9d0861e06ddc790785c9a74c1ce8d31edee458b966e1b83da5b028eb48b6257", - "sha256:da2a894b0f928680da2e9395cab77bf8eb919c64093d1f58f43a27cdd520387a", - "sha256:dcd882b7b81416eb98e6cf692f23e6a74e61e7bc7e89e3aa8a0413b2946c3dc7", - "sha256:dd5c322f1819350ceaca015015a6ce482a3772cd3acd851bd358d020137fb108", - "sha256:df7d1d6dad09f461148398f6a5365a806b61d3fb7e7eba31bf93bb49b63b15e1", - "sha256:e0eeca8ea500456e3bcbd03a78601feb615c47ae7028eaa8aed1cab0e4fb92d7", - "sha256:e383a745da8531152793eaf41d31bb06a16932aa3cf4bc6c321f595bf0f4b84d", - "sha256:e4501d3568c5211b65204e2e580cfdcb3673e8e5ca0a958b7d0b00792cd81fae", - "sha256:e5097537217d764938188f9af86a68e2ccc5aeb3613bad0e0534a08c6d9afab9", - "sha256:eb58aae683924cd639f74bb28ac8fb87de29f32a9fc5427466b87dfeff96a92d", - "sha256:ebff667d43e350f613d9f15b3bd3ffb52e03eda3183bd3de5b1becf988b3fd67", - "sha256:fe5409a01e073a5fe51b1f726d6b23afa127af4465651b262e0696a0f6208423", - "sha256:ff2420d80d194b0a1ac751083f0408a6a9f5fb5f1bd00ae36b21e4552b27f2ce" + "sha256:01521562b5d1fc73ef55c246b20bb5b851504ac0150ccde0daa7661add7be63f", + "sha256:0554e65d0156f5bfe70f4d5576377e7765fb518084396bc0b0fa3411f3a5c885", + "sha256:06f1110c14c418ef268d0159ca5a1136cf45e126d14dd7a6f2b8b2a8a12e6ef6", + "sha256:0a46b3edff21531ba4374f24ecb7227abba1cdddbf62c75eefe94a31f395e880", + "sha256:0ee34f549be43ff97baa5e704997d0d6c6af79900b61b7f65728a7fe81baa079", + "sha256:1463546c8daa6f48d33e78bcb3cb3c89e0ac2cc6aaccf89d79a968c3e1929935", + "sha256:1f0e179979e07feda1c26ff31d31cf5b4b8ee500bd194db092a53d5954b753bc", + "sha256:25d2ca37087cf6259b47a97ab66be7302c9ef1d04f6f1dc2d54de8d1c5f0b28b", + "sha256:300eb1bf53035595de10feaca652b5caeb0c22654913d4894f6aa6d13015f52f", + "sha256:40fd243bca148dda131fa22709ee0a3e8aad3df491e2982bab7b9f607fc272a1", + "sha256:4f4b941f337a80e07993422d629de051bd835706dff463ddfde4e8fe50078c49", + "sha256:56835d0a8d382190c0d41030d7d9a373e0dfb73b378b33e687fe0f089701fe53", + "sha256:5a7574f15f313b304b159d1a11a483c490b386b067ae9f8d23f6572d27904b49", + "sha256:620dc4228f63c7e5ba535dd101a6899f7c2e10f6e36f1bc818094bcacf888af0", + "sha256:65ce49093f87425a809f0025197d280e0b6c7ff429889ba091ad6137a1d90e92", + "sha256:66a613db1c4824d4242fc4e4b6c2bbdb4b7d2fd6d0afad7766f1080dcdbf260a", + "sha256:6a451c3c77c54ba38d158cbb4e401fc3bb85972c0e47f8119b2207852c5b15eb", + "sha256:6eb5978d915a651fd53b68af04476702f965f09fa37f36f073b9b0cdc8676438", + "sha256:70873f8e10fbd63d3e4dde08c96c4de259219dd5b853dc3fc30ec8142b9ee1b3", + "sha256:7c0d7dce6242b9e27a4183df2914754e6e83fbacb4c14189c9e61113fabc751f", + "sha256:8023c0a48be1b5f1081e57b7ed4dd674338a7fd074fd8f01649f89c42b1e4c4c", + "sha256:808aab5ca3e37cf25e2f7c6e1af47332952c8e5bab104a8056e98fbdfdbb0693", + "sha256:80bb090f605de4a3df2c79ac42fac845abb3a7d4cc703a543768ea9be9f62b2a", + "sha256:83a0a91e97fb55281a2532ad53f18a3b89adba0757391adb9971f6e591888430", + "sha256:8424811fab7a8a98e749db2dd409ae1d61efd4c5392933a0d3a0e16f44530616", + "sha256:93f6a1f2a3392a7d6e52445ee45e381c9b214fa6bf3dcbda089ea9c2fa264140", + "sha256:97c61ba8cfa7227706b1d30ab9308384a4f7bc6001761f1128269b8d714d2c63", + "sha256:a68813214e20e3c768e8123dd2d9b5f13cb254ab4dfb64124ddb92fb4fd8c2f7", + "sha256:aa9ba8ec5f1672066c7274b615574ac1dd6ca3e2b0f174b8e21dc979364065e2", + "sha256:acd81c2c306b8f668eb78aded446df85d605168c599142a8ed60dc67a98b2e02", + "sha256:b03d8425d794c59653b54ea84d2db8c7a70c01c34b20e5ae9819f33254665908", + "sha256:b54d806c9a5566631155bc0cb22299f0dc85666a4d4b439e5b0186bf18027f7d", + "sha256:b920b54acec99d3f856b8c4262f9e5eb93cbe1172367bba0543ad654c6b64477", + "sha256:bc53c823ee5b52f1931b8ec88edbdba73e46b510e7ed7cb810a6a373b5882740", + "sha256:be10810145629d6ba80c283db42a5c92c8868fb920409120ffd638c49dbf972c", + "sha256:cb8aa9369e80baf6692d5204d7ccb7489a9f0bf6331e9e687b314e294dd7534e", + "sha256:d2b24132aecb87631442b1d65bc4d0190e31f3ca17e7b2c8c9f9068a12054544", + "sha256:d61e058910296eeca6cef54bc5be124f0ba402899340aa569a958b57dc11307b", + "sha256:dceecf82c9351e13442e49541ba35ffd597b166806ad3507e3750de7affd4105", + "sha256:dd6b5325e90a7fc72b5aba7d758b95ecc0bbcda8020b37324a399b0f77409339", + "sha256:e021a588953482a04b7d9005b84a348e6063c38e6b50d0fbe97619c9026296ea", + "sha256:e5dc5814b838c424949c760fb862606e141795048f956bb9a207f113b7815e24", + "sha256:e7c74d90558a827b8318aa03593397f9ea6926dff0d619e1482ebad2cf46f0b4", + "sha256:e8af5972adbd7c13dcb83debf3265a5f7b99f9ca9330e365c737e6503b70e2d3", + "sha256:e9800c09e788d6a864703ecdaa7168ca414e925c38e48bdcce577d08211e1e47", + "sha256:e98db8e4990a11277d7c5c880e18614221addc08f9c58725667ea644f60a6c00", + "sha256:f049a2bf8a757460beb9e2747c074473892d3e6115ba8ebf13edc5f0905ba2a4", + "sha256:f05d8860924d5a2769780e92a2bba0cf859019c4672458e8d9bdc2403a87f827", + "sha256:f6a7a1f305f0e0ef95878fefb9a6ef26420c67a16819b175c70bd2285823e282", + "sha256:f8181da84d64aa161820ad0f6dddc40725f3faa13b908f3546dafc6acc524d20" ], "markers": "python_version >= '3.8' and python_version < '4'", - "version": "==0.3.1" + "version": "==0.3.5.dev0" }, "certifi": { "hashes": [ - "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407", - "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5" + "sha256:0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de", + "sha256:47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43" ], "markers": "python_version >= '3.7'", - "version": "==2025.8.3" + "version": "==2025.10.5" }, "cffi": { "hashes": [ - "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", - "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", - "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1", - "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", - "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", - "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", - "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8", - "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36", - "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", - "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", - "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc", - "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", - "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", - "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", - "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", - "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", - "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", - "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", - "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", - "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b", - "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", - "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", - "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c", - "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", - "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", - "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", - "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8", - "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1", - "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", - "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", - "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", - "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595", - "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0", - "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", - "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", - "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", - "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", - "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", - "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", - "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16", - "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", - "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e", - "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", - "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964", - "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", - "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576", - "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", - "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3", - "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662", - "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", - "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", - "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", - "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", - "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", - "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", - "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", - "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", - "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9", - "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7", - "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", - "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a", - "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", - "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", - "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", - "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", - "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87", - "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b" + "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", + "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", + "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", + "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", + "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", + "sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2", + "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", + "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", + "sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65", + "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", + "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", + "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", + "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", + "sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a", + "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", + "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", + "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", + "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", + "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", + "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", + "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", + "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", + "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", + "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", + "sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165", + "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", + "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", + "sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c", + "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", + "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", + "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", + "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", + "sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63", + "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", + "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", + "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", + "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", + "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", + "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", + "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", + "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", + "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", + "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", + "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", + "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", + "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", + "sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322", + "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", + "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", + "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", + "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", + "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", + "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", + "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", + "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", + "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", + "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", + "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", + "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", + "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", + "sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9", + "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", + "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", + "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", + "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", + "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", + "sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f", + "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", + "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", + "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", + "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", + "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", + "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", + "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", + "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", + "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", + "sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7", + "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", + "sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534", + "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", + "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", + "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", + "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", + "sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf" ], - "markers": "python_version >= '3.8'", - "version": "==1.17.1" + "markers": "python_version >= '3.9'", + "version": "==2.0.0" }, "cfgv": { "hashes": [ @@ -553,88 +565,122 @@ }, "charset-normalizer": { "hashes": [ - "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91", - "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0", - "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154", - "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601", - "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884", - "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07", - "sha256:0f2be7e0cf7754b9a30eb01f4295cc3d4358a479843b31f328afd210e2c7598c", - "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64", - "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe", - "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f", - "sha256:16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432", - "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc", - "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa", - "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9", - "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae", - "sha256:1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19", - "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d", - "sha256:23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e", - "sha256:252098c8c7a873e17dd696ed98bbe91dbacd571da4b87df3736768efa7a792e4", - "sha256:257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7", - "sha256:2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312", - "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92", - "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31", - "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c", - "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f", - "sha256:34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99", - "sha256:3653fad4fe3ed447a596ae8638b437f827234f01a8cd801842e43f3d0a6b281b", - "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15", - "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392", - "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f", - "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8", - "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491", - "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0", - "sha256:511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc", - "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0", - "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f", - "sha256:5b413b0b1bfd94dbf4023ad6945889f374cd24e3f62de58d6bb102c4d9ae534a", - "sha256:5d8d01eac18c423815ed4f4a2ec3b439d654e55ee4ad610e153cf02faf67ea40", - "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927", - "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849", - "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce", - "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14", - "sha256:70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05", - "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c", - "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c", - "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a", - "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc", - "sha256:88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34", - "sha256:8999f965f922ae054125286faf9f11bc6932184b93011d138925a1773830bbe9", - "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096", - "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14", - "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30", - "sha256:a2d08ac246bb48479170408d6c19f6385fa743e7157d716e144cad849b2dd94b", - "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b", - "sha256:b5e3b2d152e74e100a9e9573837aba24aab611d39428ded46f4e4022ea7d1942", - "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db", - "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5", - "sha256:c60e092517a73c632ec38e290eba714e9627abe9d301c8c8a12ec32c314a2a4b", - "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce", - "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669", - "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0", - "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018", - "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93", - "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe", - "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049", - "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a", - "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef", - "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2", - "sha256:d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca", - "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16", - "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f", - "sha256:d95bfb53c211b57198bb91c46dd5a2d8018b3af446583aab40074bf7988401cb", - "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1", - "sha256:ec557499516fc90fd374bf2e32349a2887a876fbf162c160e3c01b6849eaf557", - "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37", - "sha256:fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7", - "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72", - "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c", - "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9" + "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad", + "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93", + "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394", + "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89", + "sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc", + "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86", + "sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63", + "sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d", + "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f", + "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8", + "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0", + "sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505", + "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161", + "sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af", + "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152", + "sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318", + "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72", + "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4", + "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e", + "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3", + "sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576", + "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c", + "sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1", + "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8", + "sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1", + "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2", + "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44", + "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26", + "sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88", + "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016", + "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede", + "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf", + "sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a", + "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc", + "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0", + "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84", + "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db", + "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1", + "sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7", + "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed", + "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8", + "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133", + "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e", + "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef", + "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14", + "sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2", + "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0", + "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d", + "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828", + "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", + "sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf", + "sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6", + "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328", + "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090", + "sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa", + "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381", + "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c", + "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb", + "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc", + "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", + "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec", + "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc", + "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac", + "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e", + "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313", + "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569", + "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3", + "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d", + "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525", + "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894", + "sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3", + "sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9", + "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a", + "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9", + "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14", + "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25", + "sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50", + "sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf", + "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1", + "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3", + "sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac", + "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e", + "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815", + "sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c", + "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6", + "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6", + "sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e", + "sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4", + "sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84", + "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69", + "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15", + "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191", + "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0", + "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897", + "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd", + "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2", + "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794", + "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d", + "sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074", + "sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3", + "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224", + "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838", + "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a", + "sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d", + "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d", + "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f", + "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8", + "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490", + "sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966", + "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9", + "sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3", + "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e", + "sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608" ], "markers": "python_version >= '3.7'", - "version": "==3.4.3" + "version": "==3.4.4" }, "ckzg": { "hashes": [ @@ -802,153 +848,243 @@ }, "cryptography": { "hashes": [ - "sha256:00e8724bdad672d75e6f069b27970883179bd472cd24a63f6e620ca7e41cc0c5", - "sha256:048e7ad9e08cf4c0ab07ff7f36cc3115924e22e2266e034450a890d9e312dd74", - "sha256:0d9ef57b6768d9fa58e92f4947cea96ade1233c0e236db22ba44748ffedca394", - "sha256:18f878a34b90d688982e43f4b700408b478102dd58b3e39de21b5ebf6509c301", - "sha256:1b7fa6a1c1188c7ee32e47590d16a5a0646270921f8020efc9a511648e1b2e08", - "sha256:20ae4906a13716139d6d762ceb3e0e7e110f7955f3bc3876e3a07f5daadec5f3", - "sha256:20d15aed3ee522faac1a39fbfdfee25d17b1284bafd808e1640a74846d7c4d1b", - "sha256:2384f2ab18d9be88a6e4f8972923405e2dbb8d3e16c6b43f15ca491d7831bd18", - "sha256:275ba5cc0d9e320cd70f8e7b96d9e59903c815ca579ab96c1e37278d231fc402", - "sha256:2dac5ec199038b8e131365e2324c03d20e97fe214af051d20c49db129844e8b3", - "sha256:31a2b9a10530a1cb04ffd6aa1cd4d3be9ed49f7d77a4dafe198f3b382f41545c", - "sha256:3436128a60a5e5490603ab2adbabc8763613f638513ffa7d311c900a8349a2a0", - "sha256:3b5bf5267e98661b9b888a9250d05b063220dfa917a8203744454573c7eb79db", - "sha256:3de77e4df42ac8d4e4d6cdb342d989803ad37707cf8f3fbf7b088c9cbdd46427", - "sha256:44647c5d796f5fc042bbc6d61307d04bf29bccb74d188f18051b635f20a9c75f", - "sha256:550ae02148206beb722cfe4ef0933f9352bab26b087af00e48fdfb9ade35c5b3", - "sha256:599c8d7df950aa68baa7e98f7b73f4f414c9f02d0e8104a30c0182a07732638b", - "sha256:5b64e668fc3528e77efa51ca70fadcd6610e8ab231e3e06ae2bab3b31c2b8ed9", - "sha256:5bd6020c80c5b2b2242d6c48487d7b85700f5e0038e67b29d706f98440d66eb5", - "sha256:5c966c732cf6e4a276ce83b6e4c729edda2df6929083a952cc7da973c539c719", - "sha256:629127cfdcdc6806dfe234734d7cb8ac54edaf572148274fa377a7d3405b0043", - "sha256:705bb7c7ecc3d79a50f236adda12ca331c8e7ecfbea51edd931ce5a7a7c4f012", - "sha256:780c40fb751c7d2b0c6786ceee6b6f871e86e8718a8ff4bc35073ac353c7cd02", - "sha256:7a3085d1b319d35296176af31c90338eeb2ddac8104661df79f80e1d9787b8b2", - "sha256:826b46dae41a1155a0c0e66fafba43d0ede1dc16570b95e40c4d83bfcf0a451d", - "sha256:833dc32dfc1e39b7376a87b9a6a4288a10aae234631268486558920029b086ec", - "sha256:cc4d66f5dc4dc37b89cfef1bd5044387f7a1f6f0abb490815628501909332d5d", - "sha256:d063341378d7ee9c91f9d23b431a3502fc8bfacd54ef0a27baa72a0843b29159", - "sha256:e2a21a8eda2d86bb604934b6b37691585bd095c1f788530c1fcefc53a82b3453", - "sha256:e40b80ecf35ec265c452eea0ba94c9587ca763e739b8e559c128d23bff7ebbbf", - "sha256:e5b3dda1b00fb41da3af4c5ef3f922a200e33ee5ba0f0bc9ecf0b0c173958385", - "sha256:ea3c42f2016a5bbf71825537c2ad753f2870191134933196bee408aac397b3d9", - "sha256:eccddbd986e43014263eda489abbddfbc287af5cddfd690477993dbb31e31016", - "sha256:ee411a1b977f40bd075392c80c10b58025ee5c6b47a822a33c1198598a7a5f05", - "sha256:f4028f29a9f38a2025abedb2e409973709c660d44319c61762202206ed577c42", - "sha256:f68f833a9d445cc49f01097d95c83a850795921b3f7cc6488731e69bde3288da", - "sha256:fc022c1fa5acff6def2fc6d7819bbbd31ccddfe67d075331a65d9cfb28a20983" + "sha256:00a5e7e87938e5ff9ff5447ab086a5706a957137e6e433841e9d24f38a065217", + "sha256:01ca9ff2885f3acc98c29f1860552e37f6d7c7d013d7334ff2a9de43a449315d", + "sha256:09859af8466b69bc3c27bdf4f5d84a665e0f7ab5088412e9e2ec49758eca5cbc", + "sha256:0abf1ffd6e57c67e92af68330d05760b7b7efb243aab8377e583284dbab72c71", + "sha256:1000713389b75c449a6e979ffc7dcc8ac90b437048766cef052d4d30b8220971", + "sha256:109d4ddfadf17e8e7779c39f9b18111a09efb969a301a31e987416a0191ed93a", + "sha256:10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926", + "sha256:10ca84c4668d066a9878890047f03546f3ae0a6b8b39b697457b7757aaf18dbc", + "sha256:15ab9b093e8f09daab0f2159bb7e47532596075139dd74365da52ecc9cb46c5d", + "sha256:191bb60a7be5e6f54e30ba16fdfae78ad3a342a0599eb4193ba88e3f3d6e185b", + "sha256:22d7e97932f511d6b0b04f2bfd818d73dcd5928db509460aaf48384778eb6d20", + "sha256:23b1a8f26e43f47ceb6d6a43115f33a5a37d57df4ea0ca295b780ae8546e8044", + "sha256:36e627112085bb3b81b19fed209c05ce2a52ee8b15d161b7c643a7d5a88491f3", + "sha256:39b6755623145ad5eff1dab323f4eae2a32a77a7abef2c5089a04a3d04366715", + "sha256:3b51b8ca4f1c6453d8829e1eb7299499ca7f313900dd4d89a24b8b87c0a780d4", + "sha256:402b58fc32614f00980b66d6e56a5b4118e6cb362ae8f3fda141ba4689bd4506", + "sha256:416260257577718c05135c55958b674000baef9a1c7d9e8f306ec60d71db850f", + "sha256:46acf53b40ea38f9c6c229599a4a13f0d46a6c3fa9ef19fc1a124d62e338dfa0", + "sha256:4b7387121ac7d15e550f5cb4a43aef2559ed759c35df7336c402bb8275ac9683", + "sha256:50fc3343ac490c6b08c0cf0d704e881d0d660be923fd3076db3e932007e726e3", + "sha256:516ea134e703e9fe26bcd1277a4b59ad30586ea90c365a87781d7887a646fe21", + "sha256:549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91", + "sha256:5d7f93296ee28f68447397bf5198428c9aeeab45705a55d53a6343455dcb2c3c", + "sha256:5ecfccd2329e37e9b7112a888e76d9feca2347f12f37918facbb893d7bb88ee8", + "sha256:6276eb85ef938dc035d59b87c8a7dc559a232f954962520137529d77b18ff1df", + "sha256:6b5063083824e5509fdba180721d55909ffacccc8adbec85268b48439423d78c", + "sha256:6eae65d4c3d33da080cff9c4ab1f711b15c1d9760809dad6ea763f3812d254cb", + "sha256:6f61efb26e76c45c4a227835ddeae96d83624fb0d29eb5df5b96e14ed1a0afb7", + "sha256:71e842ec9bc7abf543b47cf86b9a743baa95f4677d22baa4c7d5c69e49e9bc04", + "sha256:760f83faa07f8b64e9c33fc963d790a2edb24efb479e3520c14a45741cd9b2db", + "sha256:78a97cf6a8839a48c49271cdcbd5cf37ca2c1d6b7fdd86cc864f302b5e9bf459", + "sha256:7ce938a99998ed3c8aa7e7272dca1a610401ede816d36d0693907d863b10d9ea", + "sha256:8a6e050cb6164d3f830453754094c086ff2d0b2f3a897a1d9820f6139a1f0914", + "sha256:9394673a9f4de09e28b5356e7fff97d778f8abad85c9d5ac4a4b7e25a0de7717", + "sha256:94cd0549accc38d1494e1f8de71eca837d0509d0d44bf11d158524b0e12cebf9", + "sha256:a04bee9ab6a4da801eb9b51f1b708a1b5b5c9eb48c03f74198464c66f0d344ac", + "sha256:a23582810fedb8c0bc47524558fb6c56aac3fc252cb306072fd2815da2a47c32", + "sha256:a2c0cd47381a3229c403062f764160d57d4d175e022c1df84e168c6251a22eec", + "sha256:a8b17438104fed022ce745b362294d9ce35b4c2e45c1d958ad4a4b019285f4a1", + "sha256:a9a3008438615669153eb86b26b61e09993921ebdd75385ddd748702c5adfddb", + "sha256:b02cf04496f6576afffef5ddd04a0cb7d49cf6be16a9059d793a30b035f6b6ac", + "sha256:b419ae593c86b87014b9be7396b385491ad7f320bde96826d0dd174459e54665", + "sha256:c0a7bb1a68a5d3471880e264621346c48665b3bf1c3759d682fc0864c540bd9e", + "sha256:c70cc23f12726be8f8bc72e41d5065d77e4515efae3690326764ea1b07845cfb", + "sha256:c8daeb2d2174beb4575b77482320303f3d39b8e81153da4f0fb08eb5fe86a6c5", + "sha256:cb3d760a6117f621261d662bccc8ef5bc32ca673e037c83fbe565324f5c46936", + "sha256:d55f3dffadd674514ad19451161118fd010988540cee43d8bc20675e775925de", + "sha256:d89c3468de4cdc4f08a57e214384d0471911a3830fcdaf7a8cc587e42a866372", + "sha256:db391fa7c66df6762ee3f00c95a89e6d428f4d60e7abc8328f4fe155b5ac6e54", + "sha256:dfb781ff7eaa91a6f7fd41776ec37c5853c795d3b358d4896fdbb5df168af422", + "sha256:e5bf0ed4490068a2e72ac03d786693adeb909981cc596425d09032d372bcc849", + "sha256:e7aec276d68421f9574040c26e2a7c3771060bc0cff408bae1dcb19d3ab1e63c", + "sha256:ef639cb3372f69ec44915fafcd6698b6cc78fbe0c2ea41be867f6ed612811963", + "sha256:f260d0d41e9b4da1ed1e0f1ce571f97fe370b152ab18778e9e8f67d6af432018" ], "index": "pypi", - "markers": "python_version >= '3.7' and python_full_version not in '3.9.0, 3.9.1'", - "version": "==45.0.6" + "markers": "python_version >= '3.8' and python_full_version not in '3.9.0, 3.9.1'", + "version": "==46.0.3" }, "cytoolz": { "hashes": [ - "sha256:0317681dd065532d21836f860b0563b199ee716f55d0c1f10de3ce7100c78a3b", - "sha256:058bf996bcae9aad3acaeeb937d42e0c77c081081e67e24e9578a6a353cb7fb2", - "sha256:0724ba4cf41eb40b6cf75250820ab069e44bdf4183ff78857aaf4f0061551075", - "sha256:08946e083faa5147751b34fbf78ab931f149ef758af5c1092932b459e18dcf5c", - "sha256:08ab7efae08e55812340bfd1b3f09f63848fe291675e2105eab1aa5327d3a16e", - "sha256:0a54da7a8e4348a18d45d4d5bc84af6c716d7f131113a4f1cc45569d37edff1b", - "sha256:0c0ef52febd5a7821a3fd8d10f21d460d1a3d2992f724ba9c91fbd7a96745d41", - "sha256:0f445b8b731fc0ecb1865b8e68a070084eb95d735d04f5b6c851db2daf3048ab", - "sha256:139bed875828e1727018aa0982aa140e055cbafccb7fd89faf45cbb4f2a21514", - "sha256:140bbd649dbda01e91add7642149a5987a7c3ccc251f2263de894b89f50b6608", - "sha256:1855022b712a9c7a5bce354517ab4727a38095f81e2d23d3eabaf1daeb6a3b3c", - "sha256:1b18b35256219b6c3dd0fa037741b85d0bea39c552eab0775816e85a52834140", - "sha256:1db9eb7179285403d2fb56ba1ff6ec35a44921b5e2fa5ca19d69f3f9f0285ea5", - "sha256:1f546a96460a7e28eb2ec439f4664fa646c9b3e51c6ebad9a59d3922bbe65e30", - "sha256:207d4e4b445e087e65556196ff472ff134370d9a275d591724142e255f384662", - "sha256:21cdf6bac6fd843f3b20280a66fd8df20dea4c58eb7214a2cd8957ec176f0bb3", - "sha256:22c12671194b518aa8ce2f4422bd5064f25ab57f410ba0b78705d0a219f4a97a", - "sha256:239039585487c69aa50c5b78f6a422016297e9dea39755761202fb9f0530fe87", - "sha256:241c679c3b1913c0f7259cf1d9639bed5084c86d0051641d537a0980548aa266", - "sha256:25b6e8dec29aa5a390092d193abd673e027d2c0b50774ae816a31454286c45c7", - "sha256:2d958d4f04d9d7018e5c1850790d9d8e68b31c9a2deebca74b903706fdddd2b6", - "sha256:309dffa78b0961b4c0cf55674b828fbbc793cf2d816277a5c8293c0c16155296", - "sha256:3237e56211e03b13df47435b2369f5df281e02b04ad80a948ebd199b7bc10a47", - "sha256:32fba3f63fcb76095b0a22f4bdcc22bc62a2bd2d28d58bf02fd21754c155a3ec", - "sha256:36cd6989ebb2f18fe9af8f13e3c61064b9f741a40d83dc5afeb0322338ad25f2", - "sha256:43de33d99a4ccc07234cecd81f385456b55b0ea9c39c9eebf42f024c313728a5", - "sha256:44a71870f7eae31d263d08b87da7c2bf1176f78892ed8bdade2c2850478cb126", - "sha256:454880477bb901cee3a60f6324ec48c95d45acc7fecbaa9d49a5af737ded0595", - "sha256:45f6fa1b512bc2a0f2de5123db932df06c7f69d12874fe06d67772b2828e2c8b", - "sha256:4a55ec098036c0dea9f3bdc021f8acd9d105a945227d0811589f0573f21c9ce1", - "sha256:4ba8b16358ea56b1fe8e637ec421e36580866f2e787910bac1cf0a6997424a34", - "sha256:4e2d944799026e1ff08a83241f1027a2d9276c41f7a74224cd98b7df6e03957d", - "sha256:50f9c530f83e3e574fc95c264c3350adde8145f4f8fc8099f65f00cc595e5ead", - "sha256:51628b4eb41fa25bd428f8f7b5b74fbb05f3ae65fbd265019a0dd1ded4fdf12a", - "sha256:51633a14e6844c61db1d68c1ffd077cf949f5c99c60ed5f1e265b9e2966f1b52", - "sha256:54d3d36bbf0d4344d1afa22c58725d1668e30ff9de3a8f56b03db1a6da0acb11", - "sha256:582dad4545ddfb5127494ef23f3fa4855f1673a35d50c66f7638e9fb49805089", - "sha256:5a515df8f8aa6e1eaaf397761a6e4aff2eef73b5f920aedf271416d5471ae5ee", - "sha256:5a750b1af7e8bf6727f588940b690d69e25dc47cce5ce467925a76561317eaf7", - "sha256:5bfc860251a8f280ac79696fc3343cfc3a7c30b94199e0240b6c9e5b6b01a2a5", - "sha256:5f7f04eeb4088947585c92d6185a618b25ad4a0f8f66ea30c8db83cf94a425e3", - "sha256:67cd16537df51baabde3baa770ab7b8d16839c4d21219d5b96ac59fb012ebd2d", - "sha256:67daeeeadb012ec2b59d63cb29c4f2a2023b0c4957c3342d354b8bb44b209e9a", - "sha256:6944bb93b287032a4c5ca6879b69bcd07df46f3079cf8393958cf0b0454f50c0", - "sha256:69e2a1f41a3dad94a17aef4a5cc003323359b9f0a9d63d4cc867cb5690a2551d", - "sha256:738b2350f340ff8af883eb301054eb724997f795d20d90daec7911c389d61581", - "sha256:79888f2f7dc25709cd5d37b032a8833741e6a3692c8823be181d542b5999128e", - "sha256:823a3763828d8d457f542b2a45d75d6b4ced5e470b5c7cf2ed66a02f508ed442", - "sha256:8245f929144d4d3bd7b972c9593300195c6cea246b81b4c46053c48b3f044580", - "sha256:83d19d55738ad9c60763b94f3f6d3c6e4de979aeb8d76841c1401081e0e58d96", - "sha256:88662c0e07250d26f5af9bc95911e6137e124a5c1ec2ce4a5d74de96718ab242", - "sha256:88ba85834cd523b91fdf10325e1e6d71c798de36ea9bdc187ca7bd146420de6f", - "sha256:89cc3161b89e1bb3ed7636f74ed2e55984fd35516904fc878cae216e42b2c7d6", - "sha256:8f89c48d8e5aec55ffd566a8ec858706d70ed0c6a50228eca30986bfa5b4da8b", - "sha256:902115d1b1f360fd81e44def30ac309b8641661150fcbdde18ead446982ada6a", - "sha256:90d6a2e6ab891043ee655ec99d5e77455a9bee9e1131bdfcfb745edde81200dd", - "sha256:90e577e08d3a4308186d9e1ec06876d4756b1e8164b92971c69739ea17e15297", - "sha256:92c398e7b7023460bea2edffe5fcd0a76029580f06c3f6938ac3d198b47156f3", - "sha256:92d27f84bf44586853d9562bfa3610ecec000149d030f793b4cb614fd9da1813", - "sha256:980c323e626ba298b77ae62871b2de7c50b9d7219e2ddf706f52dd34b8be7349", - "sha256:9930f7288c4866a1dc1cc87174f0c6ff4cad1671eb1f6306808aa6c445857d78", - "sha256:9cbd9c103df54fcca42be55ef40e7baea624ac30ee0b8bf1149f21146d1078d9", - "sha256:a13ab79ff4ce202e03ab646a2134696988b554b6dc4b71451e948403db1331d8", - "sha256:a47394f8ab7fca3201f40de61fdeea20a2baffb101485ae14901ea89c3f6c95d", - "sha256:a5ca923d1fa632f7a4fb33c0766c6fba7f87141a055c305c3e47e256fb99c413", - "sha256:a76d20dec9c090cdf4746255bbf06a762e8cc29b5c9c1d138c380bbdb3122ade", - "sha256:a7eecab6373e933dfbf4fdc0601d8fd7614f8de76793912a103b5fccf98170cd", - "sha256:a91b4e10a9c03796c0dc93e47ebe25bb41ecc6fafc3cf5197c603cf767a3d44d", - "sha256:a9baad795d72fadc3445ccd0f122abfdbdf94269157e6d6d4835636dad318804", - "sha256:aa87599ccc755de5a096a4d6c34984de6cd9dc928a0c5eaa7607457317aeaf9b", - "sha256:ad95b386a84e18e1f6136f6d343d2509d4c3aae9f5a536f3dc96808fcc56a8cf", - "sha256:b2b407cc3e9defa8df5eb46644f6f136586f70ba49eba96f43de67b9a0984fd3", - "sha256:b349bf6162e8de215403d7f35f8a9b4b1853dc2a48e6e1a609a5b1a16868b296", - "sha256:b7f6b617454b4326af7bd3c7c49b0fc80767f134eb9fd6449917a058d17a0e3c", - "sha256:ba0d1da50aab1909b165f615ba1125c8b01fcc30d606c42a61c42ea0269b5e2c", - "sha256:c28307640ca2ab57b9fbf0a834b9bf563958cd9e038378c3a559f45f13c3c541", - "sha256:c42420e0686f887040d5230420ed44f0e960ccbfa29a0d65a3acd9ca52459209", - "sha256:c8231b9abbd8e368e036f4cc2e16902c9482d4cf9e02a6147ed0e9a3cd4a9ab0", - "sha256:c8edd1547014050c1bdad3ff85d25c82bd1c2a3c96830c6181521eb78b9a42b3", - "sha256:cec9af61f71fc3853eb5dca3d42eb07d1f48a4599fa502cbe92adde85f74b042", - "sha256:d00ac423542af944302e034e618fb055a0c4e87ba704cd6a79eacfa6ac83a3c9", - "sha256:d2960cb4fa01ccb985ad1280db41f90dc97a80b397af970a15d5a5de403c8c61", - "sha256:d74cca6acf1c4af58b2e4a89cc565ed61c5e201de2e434748c93e5a0f5c541a5", - "sha256:dd7bd0618e16efe03bd12f19c2a26a27e6e6b75d7105adb7be1cd2a53fa755d8", - "sha256:e027260fd2fc5cb041277158ac294fc13dca640714527219f702fb459a59823a", - "sha256:e37385db03af65763933befe89fa70faf25301effc3b0485fec1c15d4ce4f052", - "sha256:e55ed62087f6e3e30917b5f55350c3b6be6470b849c6566018419cd159d2cebc", - "sha256:e5fdc5264f884e7c0a1711a81dff112708a64b9c8561654ee578bfdccec6be09", - "sha256:e68e6b38473a3a79cee431baa22be31cac39f7df1bf23eaa737eaff42e213883", - "sha256:e74801b751e28f7c5cc3ad264c123954a051f546f2fdfe089f5aa7a12ccfa6da", - "sha256:e90124bdc42ff58b88cdea1d24a6bc5f776414a314cc4d94f25c88badb3a16d1", - "sha256:edb34246e6eb40343c5860fc51b24937698e4fa1ee415917a73ad772a9a1746b", - "sha256:f112a71fad6ea824578e6393765ce5c054603afe1471a5c753ff6c67fd872d10", - "sha256:f3a509e4ac8e711703c368476b9bbce921fcef6ebb87fa3501525f7000e44185", - "sha256:f3ec9b01c45348f1d0d712507d54c2bfd69c62fbd7c9ef555c9d8298693c2432", - "sha256:f5ebaf419acf2de73b643cf96108702b8aef8e825cf4f63209ceb078d5fbbbfd", - "sha256:f61928803bb501c17914b82d457c6f50fe838b173fb40d39c38d5961185bd6c7", - "sha256:f93f42d9100c415155ad1f71b0de362541afd4ac95e3153467c4c79972521b6b", - "sha256:fb988c333f05ee30ad4693fe4da55d95ec0bb05775d2b60191236493ea2e01f9", - "sha256:fcb8f7d0d65db1269022e7e0428471edee8c937bc288ebdcb72f13eaa67c2fe4" + "sha256:02feeeda93e1fa3b33414eb57c2b0aefd1db8f558dd33fdfcce664a0f86056e4", + "sha256:047defa7f5f9a32f82373dbc3957289562e8a3fa58ae02ec8e4dca4f43a33a21", + "sha256:0499c5e0a8e688ed367a2e51cc13792ae8f08226c15f7d168589fc44b9b9cada", + "sha256:05332112d4087904842b36954cd1d3fc0e463a2f4a7ef9477bd241427c593c3b", + "sha256:06ad4c95b258141f138a93ebfdc1d76ac087afc1a82f1401100a1f44b44ba656", + "sha256:06d1c79aa51e6a92a90b0e456ebce2288f03dd6a76c7f582bfaa3eda7692e8a5", + "sha256:07156987f224c6dac59aa18fb8bf91e1412f5463961862716a3381bf429c8699", + "sha256:0846f49cf8a4496bd42659040e68bd0484ce6af819709cae234938e039203ba0", + "sha256:08a63935c66488511b7b29b06233be0be5f4123622fc8fd488f28dc1b7e4c164", + "sha256:098d628a801dc142e9740126be5624eb7aef1d732bc7a5719f60a2095547b485", + "sha256:0a6f44cf9319c30feb9a50aa513d777ef51efec16f31c404409e7deb8063df64", + "sha256:0cc537ad78981df1a827773069fd3b7774f4478db43f518b1616efaf87d7d8f9", + "sha256:0d416a81bb0bd517558668e49d30a7475b5445f9bbafaab7dcf066f1e9adba36", + "sha256:0ec96b3d537cdf47d4e76ded199f7440715f4c71029b45445cff92c1248808c2", + "sha256:1010869529bb05dc9802b6d776a34ca1b6d48b9deec70ad5e2918ae175be5c2f", + "sha256:10ae4718a056948d73ca3e1bb9ab1f95f897ec1e362f829b9d37cc29ab566c60", + "sha256:11a8f2e83295bdb33f35454d6bafcb7845b03b5881dcaed66ecbd726c7f16772", + "sha256:13a7bf254c3c0d28b12e2290b82aed0f0977a4c2a2bf84854fcdc7796a29f3b0", + "sha256:15d0c6405efc040499c46df44056a5c382f551a7624a41cf3e4c84a96b988a15", + "sha256:16a3af394ade1973226d64bb2f9eb3336adbdea03ed5b134c1bbec5a3b20028e", + "sha256:174ebc71ebb20a9baeffce6ee07ee2cd913754325c93f99d767380d8317930f7", + "sha256:1842636b6e034f229bf084c2bcdcfd36c8437e752eefd2c74ce9e2f10415cb6e", + "sha256:1920b9b9c13d60d0bb6cd14594b3bce0870022eccb430618c37156da5f2b7a55", + "sha256:1aa58e2434d732241f7f051e6f17657e969a89971025e24578b5cbc6f1346485", + "sha256:1b557071405b4aeeaa7cbec1a95d15d6c8f37622fe3f4b595311e0e226ce772c", + "sha256:1bb77bc6197e5cb19784b6a42bb0f8427e81737a630d9d7dda62ed31733f9e6c", + "sha256:1dce1e66fdf72cc474367bd7a7f2b90ec67bb8197dc3fe8ecd08f4ce3ab950a1", + "sha256:1ed534bdbbf063b2bb28fca7d0f6723a3e5a72b086e7c7fe6d74ae8c3e4d00e2", + "sha256:1fef0296fb3577d0a08ad9b70344ee418f728f1ec21a768ffe774437d67ac859", + "sha256:202fe9975efaec0085cab14a6a6050418bc041f5316f2cf098c0cd2aced4c50e", + "sha256:208e2f2ef90a32b0acbff3303d90d89b13570a228d491d2e622a7883a3c68148", + "sha256:22290b73086af600042d99f5ce52a43d4ad9872c382610413176e19fc1d4fd2d", + "sha256:23e616b38f5b3160c7bb45b0f84a8f3deb4bd26b29fb2dfc716f241c738e27b8", + "sha256:257905ec050d04f2f856854620d1e25556fd735064cebd81b460f54939b9f9d5", + "sha256:25db9e4862f22ea0ae2e56c8bec9fc9fd756b655ae13e8c7b5625d7ed1c582d4", + "sha256:26801c1a165e84786a99e03c9c9973356caaca002d66727b761fb1042878ef06", + "sha256:27b19b4a286b3ff52040efa42dbe403730aebe5fdfd2def704eb285e2125c63e", + "sha256:296440a870e8d1f2e1d1edf98f60f1532b9d3ab8dfbd4b25ec08cd76311e79e5", + "sha256:2a9a464542912d3272f6dccc5142df057c71c6a5cbd30439389a732df401afb7", + "sha256:2f1fcf9e7e7b3487883ff3f815abc35b89dcc45c4cf81c72b7ee457aa72d197b", + "sha256:31538ca2fad2d688cbd962ccc3f1da847329e2258a52940f10a2ac0719e526be", + "sha256:31922849b701b0f24bb62e56eb2488dcd3aa6ae3057694bd6b3b7c4c2bc27c2f", + "sha256:32c559f95ff44a9ebcbd934acaa1e6dc8f3e6ffce4762a79a88528064873d6d5", + "sha256:3604b959a01f64c366e7d10ec7634d5f5cfe10301e27a8f090f6eb3b2a628a18", + "sha256:36c8ede93525cf11e2cc787b7156e5cecd7340193ef800b816a16f1404a8dc6d", + "sha256:375a65baa5a5b4ff6a0c5ff17e170cf23312e4c710755771ca966144c24216b5", + "sha256:3b5c5a192abda123ad45ef716ec9082b4cf7d95e9ada8291c5c2cc5558be858b", + "sha256:3c03137ee6103ba92d5d6ad6a510e86fded69cd67050bd8a1843f15283be17ac", + "sha256:3d407140f5604a89578285d4aac7b18b8eafa055cf776e781aabb89c48738fad", + "sha256:3dc15c48b20c0f467e15e341e102896c8422dccf8efc6322def5c1b02f074629", + "sha256:3e248cdbf2a54bafdadf4486ddd32e8352f816d3caa2014e44de99f8c525d4a8", + "sha256:3e3872c21170f8341656f8692f8939e8800dcee6549ad2474d4c817bdefd62cd", + "sha256:44b31c05addb0889167a720123b3b497b28dd86f8a0aeaf3ae4ffa11e2c85d55", + "sha256:456f77207d1445025d7ef262b8370a05492dcb1490cb428b0f3bf1bd744a89b0", + "sha256:472c1c9a085f5ad973ec0ad7f0b9ba0969faea6f96c9e397f6293d386f3a25ec", + "sha256:47663e57d3f3f124921f38055e86a1022d0844c444ede2e8f090d3bbf80deb65", + "sha256:47caa376dafd2bdc29f8a250acf59c810ec9105cd6f7680b9a9d070aae8490ec", + "sha256:48cb8a692111a285d2b9acd16d185428176bfbffa8a7c274308525fccd01dd42", + "sha256:4bce006121b120e8b359244ee140bb0b1093908efc8b739db8dbaa3f8fb42139", + "sha256:4cdb3fa1772116827f263f25b0cdd44c663b6701346a56411960534a06c082de", + "sha256:4d96ff3d381423af1b105295f97de86d1db51732c9566eb37378bab6670c5010", + "sha256:4e6b428e9eb5126053c2ae0efa62512ff4b38ed3951f4d0888ca7005d63e56f5", + "sha256:5158744a09d0e0e4a4f82225e3a3c4ebf38f9ae74467aaa905467270e52f2794", + "sha256:528349434601b9d55e65c6a495494de0001c9a06b431547fea4c60b5edc7d5b3", + "sha256:5291b117d71652a817ec164e7011f18e6a51f8a352cc9a70ed5b976c51102fda", + "sha256:53a3262bf221f19437ed544bf8c0e1980c81ac8e2a53d87a9bc075dba943d36f", + "sha256:56161f0ab60dc4159ec343509abaf809dc88e85c7e420e354442c62e3e7cbb77", + "sha256:563dda652c6ff52d215704fbe6b491879b78d7bbbb3a9524ec8e763483cb459f", + "sha256:56584745ac647993a016a21bc76399113b7595e312f8d0a1b140c9fcf9b58a27", + "sha256:56e5afb69eb6e1b3ffc34716ee5f92ffbdb5cb003b3a5ca4d4b0fe700e217162", + "sha256:574ee9dfdc632db8bf9237f27f2a687d1a0b90d29d5e96cab2b21fd2b419c17d", + "sha256:5a2120bf9e6e8f25e1b32748424a5571e319ef03a995a8fde663fd2feec1a696", + "sha256:5ab2c97d8aaa522b038cca9187b1153347af22309e7c998b14750c6fdec7b1cb", + "sha256:5b399ce7d967b1cb6280250818b786be652aa8ddffd3c0bb5c48c6220d945ab5", + "sha256:5d9bc596751cbda8073e65be02ca11706f00029768fbbbc81e11a8c290bb41aa", + "sha256:64b63ed4b71b1ba813300ad0f06b8aff19a12cf51116e0e4f1ed837cea4debcf", + "sha256:653cb18c4fc5d8a8cfce2bce650aabcbe82957cd0536827367d10810566d5294", + "sha256:6594efbaea72dc58b368b53e745ad902c8d8cc41286f00b3743ceac464d5ef3f", + "sha256:6965af3fc7214645970e312deb9bd35a213a1eaabcfef4f39115e60bf2f76867", + "sha256:6d8cdc299d67eb0f3b9ecdafeeb55eb3b7b7470e2d950ac34b05ed4c7a5572b8", + "sha256:6db2127a3c1bc2f59f08010d2ae53a760771a9de2f67423ad8d400e9ba4276e8", + "sha256:717b7775313da5f51b0fbf50d865aa9c39cb241bd4cb605df3cf2246d6567397", + "sha256:72d7043a88ea5e61ba9d17ea0d1c1eff10f645d7edfcc4e56a31ef78be287644", + "sha256:747562aa70abf219ea16f07d50ac0157db856d447f7f498f592e097cbc77df0b", + "sha256:76c9b58555300be6dde87a41faf1f97966d79b9a678b7a526fcff75d28ef4945", + "sha256:779ee4096ed7a82cffab89372ffc339631c285079dbf33dbe7aff1f6174985df", + "sha256:7c849f9ddaf3c7faba938440f9c849235a2908b303063d49da3092a93acd695b", + "sha256:7d3e405e435320e08c5a1633afaf285a392e2d9cef35c925d91e2a31dfd7a688", + "sha256:7d5cf15892e63411ec1bd67deff0e84317d974e6ab2cdfefdd4a7cea2989df66", + "sha256:7e49922a7ed54262d41960bf3b835a7700327bf79cff1e9bfc73d79021132ff8", + "sha256:7fc0f1e4e9bb384d26e73c6657bbc26abdae4ff66a95933c00f3d578be89181b", + "sha256:80d6da158f7d20c15819701bbda1c041f0944ede2f564f5c739b1bc80a9ffb8b", + "sha256:823df012ab90d2f2a0f92fea453528539bf71ac1879e518524cd0c86aa6df7b9", + "sha256:82779049f352fb3ab5e8c993ab45edbb6e02efb1f17f0b50f4972c706cc51d76", + "sha256:832bd36cc9123535f1945acf6921f8a2a15acc19cfe4065b1c9b985a28671886", + "sha256:853a5b4806915020c890e1ce70cc056bbc1dd8bc44f2d74d555cccfd7aefba7d", + "sha256:87d44e6033d4c5e95a7d39ba59b8e105ba1c29b1ccd1d215f26477cc1d64be39", + "sha256:8b3604fef602bcd53415055a4f68468339192fd17be39e687ae24f476d23d56e", + "sha256:8c3784c965c9a6822d315d099c3a85b0884ac648952815891c667b469116f1d0", + "sha256:8caef62f846a9011676c51bda9189ae394cdd6bb17f2946ecaedc23243268320", + "sha256:8f3d4da470cfd5cf44f6d682c6eb01363066e0af53ebe111225e44a618f9453d", + "sha256:923df8f5591e0d20543060c29909c149ab1963a7267037b39eee03a83dbc50a8", + "sha256:93bd0afcc4cc05794507084afaefb161c3639f283ee629bd0e8654b5c0327ba8", + "sha256:943a662d2e72ffc4438d43ab5a1de8d852237775a423236594a3b3e381b8032c", + "sha256:945580dc158c557172fca899a35a99a16fbcebf6db0c77cb6621084bc82189f9", + "sha256:946786755274f07bb2be0400f28adb31d7d85a7c7001873c0a8e24a503428fb3", + "sha256:964b248edc31efc50a65e9eaa0c845718503823439d2fa5f8d2c7e974c2b5409", + "sha256:99f8e134c9be11649342853ec8c90837af4089fc8ff1e8f9a024a57d1fa08514", + "sha256:9b16660d01c3931951fab49db422c627897c38c1a1f0393a97582004019a4887", + "sha256:9e2cd93b28f667c5870a070ab2b8bb4397470a85c4b204f2454b0ad001cd1ca3", + "sha256:9e2d3fe3b45c3eb7233746f7aca37789be3dceec3e07dcc406d3e045ea0f7bdc", + "sha256:a12a2a1a6bc44099491c05a12039efa08cc33a3d0f8c7b0566185e085e139283", + "sha256:a2ade74fccd080ea793382968913ee38d7a35c921df435bbf0a6aeecf0d17574", + "sha256:a5a8755c4104ee4e3d5ba434c543b5f85fdee6a1f1df33d93f518294da793a60", + "sha256:a60ba6f2ed9eb0003a737e1ee1e9fa2258e749da6477946008d4324efa25149f", + "sha256:a68cef396a7de237f7b97422a6a450dfb111722296ba217ba5b34551832f1f6e", + "sha256:a7ad7ca3386fa86bd301be3fa36e7f0acb024f412f665937955acfc8eb42deff", + "sha256:a8957bcaea1ba01327a9b219d2adb84144377684f51444253890dab500ca171f", + "sha256:a92a320d72bef1c7e2d4c6d875125cf57fc38be45feb3fac1bfa64ea401f54a4", + "sha256:a95416eca473e6c1179b48d86adcf528b59c63ce78f4cb9934f2e413afa9b56b", + "sha256:abf76b1c1abd031f098f293b6d90ee08bdaa45f8b5678430e331d991b82684b1", + "sha256:ac266a34437812cf841cecbfe19f355ab9c3dd1ef231afc60415d40ff12a76e4", + "sha256:ada59a4b3c59d4ac7162e0ed08667ffa78abf48e975c8a9f9d5b9bc50720f4fd", + "sha256:b2079fd9f1a65f4c61e6278c8a6d4f85edf30c606df8d5b32f1add88cbbe2286", + "sha256:b6072876ba56446d9ac29d349983677d6f44c6d1c6c1c6be44e66e377c57c767", + "sha256:b622d4f54e370c853ded94a668f94fe72c6d70e06ac102f17a2746661c27ab52", + "sha256:b63f5f025fac893393b186e132e3e242de8ee7265d0cd3f5bdd4dda93f6616c9", + "sha256:b786c9c8aeab76cc2f76011e986f7321a23a56d985b77d14f155d5e5514ea781", + "sha256:b7de5718e2113d4efccea3f06055758cdbc17388ecc3341ba4d1d812837d7c1a", + "sha256:b9ddeff8e8fd65eb1fcefa61018100b2b627e759ea6ad275d2e2a93ffac147bf", + "sha256:ba6c12d0e6a67399f4102b4980f4f1bebdbf226ed0a68e84617709d4009b4e71", + "sha256:be8e298d88f88bd172b59912240558be3b7a04959375646e7fd4996401452941", + "sha256:bf069c5381d757debae891401b88b3a346ba3a28ca45ba9251103b282463fad8", + "sha256:c0c949755b6d8a649c5fbc888bc30915926f1b09fe42fea9f289e297c2f6ddd3", + "sha256:c0d51bcdb3203a062a78f66bbe33db5e3123048e24a5f0e1402422d79df8ee2d", + "sha256:c7a98deb11ccd8e5d9f9441ef2ff3352aab52226a2b7d04756caaa53cd612363", + "sha256:c7b44e9de86bea013fe84fd8c399d6016bbb96c37c5290769e5c99460b9c53e5", + "sha256:c8c0a513dc89bc05cc72893609118815bced5ef201f1a317b4cc3423b3a0e750", + "sha256:c9ff2b3c57c79b65cb5be14a18c6fd4a06d5036fb3f33e973a9f70e9ac13ca28", + "sha256:cdb406001474726a47fbe903f3aba0de86f5c0b9c9861f55c09c366368225ae0", + "sha256:ce94db4f8ebe842c30c0ece42ff5de977c47859088c2c363dede5a68f6906484", + "sha256:d08154ad45349162b6c37f12d5d1b2e6eef338e657b85e1621e4e6a4a69d64cb", + "sha256:d1b5c95041741b81430454db65183e133976f45ac3c03454cfa8147952568529", + "sha256:d1d638b10d3144795655e9395566ce35807df09219fd7cacd9e6acbdef67946a", + "sha256:d2f344ba5eb17dcf38ee37fdde726f69053f54927db8f8a1bed6ac61e5b1890d", + "sha256:d542cee7c7882d2a914a33dec4d3600416fb336734df979473249d4c53d207a1", + "sha256:d5b8f78b9fed79cf185ad4ddec099abeef45951bdcb416c5835ba05f0a1242c7", + "sha256:d758e5ef311d2671e0ae8c214c52e44617cf1e58bef8f022b547b9802a5a7f30", + "sha256:d759e9ed421bacfeb456d47af8d734c057b9912b5f2441f95b27ca35e5efab07", + "sha256:d8e08464c5cdea4f6df31e84b11ed6bfd79cedb99fbcbfdc15eb9361a6053c5a", + "sha256:db2c4c3a7f7bd7e03bb1a236a125c8feb86c75802f4ecda6ecfaf946610b2930", + "sha256:db5dbcfda1c00e937426cbf9bdc63c24ebbc358c3263bfcbc1ab4a88dc52aa8e", + "sha256:dba8e5a8c6e3c789d27b0eb5e7ce5ed7d032a7a9aae17ca4ba5147b871f6e327", + "sha256:dce4ee9fc99104bc77efdea80f32ca5a650cd653bcc8a1d984a931153d3d9b58", + "sha256:dd3f894ff972da1994d06ac6157d74e40dda19eb31fe5e9b7863ca4278c3a167", + "sha256:ddd2863f321d67527d3b67a93000a378ad6f967056f68c06467fe011278a6d0e", + "sha256:ddf9a38a5b686091265ff45b53d142e44a538cd6c2e70610d3bc6be094219032", + "sha256:de425c5a8e3be7bb3a195e19191d28d9eb3c2038046064a92edc4505033ec9cb", + "sha256:e1b6d37545816905a76d9ed59fa4e332f929e879f062a39ea0f6f620405cdc27", + "sha256:e1d7be25f6971e986a52b6d3a0da28e1941850985417c35528f6823aef2cfec5", + "sha256:e63f2b70f4654648a5c6a176ae80897c0de6401f385540dce8e365019e800cfe", + "sha256:e68308d32afd31943314735c1335e4ab5696110e96b405f6bdb8f2a8dc771a16", + "sha256:e7e29a1a03f00b4322196cfe8e2c38da9a6c8d573566052c586df83aacc5663c", + "sha256:ebf06d1c5344fb22fee71bf664234733e55db72d74988f2ecb7294b05e4db30c", + "sha256:ed6104fa942aa5784bf54f339563de637557e3443b105760bc4de8f16a7fc79b", + "sha256:f2ce18dd99533d077e9712f9faa852f389f560351b1efd2f2bdb193a95eddde2", + "sha256:f32e93a55681d782fc6af939f6df36509d65122423cbc930be39b141064adff8", + "sha256:f32e94c91ffe49af04835ee713ebd8e005c85ebe83e7e1fdcc00f27164c2d636", + "sha256:f494124e141a9361f31d79875fe7ea459a3be2b9dadd90480427c0c52a0943d4", + "sha256:f731c53ed29959f105ae622b62e39603c207ed8e8cb2a40cd4accb63d9f92901", + "sha256:fc4bb48b3b866e1867f7c6411a4229e5b44be3989060663713e10efc24c9bd5f", + "sha256:fccde6efefdbc02e676ccb352a2ccc8a8e929f59a1c6d3d60bb78e923a49ca44", + "sha256:fdb5be8fbcc0396141189022724155a4c1c93712ac4aef8c03829af0c2a816d7" ], - "markers": "python_version >= '3.8'", - "version": "==1.0.1" + "markers": "python_version >= '3.9'", + "version": "==1.1.0" }, "dataclassy": { "hashes": [ @@ -975,11 +1111,11 @@ }, "eip712": { "hashes": [ - "sha256:291ab5082199469dc088e5fdce7fa07b2e64dcccde434e10a9f1c53be2d18175", - "sha256:92bcaa1f47a48cf6f0369b88b7bac8c88962b212cfb3b9d6a54639de0616e17c" + "sha256:2b6e971372fbb47bd21cd0f1bf4a88e17499e22d97fcf704c86774b8e5f91766", + "sha256:44393f8880aa2e78acdc59b543071a95557647a11503b208d9bfe1093cd31069" ], "markers": "python_version >= '3.9' and python_version < '4'", - "version": "==0.2.13" + "version": "==0.2.14" }, "eth-abi": { "hashes": [ @@ -1044,11 +1180,11 @@ }, "eth-pydantic-types": { "hashes": [ - "sha256:a30c59d6c3bec0a56dd2ef874a4ab6b4e3bc11461713c3985fd21a4f619f821d", - "sha256:e68cd68682abf6713ed08008fbffe29fac806f4be9a5bec0e8aa2b5ab2f6736c" + "sha256:0e02a29662bf94578d03b1c6ed8ab225a993ab8e386a7d5ff341bd0a7b5fdfb1", + "sha256:3eabd97d1896119e68a2539170e1a42bd50b2ce15e0256ab869eabebaa33909c" ], "markers": "python_version >= '3.9' and python_version < '4'", - "version": "==0.2.1" + "version": "==0.2.2" }, "eth-rlp": { "hashes": [ @@ -1087,11 +1223,11 @@ }, "ethpm-types": { "hashes": [ - "sha256:644033ac91f9b1fc29ccf504755f770d04b0d5962230f87a0fee454bc4d91091", - "sha256:bc3c4054d9a921e559d73e6bd71adadda8d4de7f02ffdb296e3de0d0b123f781" + "sha256:3160a70c1d327547c2befba8b7b7cfe96ccbbd428221d80c29478dac4d2ca1cf", + "sha256:986d0cb1cc0e940f22101e2dacb7667c31c6c9bd0287467116b388bcd698c478" ], "markers": "python_version >= '3.9' and python_version < '4'", - "version": "==0.6.27" + "version": "==0.6.29" }, "evm-trace": { "hashes": [ @@ -1111,19 +1247,19 @@ }, "executing": { "hashes": [ - "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", - "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755" + "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", + "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017" ], "markers": "python_version >= '3.8'", - "version": "==2.2.0" + "version": "==2.2.1" }, "filelock": { "hashes": [ - "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58", - "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d" + "sha256:339b4732ffda5cd79b13f4e2711a31b0365ce445d95d243bb996273d072546a2", + "sha256:711e943b4ec6be42e1d4e6690b48dc175c822967466bb31c0c293f34334c13f4" ], - "markers": "python_version >= '3.9'", - "version": "==3.19.1" + "markers": "python_version >= '3.10'", + "version": "==3.20.0" }, "flake8": { "hashes": [ @@ -1136,113 +1272,139 @@ }, "frozenlist": { "hashes": [ - "sha256:04fb24d104f425da3540ed83cbfc31388a586a7696142004c577fa61c6298c3f", - "sha256:05579bf020096fe05a764f1f84cd104a12f78eaab68842d036772dc6d4870b4b", - "sha256:0aa7e176ebe115379b5b1c95b4096fb1c17cce0847402e227e712c27bdb5a949", - "sha256:1073557c941395fdfcfac13eb2456cb8aad89f9de27bae29fabca8e563b12615", - "sha256:1137b78384eebaf70560a36b7b229f752fb64d463d38d1304939984d5cb887b6", - "sha256:15900082e886edb37480335d9d518cec978afc69ccbc30bd18610b7c1b22a718", - "sha256:15a7eaba63983d22c54d255b854e8108e7e5f3e89f647fc854bd77a237e767df", - "sha256:1a85e345b4c43db8b842cab1feb41be5cc0b10a1830e6295b69d7310f99becaf", - "sha256:1e63344c4e929b1a01e29bc184bbb5fd82954869033765bfe8d65d09e336a677", - "sha256:1eaa7e9c6d15df825bf255649e05bd8a74b04a4d2baa1ae46d9c2d00b2ca2cb5", - "sha256:1ed8d2fa095aae4bdc7fdd80351009a48d286635edffee66bf865e37a9125c50", - "sha256:1f5906d3359300b8a9bb194239491122e6cf1444c2efb88865426f170c262cdb", - "sha256:21884e23cffabb157a9dd7e353779077bf5b8f9a58e9b262c6caad2ef5f80a56", - "sha256:24c34bea555fe42d9f928ba0a740c553088500377448febecaa82cc3e88aa1fa", - "sha256:284d233a8953d7b24f9159b8a3496fc1ddc00f4db99c324bd5fb5f22d8698ea7", - "sha256:290a172aae5a4c278c6da8a96222e6337744cd9c77313efe33d5670b9f65fc43", - "sha256:2e310d81923c2437ea8670467121cc3e9b0f76d3043cc1d2331d56c7fb7a3a8f", - "sha256:2ea2a7369eb76de2217a842f22087913cdf75f63cf1307b9024ab82dfb525938", - "sha256:32dc2e08c67d86d0969714dd484fd60ff08ff81d1a1e40a77dd34a387e6ebc0c", - "sha256:34a69a85e34ff37791e94542065c8416c1afbf820b68f720452f636d5fb990cd", - "sha256:376b6222d114e97eeec13d46c486facd41d4f43bab626b7c3f6a8b4e81a5192c", - "sha256:3789ebc19cb811163e70fe2bd354cea097254ce6e707ae42e56f45e31e96cb8e", - "sha256:387cbfdcde2f2353f19c2f66bbb52406d06ed77519ac7ee21be0232147c2592d", - "sha256:3a14027124ddb70dfcee5148979998066897e79f89f64b13328595c4bdf77c81", - "sha256:3bf8010d71d4507775f658e9823210b7427be36625b387221642725b515dcf3e", - "sha256:3d688126c242a6fabbd92e02633414d40f50bb6002fa4cf995a1d18051525657", - "sha256:3dabd5a8f84573c8d10d8859a50ea2dec01eea372031929871368c09fa103478", - "sha256:3dbf9952c4bb0e90e98aec1bd992b3318685005702656bc6f67c1a32b76787f2", - "sha256:3fbba20e662b9c2130dc771e332a99eff5da078b2b2648153a40669a6d0e36ca", - "sha256:400ddd24ab4e55014bba442d917203c73b2846391dd42ca5e38ff52bb18c3c5e", - "sha256:41be2964bd4b15bf575e5daee5a5ce7ed3115320fb3c2b71fca05582ffa4dc9e", - "sha256:426c7bc70e07cfebc178bc4c2bf2d861d720c4fff172181eeb4a4c41d4ca2ad3", - "sha256:43a82fce6769c70f2f5a06248b614a7d268080a9d20f7457ef10ecee5af82b63", - "sha256:45a6f2fdbd10e074e8814eb98b05292f27bad7d1883afbe009d96abdcf3bc898", - "sha256:46d84d49e00c9429238a7ce02dc0be8f6d7cd0cd405abd1bebdc991bf27c15bd", - "sha256:488d0a7d6a0008ca0db273c542098a0fa9e7dfaa7e57f70acef43f32b3f69dca", - "sha256:4a646531fa8d82c87fe4bb2e596f23173caec9185bfbca5d583b4ccfb95183e2", - "sha256:4e7e9652b3d367c7bd449a727dc79d5043f48b88d0cbfd4f9f1060cf2b414104", - "sha256:52109052b9791a3e6b5d1b65f4b909703984b770694d3eb64fad124c835d7cba", - "sha256:563b72efe5da92e02eb68c59cb37205457c977aa7a449ed1b37e6939e5c47c6a", - "sha256:5fc4df05a6591c7768459caba1b342d9ec23fa16195e744939ba5914596ae3e1", - "sha256:61d1a5baeaac6c0798ff6edfaeaa00e0e412d49946c53fae8d4b8e8b3566c4ae", - "sha256:69cac419ac6a6baad202c85aaf467b65ac860ac2e7f2ac1686dc40dbb52f6577", - "sha256:6a5c505156368e4ea6b53b5ac23c92d7edc864537ff911d2fb24c140bb175e60", - "sha256:6aeac207a759d0dedd2e40745575ae32ab30926ff4fa49b1635def65806fddee", - "sha256:6eb93efb8101ef39d32d50bce242c84bcbddb4f7e9febfa7b524532a239b4464", - "sha256:716a9973a2cc963160394f701964fe25012600f3d311f60c790400b00e568b61", - "sha256:72c1b0fe8fe451b34f12dce46445ddf14bd2a5bcad7e324987194dc8e3a74c86", - "sha256:73bd45e1488c40b63fe5a7df892baf9e2a4d4bb6409a2b3b78ac1c6236178e01", - "sha256:74739ba8e4e38221d2c5c03d90a7e542cb8ad681915f4ca8f68d04f810ee0a87", - "sha256:765bb588c86e47d0b68f23c1bee323d4b703218037765dcf3f25c838c6fecceb", - "sha256:79b2ffbba483f4ed36a0f236ccb85fbb16e670c9238313709638167670ba235f", - "sha256:7d536ee086b23fecc36c2073c371572374ff50ef4db515e4e503925361c24f71", - "sha256:7edf5c043c062462f09b6820de9854bf28cc6cc5b6714b383149745e287181a8", - "sha256:82d664628865abeb32d90ae497fb93df398a69bb3434463d172b80fc25b0dd7d", - "sha256:836b42f472a0e006e02499cef9352ce8097f33df43baaba3e0a28a964c26c7d2", - "sha256:8bd7eb96a675f18aa5c553eb7ddc24a43c8c18f22e1f9925528128c052cdbe00", - "sha256:8fc5d5cda37f62b262405cf9652cf0856839c4be8ee41be0afe8858f17f4c94b", - "sha256:912a7e8375a1c9a68325a902f3953191b7b292aa3c3fb0d71a216221deca460b", - "sha256:9537c2777167488d539bc5de2ad262efc44388230e5118868e172dd4a552b146", - "sha256:960d67d0611f4c87da7e2ae2eacf7ea81a5be967861e0c63cf205215afbfac59", - "sha256:974c5336e61d6e7eb1ea5b929cb645e882aadab0095c5a6974a111e6479f8878", - "sha256:99886d98e1643269760e5fe0df31e5ae7050788dd288947f7f007209b8c33f08", - "sha256:9a19e85cc503d958abe5218953df722748d87172f71b73cf3c9257a91b999890", - "sha256:9a5af342e34f7e97caf8c995864c7a396418ae2859cc6fdf1b1073020d516a7e", - "sha256:9b35db7ce1cd71d36ba24f80f0c9e7cff73a28d7a74e91fe83e23d27c7828750", - "sha256:9ccec739a99e4ccf664ea0775149f2749b8a6418eb5b8384b4dc0a7d15d304cb", - "sha256:a0fd1bad056a3600047fb9462cff4c5322cebc59ebf5d0a3725e0ee78955001d", - "sha256:a26f205c9ca5829cbf82bb2a84b5c36f7184c4316617d7ef1b271a56720d6b30", - "sha256:a47f2abb4e29b3a8d0b530f7c3598badc6b134562b1a5caee867f7c62fee51e3", - "sha256:a6f86e4193bb0e235ef6ce3dde5cbabed887e0b11f516ce8a0f4d3b33078ec2d", - "sha256:aa51e147a66b2d74de1e6e2cf5921890de6b0f4820b257465101d7f37b49fb5a", - "sha256:aa57daa5917f1738064f302bf2626281a1cb01920c32f711fbc7bc36111058a8", - "sha256:ac64b6478722eeb7a3313d494f8342ef3478dff539d17002f849101b212ef97c", - "sha256:acd03d224b0175f5a850edc104ac19040d35419eddad04e7cf2d5986d98427f1", - "sha256:af369aa35ee34f132fcfad5be45fbfcde0e3a5f6a1ec0712857f286b7d20cca9", - "sha256:b0d5ce521d1dd7d620198829b87ea002956e4319002ef0bc8d3e6d045cb4646e", - "sha256:b3950f11058310008a87757f3eee16a8e1ca97979833239439586857bc25482e", - "sha256:b8c05e4c8e5f36e5e088caa1bf78a687528f83c043706640a92cb76cd6999384", - "sha256:bcacfad3185a623fa11ea0e0634aac7b691aa925d50a440f39b458e41c561d98", - "sha256:bd8c4e58ad14b4fa7802b8be49d47993182fdd4023393899632c88fd8cd994eb", - "sha256:bfe2b675cf0aaa6d61bf8fbffd3c274b3c9b7b1623beb3809df8a81399a4a9c4", - "sha256:c0303e597eb5a5321b4de9c68e9845ac8f290d2ab3f3e2c864437d3c5a30cd65", - "sha256:c193dda2b6d49f4c4398962810fa7d7c78f032bf45572b3e04dd5249dff27e08", - "sha256:c70db4a0ab5ab20878432c40563573229a7ed9241506181bba12f6b7d0dc41cb", - "sha256:cbb65198a9132ebc334f237d7b0df163e4de83fb4f2bdfe46c1e654bdb0c5d43", - "sha256:cc4df77d638aa2ed703b878dd093725b72a824c3c546c076e8fdf276f78ee84a", - "sha256:ce48b2fece5aeb45265bb7a58259f45027db0abff478e3077e12b05b17fb9da7", - "sha256:cea3dbd15aea1341ea2de490574a4a37ca080b2ae24e4b4f4b51b9057b4c3630", - "sha256:d1a81c85417b914139e3a9b995d4a1c84559afc839a93cf2cb7f15e6e5f6ed2d", - "sha256:d50ac7627b3a1bd2dcef6f9da89a772694ec04d9a61b66cf87f7d9446b4a0c31", - "sha256:dab46c723eeb2c255a64f9dc05b8dd601fde66d6b19cdb82b2e09cc6ff8d8b5d", - "sha256:dfcebf56f703cb2e346315431699f00db126d158455e513bd14089d992101e44", - "sha256:e22b9a99741294b2571667c07d9f8cceec07cb92aae5ccda39ea1b6052ed4319", - "sha256:e2cdfaaec6a2f9327bf43c933c0319a7c429058e8537c508964a133dffee412e", - "sha256:e4389e06714cfa9d47ab87f784a7c5be91d3934cd6e9a7b85beef808297cc025", - "sha256:e793a9f01b3e8b5c0bc646fb59140ce0efcc580d22a3468d70766091beb81b35", - "sha256:ee80eeda5e2a4e660651370ebffd1286542b67e268aa1ac8d6dbe973120ef7ee", - "sha256:f2038310bc582f3d6a09b3816ab01737d60bf7b1ec70f5356b09e84fb7408ab1", - "sha256:f22dac33bb3ee8fe3e013aa7b91dc12f60d61d05b7fe32191ffa84c3aafe77bd", - "sha256:f34560fb1b4c3e30ba35fa9a13894ba39e5acfc5f60f57d8accde65f46cc5e74", - "sha256:f3f4410a0a601d349dd406b5713fec59b4cee7e71678d5b17edda7f4655a940b", - "sha256:f89f65d85774f1797239693cef07ad4c97fdd0639544bad9ac4b869782eb1981", - "sha256:fe2365ae915a1fafd982c146754e1de6ab3478def8a59c86e1f7242d794f97d5" + "sha256:0325024fe97f94c41c08872db482cf8ac4800d80e79222c6b0b7b162d5b13686", + "sha256:032efa2674356903cd0261c4317a561a6850f3ac864a63fc1583147fb05a79b0", + "sha256:03ae967b4e297f58f8c774c7eabcce57fe3c2434817d4385c50661845a058121", + "sha256:06be8f67f39c8b1dc671f5d83aaefd3358ae5cdcf8314552c57e7ed3e6475bdd", + "sha256:073f8bf8becba60aa931eb3bc420b217bb7d5b8f4750e6f8b3be7f3da85d38b7", + "sha256:07cdca25a91a4386d2e76ad992916a85038a9b97561bf7a3fd12d5d9ce31870c", + "sha256:09474e9831bc2b2199fad6da3c14c7b0fbdd377cce9d3d77131be28906cb7d84", + "sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d", + "sha256:0f96534f8bfebc1a394209427d0f8a63d343c9779cda6fc25e8e121b5fd8555b", + "sha256:102e6314ca4da683dca92e3b1355490fed5f313b768500084fbe6371fddfdb79", + "sha256:11847b53d722050808926e785df837353bd4d75f1d494377e59b23594d834967", + "sha256:119fb2a1bd47307e899c2fac7f28e85b9a543864df47aa7ec9d3c1b4545f096f", + "sha256:13d23a45c4cebade99340c4165bd90eeb4a56c6d8a9d8aa49568cac19a6d0dc4", + "sha256:154e55ec0655291b5dd1b8731c637ecdb50975a2ae70c606d100750a540082f7", + "sha256:168c0969a329b416119507ba30b9ea13688fafffac1b7822802537569a1cb0ef", + "sha256:17c883ab0ab67200b5f964d2b9ed6b00971917d5d8a92df149dc2c9779208ee9", + "sha256:1a7607e17ad33361677adcd1443edf6f5da0ce5e5377b798fba20fae194825f3", + "sha256:1a7fa382a4a223773ed64242dbe1c9c326ec09457e6b8428efb4118c685c3dfd", + "sha256:1aa77cb5697069af47472e39612976ed05343ff2e84a3dcf15437b232cbfd087", + "sha256:1b9290cf81e95e93fdf90548ce9d3c1211cf574b8e3f4b3b7cb0537cf2227068", + "sha256:20e63c9493d33ee48536600d1a5c95eefc870cd71e7ab037763d1fbb89cc51e7", + "sha256:21900c48ae04d13d416f0e1e0c4d81f7931f73a9dfa0b7a8746fb2fe7dd970ed", + "sha256:229bf37d2e4acdaf808fd3f06e854a4a7a3661e871b10dc1f8f1896a3b05f18b", + "sha256:2552f44204b744fba866e573be4c1f9048d6a324dfe14475103fd51613eb1d1f", + "sha256:27c6e8077956cf73eadd514be8fb04d77fc946a7fe9f7fe167648b0b9085cc25", + "sha256:28bd570e8e189d7f7b001966435f9dac6718324b5be2990ac496cf1ea9ddb7fe", + "sha256:294e487f9ec720bd8ffcebc99d575f7eff3568a08a253d1ee1a0378754b74143", + "sha256:29548f9b5b5e3460ce7378144c3010363d8035cea44bc0bf02d57f5a685e084e", + "sha256:2c5dcbbc55383e5883246d11fd179782a9d07a986c40f49abe89ddf865913930", + "sha256:2dc43a022e555de94c3b68a4ef0b11c4f747d12c024a520c7101709a2144fb37", + "sha256:2f05983daecab868a31e1da44462873306d3cbfd76d1f0b5b69c473d21dbb128", + "sha256:33139dc858c580ea50e7e60a1b0ea003efa1fd42e6ec7fdbad78fff65fad2fd2", + "sha256:332db6b2563333c5671fecacd085141b5800cb866be16d5e3eb15a2086476675", + "sha256:33f48f51a446114bc5d251fb2954ab0164d5be02ad3382abcbfe07e2531d650f", + "sha256:34187385b08f866104f0c0617404c8eb08165ab1272e884abc89c112e9c00746", + "sha256:342c97bf697ac5480c0a7ec73cd700ecfa5a8a40ac923bd035484616efecc2df", + "sha256:3462dd9475af2025c31cc61be6652dfa25cbfb56cbbf52f4ccfe029f38decaf8", + "sha256:39ecbc32f1390387d2aa4f5a995e465e9e2f79ba3adcac92d68e3e0afae6657c", + "sha256:3e0761f4d1a44f1d1a47996511752cf3dcec5bbdd9cc2b4fe595caf97754b7a0", + "sha256:3ede829ed8d842f6cd48fc7081d7a41001a56f1f38603f9d49bf3020d59a31ad", + "sha256:3ef2d026f16a2b1866e1d86fc4e1291e1ed8a387b2c333809419a2f8b3a77b82", + "sha256:405e8fe955c2280ce66428b3ca55e12b3c4e9c336fb2103a4937e891c69a4a29", + "sha256:42145cd2748ca39f32801dad54aeea10039da6f86e303659db90db1c4b614c8c", + "sha256:4314debad13beb564b708b4a496020e5306c7333fa9a3ab90374169a20ffab30", + "sha256:433403ae80709741ce34038da08511d4a77062aa924baf411ef73d1146e74faf", + "sha256:44389d135b3ff43ba8cc89ff7f51f5a0bb6b63d829c8300f79a2fe4fe61bcc62", + "sha256:48e6d3f4ec5c7273dfe83ff27c91083c6c9065af655dc2684d2c200c94308bb5", + "sha256:494a5952b1c597ba44e0e78113a7266e656b9794eec897b19ead706bd7074383", + "sha256:4970ece02dbc8c3a92fcc5228e36a3e933a01a999f7094ff7c23fbd2beeaa67c", + "sha256:4e0c11f2cc6717e0a741f84a527c52616140741cd812a50422f83dc31749fb52", + "sha256:50066c3997d0091c411a66e710f4e11752251e6d2d73d70d8d5d4c76442a199d", + "sha256:517279f58009d0b1f2e7c1b130b377a349405da3f7621ed6bfae50b10adf20c1", + "sha256:54b2077180eb7f83dd52c40b2750d0a9f175e06a42e3213ce047219de902717a", + "sha256:5500ef82073f599ac84d888e3a8c1f77ac831183244bfd7f11eaa0289fb30714", + "sha256:581ef5194c48035a7de2aefc72ac6539823bb71508189e5de01d60c9dcd5fa65", + "sha256:59a6a5876ca59d1b63af8cd5e7ffffb024c3dc1e9cf9301b21a2e76286505c95", + "sha256:5a3a935c3a4e89c733303a2d5a7c257ea44af3a56c8202df486b7f5de40f37e1", + "sha256:5c1c8e78426e59b3f8005e9b19f6ff46e5845895adbde20ece9218319eca6506", + "sha256:5d63a068f978fc69421fb0e6eb91a9603187527c86b7cd3f534a5b77a592b888", + "sha256:667c3777ca571e5dbeb76f331562ff98b957431df140b54c85fd4d52eea8d8f6", + "sha256:6da155091429aeba16851ecb10a9104a108bcd32f6c1642867eadaee401c1c41", + "sha256:6dc4126390929823e2d2d9dc79ab4046ed74680360fc5f38b585c12c66cdf459", + "sha256:7398c222d1d405e796970320036b1b563892b65809d9e5261487bb2c7f7b5c6a", + "sha256:74c51543498289c0c43656701be6b077f4b265868fa7f8a8859c197006efb608", + "sha256:776f352e8329135506a1d6bf16ac3f87bc25b28e765949282dcc627af36123aa", + "sha256:778a11b15673f6f1df23d9586f83c4846c471a8af693a22e066508b77d201ec8", + "sha256:78f7b9e5d6f2fdb88cdde9440dc147259b62b9d3b019924def9f6478be254ac1", + "sha256:799345ab092bee59f01a915620b5d014698547afd011e691a208637312db9186", + "sha256:7bf6cdf8e07c8151fba6fe85735441240ec7f619f935a5205953d58009aef8c6", + "sha256:8009897cdef112072f93a0efdce29cd819e717fd2f649ee3016efd3cd885a7ed", + "sha256:80f85f0a7cc86e7a54c46d99c9e1318ff01f4687c172ede30fd52d19d1da1c8e", + "sha256:8585e3bb2cdea02fc88ffa245069c36555557ad3609e83be0ec71f54fd4abb52", + "sha256:878be833caa6a3821caf85eb39c5ba92d28e85df26d57afb06b35b2efd937231", + "sha256:8a76ea0f0b9dfa06f254ee06053d93a600865b3274358ca48a352ce4f0798450", + "sha256:8b7b94a067d1c504ee0b16def57ad5738701e4ba10cec90529f13fa03c833496", + "sha256:8d92f1a84bb12d9e56f818b3a746f3efba93c1b63c8387a73dde655e1e42282a", + "sha256:908bd3f6439f2fef9e85031b59fd4f1297af54415fb60e4254a95f75b3cab3f3", + "sha256:92db2bf818d5cc8d9c1f1fc56b897662e24ea5adb36ad1f1d82875bd64e03c24", + "sha256:940d4a017dbfed9daf46a3b086e1d2167e7012ee297fef9e1c545c4d022f5178", + "sha256:957e7c38f250991e48a9a73e6423db1bb9dd14e722a10f6b8bb8e16a0f55f695", + "sha256:96153e77a591c8adc2ee805756c61f59fef4cf4073a9275ee86fe8cba41241f7", + "sha256:96f423a119f4777a4a056b66ce11527366a8bb92f54e541ade21f2374433f6d4", + "sha256:97260ff46b207a82a7567b581ab4190bd4dfa09f4db8a8b49d1a958f6aa4940e", + "sha256:974b28cf63cc99dfb2188d8d222bc6843656188164848c4f679e63dae4b0708e", + "sha256:9ff15928d62a0b80bb875655c39bf517938c7d589554cbd2669be42d97c2cb61", + "sha256:a6483e309ca809f1efd154b4d37dc6d9f61037d6c6a81c2dc7a15cb22c8c5dca", + "sha256:a88f062f072d1589b7b46e951698950e7da00442fc1cacbe17e19e025dc327ad", + "sha256:ac913f8403b36a2c8610bbfd25b8013488533e71e62b4b4adce9c86c8cea905b", + "sha256:adbeebaebae3526afc3c96fad434367cafbfd1b25d72369a9e5858453b1bb71a", + "sha256:b2a095d45c5d46e5e79ba1e5b9cb787f541a8dee0433836cea4b96a2c439dcd8", + "sha256:b3210649ee28062ea6099cfda39e147fa1bc039583c8ee4481cb7811e2448c51", + "sha256:b37f6d31b3dcea7deb5e9696e529a6aa4a898adc33db82da12e4c60a7c4d2011", + "sha256:b4dec9482a65c54a5044486847b8a66bf10c9cb4926d42927ec4e8fd5db7fed8", + "sha256:b4f3b365f31c6cd4af24545ca0a244a53688cad8834e32f56831c4923b50a103", + "sha256:b6db2185db9be0a04fecf2f241c70b63b1a242e2805be291855078f2b404dd6b", + "sha256:b9be22a69a014bc47e78072d0ecae716f5eb56c15238acca0f43d6eb8e4a5bda", + "sha256:bac9c42ba2ac65ddc115d930c78d24ab8d4f465fd3fc473cdedfccadb9429806", + "sha256:bf0a7e10b077bf5fb9380ad3ae8ce20ef919a6ad93b4552896419ac7e1d8e042", + "sha256:c23c3ff005322a6e16f71bf8692fcf4d5a304aaafe1e262c98c6d4adc7be863e", + "sha256:c4c800524c9cd9bac5166cd6f55285957fcfc907db323e193f2afcd4d9abd69b", + "sha256:c7366fe1418a6133d5aa824ee53d406550110984de7637d65a178010f759c6ef", + "sha256:c8d1634419f39ea6f5c427ea2f90ca85126b54b50837f31497f3bf38266e853d", + "sha256:c9a63152fe95756b85f31186bddf42e4c02c6321207fd6601a1c89ebac4fe567", + "sha256:cb89a7f2de3602cfed448095bab3f178399646ab7c61454315089787df07733a", + "sha256:cba69cb73723c3f329622e34bdbf5ce1f80c21c290ff04256cff1cd3c2036ed2", + "sha256:cee686f1f4cadeb2136007ddedd0aaf928ab95216e7691c63e50a8ec066336d0", + "sha256:cf253e0e1c3ceb4aaff6df637ce033ff6535fb8c70a764a8f46aafd3d6ab798e", + "sha256:d1eaff1d00c7751b7c6662e9c5ba6eb2c17a2306ba5e2a37f24ddf3cc953402b", + "sha256:d3bb933317c52d7ea5004a1c442eef86f426886fba134ef8cf4226ea6ee1821d", + "sha256:d4d3214a0f8394edfa3e303136d0575eece0745ff2b47bd2cb2e66dd92d4351a", + "sha256:d6a5df73acd3399d893dafc71663ad22534b5aa4f94e8a2fabfe856c3c1b6a52", + "sha256:d8b7138e5cd0647e4523d6685b0eac5d4be9a184ae9634492f25c6eb38c12a47", + "sha256:db1e72ede2d0d7ccb213f218df6a078a9c09a7de257c2fe8fcef16d5925230b1", + "sha256:e25ac20a2ef37e91c1b39938b591457666a0fa835c7783c3a8f33ea42870db94", + "sha256:e2de870d16a7a53901e41b64ffdf26f2fbb8917b3e6ebf398098d72c5b20bd7f", + "sha256:e4a3408834f65da56c83528fb52ce7911484f0d1eaf7b761fc66001db1646eff", + "sha256:eaa352d7047a31d87dafcacbabe89df0aa506abb5b1b85a2fb91bc3faa02d822", + "sha256:eab8145831a0d56ec9c4139b6c3e594c7a83c2c8be25d5bcf2d86136a532287a", + "sha256:ec3cc8c5d4084591b4237c0a272cc4f50a5b03396a47d9caaf76f5d7b38a4f11", + "sha256:edee74874ce20a373d62dc28b0b18b93f645633c2943fd90ee9d898550770581", + "sha256:eefdba20de0d938cec6a89bd4d70f346a03108a19b9df4248d3cf0d88f1b0f51", + "sha256:ef2b7b394f208233e471abc541cc6991f907ffd47dc72584acee3147899d6565", + "sha256:f21f00a91358803399890ab167098c131ec2ddd5f8f5fd5fe9c9f2c6fcd91e40", + "sha256:f4be2e3d8bc8aabd566f8d5b8ba7ecc09249d74ba3c9ed52e54dc23a293f0b92", + "sha256:f57fb59d9f385710aa7060e89410aeb5058b99e62f4d16b08b91986b9a2140c2", + "sha256:f6292f1de555ffcc675941d65fffffb0a5bcd992905015f85d0592201793e0e5", + "sha256:f833670942247a14eafbb675458b4e61c82e002a148f49e68257b79296e865c4", + "sha256:fa47e444b8ba08fffd1c18e8cdb9a75db1b6a27f17507522834ad13ed5922b93", + "sha256:fb30f9626572a76dfe4293c7194a09fb1fe93ba94c7d4f720dfae3b646b45027", + "sha256:fe3c58d2f5db5fbd18c2987cba06d51b0529f52bc3a6cdc33d3f4eab725104bd" ], "markers": "python_version >= '3.9'", - "version": "==1.7.0" + "version": "==1.8.0" }, "hexbytes": { "hashes": [ @@ -1254,118 +1416,128 @@ }, "identify": { "hashes": [ - "sha256:60381139b3ae39447482ecc406944190f690d4a2997f2584062089848361b33b", - "sha256:da8d6c828e773620e13bfa86ea601c5a5310ba4bcd65edf378198b56a1f9fb32" + "sha256:1181ef7608e00704db228516541eb83a88a9f94433a8c80bb9b5bd54b1d81757", + "sha256:e4f4864b96c6557ef2a1e1c951771838f4edc9df3a72ec7118b338801b11c7bf" ], "markers": "python_version >= '3.9'", - "version": "==2.6.13" + "version": "==2.6.15" }, "idna": { "hashes": [ - "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", - "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3" + "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", + "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902" ], - "markers": "python_version >= '3.6'", - "version": "==3.10" + "markers": "python_version >= '3.8'", + "version": "==3.11" }, "ijson": { "hashes": [ - "sha256:06b89960f5c721106394c7fba5760b3f67c515b8eb7d80f612388f5eca2f4621", - "sha256:0772638efa1f3b72b51736833404f1cbd2f5beeb9c1a3d392e7d385b9160cba7", - "sha256:0ab00d75d61613a125fbbb524551658b1ad6919a52271ca16563ca5bc2737bb1", - "sha256:0b1be1781792291e70d2e177acf564ec672a7907ba74f313583bdf39fe81f9b7", - "sha256:0b67727aaee55d43b2e82b6a866c3cbcb2b66a5e9894212190cbd8773d0d9857", - "sha256:0bed8bcb84d3468940f97869da323ba09ae3e6b950df11dea9b62e2b231ca1e3", - "sha256:0f79b2cd52bd220fff83b3ee4ef89b54fd897f57cc8564a6d8ab7ac669de3930", - "sha256:13fb6d5c35192c541421f3ee81239d91fc15a8d8f26c869250f941f4b346a86c", - "sha256:1504cec7fe04be2bb0cc33b50c9dd3f83f98c0540ad4991d4017373b7853cfe6", - "sha256:160b09273cb42019f1811469508b0a057d19f26434d44752bde6f281da6d3f32", - "sha256:17994696ec895d05e0cfa21b11c68c920c82634b4a3d8b8a1455d6fe9fdee8f7", - "sha256:1c28c7f604729be22aa453e604e9617b665fa0c24cd25f9f47a970e8130c571a", - "sha256:1eebd9b6c20eb1dffde0ae1f0fbb4aeacec2eb7b89adb5c7c0449fc9fd742760", - "sha256:2019ff4e6f354aa00c76c8591bd450899111c61f2354ad55cc127e2ce2492c44", - "sha256:26e7da0a3cd2a56a1fde1b34231867693f21c528b683856f6691e95f9f39caec", - "sha256:28b7196ff7b37c4897c547a28fa4876919696739fc91c1f347651c9736877c69", - "sha256:296bc824f4088f2af814aaf973b0435bc887ce3d9f517b1577cc4e7d1afb1cb7", - "sha256:2a753be681ac930740a4af9c93cfb4edc49a167faed48061ea650dc5b0f406f1", - "sha256:2d9ca52f5650d820a2e7aa672dea1c560f609e165337e5b3ed7cf56d696bf309", - "sha256:2dcb190227b09dd171bdcbfe4720fddd574933c66314818dfb3960c8a6246a77", - "sha256:2f2ff456adeb216603e25d7915f10584c1b958b6eafa60038d76d08fc8a5fb06", - "sha256:3c2691d2da42629522140f77b99587d6f5010440d58d36616f33bc7bdc830cc3", - "sha256:3d8a0d67f36e4fb97c61a724456ef0791504b16ce6f74917a31c2e92309bbeb9", - "sha256:3e3ddd46d16b8542c63b1b8af7006c758d4e21cc1b86122c15f8530fae773461", - "sha256:41dbb525666017ad856ac9b4f0f4b87d3e56b7dfde680d5f6d123556b22e2172", - "sha256:42ace5e940e0cf58c9de72f688d6829ddd815096d07927ee7e77df2648006365", - "sha256:4563e603e56f4451572d96b47311dffef5b933d825f3417881d4d3630c6edac2", - "sha256:494eeb8e87afef22fbb969a4cb81ac2c535f30406f334fb6136e9117b0bb5380", - "sha256:49bf8eac1c7b7913073865a859c215488461f7591b4fa6a33c14b51cb73659d0", - "sha256:4ab4bc2119b35c4363ea49f29563612237cae9413d2fbe54b223be098b97bc9e", - "sha256:54e989c35dba9cf163d532c14bcf0c260897d5f465643f0cd1fba9c908bed7ef", - "sha256:56679ee133470d0f1f598a8ad109d760fcfebeef4819531e29335aefb7e4cb1a", - "sha256:583c15ded42ba80104fa1d0fa0dfdd89bb47922f3bb893a931bb843aeb55a3f3", - "sha256:5be39a0df4cd3f02b304382ea8885391900ac62e95888af47525a287c50005e9", - "sha256:5d05bd8fa6a8adefb32bbf7b993d2a2f4507db08453dd1a444c281413a6d9685", - "sha256:5f74dcbad9d592c428d3ca3957f7115a42689ee7ee941458860900236ae9bb13", - "sha256:68c83161b052e9f5dc8191acbc862bb1e63f8a35344cb5cd0db1afd3afd487a6", - "sha256:6b3aac1d7a27e1e3bdec5bd0689afe55c34aa499baa06a80852eda31f1ffa6dc", - "sha256:71523f2b64cb856a820223e94d23e88369f193017ecc789bb4de198cc9d349eb", - "sha256:72e92de999977f4c6b660ffcf2b8d59604ccd531edcbfde05b642baf283e0de8", - "sha256:784ae654aa9851851e87f323e9429b20b58a5399f83e6a7e348e080f2892081f", - "sha256:7ca72ca12e9a1dd4252c97d952be34282907f263f7e28fcdff3a01b83981e837", - "sha256:80f50e0f5da4cd6b65e2d8ff38cb61b26559608a05dd3a3f9cfa6f19848e6f22", - "sha256:8100f9885eff1f38d35cef80ef759a1bbf5fc946349afa681bd7d0e681b7f1a0", - "sha256:8145f8f40617b6a8aa24e28559d0adc8b889e56a203725226a8a60fa3501073f", - "sha256:81603de95de1688958af65cd2294881a4790edae7de540b70c65c8253c5dc44a", - "sha256:8524be12c1773e1be466034cc49c1ecbe3d5b47bb86217bd2a57f73f970a6c19", - "sha256:8a990401dc7350c1739f42187823e68d2ef6964b55040c6e9f3a29461f9929e2", - "sha256:8bc731cf1c3282b021d3407a601a5a327613da9ad3c4cecb1123232623ae1826", - "sha256:8c75e82cec05d00ed3a4af5f4edf08f59d536ed1a86ac7e84044870872d82a33", - "sha256:8e6b44b6ec45d5b1a0ee9d97e0e65ab7f62258727004cbbe202bf5f198bc21f7", - "sha256:915a65e3f3c0eee2ea937bc62aaedb6c14cc1e8f0bb9f3f4fb5a9e2bbfa4b480", - "sha256:931c007bf6bb8330705429989b2deed6838c22b63358a330bf362b6e458ba0bf", - "sha256:940c8c5fd20fb89b56dde9194a4f1c7b779149f1ab26af6d8dc1da51a95d26dd", - "sha256:956b148f88259a80a9027ffbe2d91705fae0c004fbfba3e5a24028fbe72311a9", - "sha256:97b0a9b5a15e61dfb1f14921ea4e0dba39f3a650df6d8f444ddbc2b19b479ff1", - "sha256:9a0bb591cf250dd7e9dfab69d634745a7f3272d31cfe879f9156e0a081fd97ee", - "sha256:9c55f48181e11c597cd7146fb31edc8058391201ead69f8f40d2ecbb0b3e4fc6", - "sha256:9e369bf5a173ca51846c243002ad8025d32032532523b06510881ecc8723ee54", - "sha256:9e9602157a5b869d44b6896e64f502c712a312fcde044c2e586fccb85d3e316e", - "sha256:a07c47aed534e0ec198e6a2d4360b259d32ac654af59c015afc517ad7973b7fb", - "sha256:a9f84f5e2eea5c2d271c97221c382db005534294d1175ddd046a12369617c41c", - "sha256:abd5669f96f79d8a2dd5ae81cbd06770a4d42c435fd4a75c74ef28d9913b697d", - "sha256:ada421fd59fe2bfa4cfa64ba39aeba3f0753696cdcd4d50396a85f38b1d12b01", - "sha256:afbe9748707684b6c5adc295c4fdcf27765b300aec4d484e14a13dca4e5c0afa", - "sha256:b1e83660edb931a425b7ff662eb49db1f10d30ca6d4d350e5630edbed098bc01", - "sha256:b51e239e4cb537929796e840d349fc731fdc0d58b1a0683ce5465ad725321e0f", - "sha256:b5a05fd935cc28786b88c16976313086cd96414c6a3eb0a3822c47ab48b1793e", - "sha256:b674a97bd503ea21bc85103e06b6493b1b2a12da3372950f53e1c664566a33a4", - "sha256:b8a0a2c54f3becf76881188beefd98b484b1d3bd005769a740d5b433b089fa23", - "sha256:c0cd126c11835839bba8ac0baaba568f67d701fc4f717791cf37b10b74a2ebd7", - "sha256:c4554718c275a044c47eb3874f78f2c939f300215d9031e785a6711cc51b83fc", - "sha256:c45906ce2c1d3b62f15645476fc3a6ca279549127f01662a39ca5ed334a00cf9", - "sha256:cdc8c5ca0eec789ed99db29c68012dda05027af0860bb360afd28d825238d69d", - "sha256:ced19a83ab09afa16257a0b15bc1aa888dbc555cb754be09d375c7f8d41051f2", - "sha256:cfeca1aaa59d93fd0a3718cbe5f7ef0effff85cf837e0bceb71831a47f39cc14", - "sha256:d16eed737610ad5ad8989b5864fbe09c64133129734e840c29085bb0d497fb03", - "sha256:d7bcc3f7f21b0f703031ecd15209b1284ea51b2a329d66074b5261de3916c1eb", - "sha256:d823f8f321b4d8d5fa020d0a84f089fec5d52b7c0762430476d9f8bf95bbc1a9", - "sha256:e27e50f6dcdee648f704abc5d31b976cd2f90b4642ed447cf03296d138433d09", - "sha256:e3047bb994dabedf11de11076ed1147a307924b6e5e2df6784fb2599c4ad8c60", - "sha256:e8d96f88d75196a61c9d9443de2b72c2d4a7ba9456ff117b57ae3bba23a54256", - "sha256:ed05d43ec02be8ddb1ab59579761f6656b25d241a77fd74f4f0f7ec09074318a", - "sha256:eda4cfb1d49c6073a901735aaa62e39cb7ab47f3ad7bb184862562f776f1fa8a", - "sha256:f9a9d3bbc6d91c24a2524a189d2aca703cb5f7e8eb34ad0aff3c91702404a983" + "sha256:01767fcbd75a5fa5a626069787b41f04681216b798510d5f63bcf66884386368", + "sha256:043f9b7cf9cc744263a78175e769947733710d2412d25180df44b1086b23ebd5", + "sha256:04ac9ca54db20f82aeda6379b5f4f6112fdb150d09ebce04affeab98a17b4ed3", + "sha256:05807edc0bcbd222dc6ea32a2b897f0c81dc7f12c8580148bc82f6d7f5e7ec7b", + "sha256:0634b21188c67e5cf471cc1d30d193d19f521d89e2125ab1fb602aa8ae61e050", + "sha256:07f20ecd748602ac7f18c617637e53bd73ded7f3b22260bba3abe401a7fc284e", + "sha256:09127c06e5dec753feb9e4b8c5f6a23603d1cd672d098159a17e53a73b898eec", + "sha256:0b473112e72c0c506da425da3278367b6680f340ecc093084693a1e819d28435", + "sha256:0d3e82963096579d1385c06b2559570d7191e225664b7fa049617da838e1a4a4", + "sha256:103a0838061297d063bca81d724b0958b616f372bd893bbc278320152252c652", + "sha256:114ed248166ac06377e87a245a158d6b98019d2bdd3bb93995718e0bd996154f", + "sha256:11f13b73194ea2a5a8b4a2863f25b0b4624311f10db3a75747b510c4958179b0", + "sha256:1709171023ce82651b2f132575c2e6282e47f64ad67bd3260da476418d0e7895", + "sha256:17e45262a5ddef39894013fb1548ee7094e444c8389eb1a97f86708b19bea03e", + "sha256:226447e40ca9340a39ed07d68ea02ee14b52cb4fe649425b256c1f0073531c83", + "sha256:254cfb8c124af68327a0e7a49b50bbdacafd87c4690a3d62c96eb01020a685ef", + "sha256:27aa193d47ffc6bc4e45453896ad98fb089a367e8283b973f1fe5c0198b60b4e", + "sha256:2c88f0669d45d4b1aa017c9b68d378e7cd15d188dfb6f0209adc78b7f45590a7", + "sha256:2f8b9ffa2c2dfe3289da9aec4e5ab52684fa2b2da2c853c7891b360ec46fba07", + "sha256:339d49f6c5d24051c85d9226be96d2d56e633cb8b7d09dd8099de8d8b51a97e2", + "sha256:3505dff18bdeb8b171eb28af6df34857e2be80dc01e2e3b624e77215ad58897f", + "sha256:35aaa979da875fa92bea5dc5969b1541b4912b165091761785459a43f0c20946", + "sha256:35eb2760a42fd9461358b4be131287587b49ff504fc37fa3014dca6c27c343f4", + "sha256:3752dd6f51ef58a71799de745649deff293e959700f1b7f5b1989618da366f24", + "sha256:3ed19b1e4349240773a8ce4a4bfa450892d4a57949c02c515cd6be5a46b7696a", + "sha256:40007c977e230e04118b27322f25a72ae342a3d61464b2057fcd9b21eeb7427a", + "sha256:43059ae0d657b11c5ddb11d149bc400c44f9e514fb8663057e9b2ea4d8d44c1f", + "sha256:432fb60ffb952926f9438e0539011e2dfcd108f8426ee826ccc6173308c3ff2c", + "sha256:435270a4b75667305f6df3226e5224e83cd6906022d7fdcc9df05caae725f796", + "sha256:45a0b1c833ed2620eaf8da958f06ac8351c59e5e470e078400d23814670ed708", + "sha256:461acf4320219459dabe5ed90a45cb86c9ba8cc6d6db9dad0d9427d42f57794c", + "sha256:461ce4e87a21a261b60c0a68a2ad17c7dd214f0b90a0bec7e559a66b6ae3bd7e", + "sha256:47352563e8c594360bacee2e0753e97025f0861234722d02faace62b1b6d2b2a", + "sha256:4810546e66128af51fd4a0c9a640e84e8508e9c15c4f247d8a3e3253b20e1465", + "sha256:4827d9874a6a81625412c59f7ca979a84d01f7f6bfb3c6d4dc4c46d0382b14e0", + "sha256:4e39bfdc36b0b460ef15a06550a6a385c64c81f7ac205ccff39bd45147918912", + "sha256:54a0e3e05d9a0c95ecba73d9579f146cf6d5c5874116c849dba2d39a5f30380e", + "sha256:55f7f656b5986326c978cbb3a9eea9e33f3ef6ecc4535b38f1d452c731da39ab", + "sha256:56169e298c5a2e7196aaa55da78ddc2415876a74fe6304f81b1eb0d3273346f7", + "sha256:56b3089dc28c12492d92cc4896d2be585a89ecae34e25d08c1df88f21815cb50", + "sha256:57db77f4ea3eca09f519f627d9f9c76eb862b30edef5d899f031feeed94f05a1", + "sha256:5a48b9486242d1295abe7fd0fbb6308867da5ca3f69b55c77922a93c2b6847aa", + "sha256:5f0a72b1e3c0f78551670c12b2fdc1bf05f2796254d9c2055ba319bec2216020", + "sha256:61ab0b8c5bf707201dc67e02c116f4b6545c4afd7feb2264b989d242d9c4348a", + "sha256:636b6eca96c6c43c04629c6b37fad0181662eaacf9877c71c698485637f752f9", + "sha256:6458bd8e679cdff459a0a5e555b107c3bbacb1f382da3fe0f40e392871eb518d", + "sha256:659acb2843433e080c271ecedf7d19c71adde1ee5274fc7faa2fec0a793f9f1c", + "sha256:6793c29a5728e7751a7df01be58ba7da9b9690c12bf79d32094c70a908fa02b9", + "sha256:69718ed41710dfcaa7564b0af42abc05875d4f7aaa24627c808867ef32634bc7", + "sha256:7206afcb396aaef66c2b066997b4e9d9042c4b7d777f4d994e9cec6d322c2fe6", + "sha256:742c211b004ab51ccad2b301525d8a6eb2cf68a5fb82d78836f3a351eec44d4e", + "sha256:7809ec8c8f40228edaaa089f33e811dff4c5b8509702652870d3f286c9682e27", + "sha256:8311f48db6a33116db5c81682f08b6e2405501a4b4e460193ae69fec3cd1f87a", + "sha256:83fc738d81c9ea686b452996110b8a6678296c481e0546857db24785bff8da92", + "sha256:890cf6610c9554efcb9765a93e368efeb5bb6135f59ce0828d92eaefff07fde5", + "sha256:8f904a405b58a04b6ef0425f1babbc5c65feb66b0a4cc7f214d4ad7de106f77d", + "sha256:91c61a3e63e04da648737e6b4abd537df1b46fb8cdf3219b072e790bb3c1a46b", + "sha256:97f5ef3d839fc24b0ad47e8b31b4751ae72c5d83606e3ee4c92bb25965c03a4f", + "sha256:9aa02dc70bb245670a6ca7fba737b992aeeb4895360980622f7e568dbf23e41e", + "sha256:9c0886234d1fae15cf4581a430bdba03d79251c1ab3b07e30aa31b13ef28d01c", + "sha256:a07dcc1a8a1ddd76131a7c7528cbd12951c2e34eb3c3d63697b905069a2d65b1", + "sha256:a0fedf09c0f6ffa2a99e7e7fd9c5f3caf74e655c1ee015a0797383e99382ebc3", + "sha256:a2c873742e9f7e21378516217d81d6fa11d34bae860ed364832c00ab1dbf37ed", + "sha256:a39d5d36067604b26b78de70b8951c90e9272450642661fe531a8f7a6936a7fa", + "sha256:a5269af16f715855d9864937f9dd5c348ca1ac49cee6a2c7a1b7091c159e874f", + "sha256:a56b6674d7feec0401c91f86c376f4e3d8ff8129128a8ad21ca43ec0b1242f79", + "sha256:a603d7474bf35e7b3a8e49c8dabfc4751841931301adff3f3318171c4e407f32", + "sha256:ab3be841b8c430c1883b8c0775eb551f21b5500c102c7ee828afa35ddd701bdd", + "sha256:add9242f886eae844a7410b84aee2bbb8bdc83c624f227cb1fdb2d0476a96cb1", + "sha256:b005ce84e82f28b00bf777a464833465dfe3efa43a0a26c77b5ac40723e1a728", + "sha256:b200df83c901f5bfa416d069ac71077aa1608f854a4c50df1b84ced560e9c9ec", + "sha256:b2a81aee91633868f5b40280e2523f7c5392e920a5082f47c5e991e516b483f6", + "sha256:b39dbf87071f23a23c8077eea2ae7cfeeca9ff9ffec722dfc8b5f352e4dd729c", + "sha256:b55e49045f4c8031f3673f56662fd828dc9e8d65bd3b03a9420dda0d370e64ba", + "sha256:b607a500fca26101be47d2baf7cddb457b819ab60a75ce51ed1092a40da8b2f9", + "sha256:b982a3597b0439ce9c8f4cfc929d86c6ed43907908be1e8463a34dc35fe5b258", + "sha256:ba3478ff0bb49d7ba88783f491a99b6e3fa929c930ab062d2bb7837e6a38fe88", + "sha256:c117321cfa7b749cc1213f9b4c80dc958f0a206df98ec038ae4bcbbdb8463a15", + "sha256:c8dd327da225887194fe8b93f2b3c9c256353e14a6b9eefc940ed17fde38f5b8", + "sha256:ccddb2894eb7af162ba43b9475ac5825d15d568832f82eb8783036e5d2aebd42", + "sha256:cf24a48a1c3ca9d44a04feb59ccefeb9aa52bb49b9cb70ad30518c25cce74bb7", + "sha256:cf4a34c2cfe852aee75c89c05b0a4531c49dc0be27eeed221afd6fbf9c3e149c", + "sha256:d14427d366f95f21adcb97d0ed1f6d30f6fdc04d0aa1e4de839152c50c2b8d65", + "sha256:d4d4afec780881edb2a0d2dd40b1cdbe246e630022d5192f266172a0307986a7", + "sha256:da6a21b88cbf5ecbc53371283988d22c9643aa71ae2873bbeaefd2dea3b6160b", + "sha256:deda4cfcaafa72ca3fa845350045b1d0fef9364ec9f413241bb46988afbe6ee6", + "sha256:e15833dcf6f6d188fdc624a31cd0520c3ba21b6855dc304bc7c1a8aeca02d4ac", + "sha256:eb5e73028f6e63d27b3d286069fe350ed80a4ccc493b022b590fea4bb086710d", + "sha256:ec5bb1520cb212ebead7dba048bb9b70552c3440584f83b01b0abc96862e2a09", + "sha256:eeb9540f0b1a575cbb5968166706946458f98c16e7accc6f2fe71efa29864241", + "sha256:f82ca7abfb3ef3cf2194c71dad634572bcccd62a5dd466649f78fe73d492c860", + "sha256:f932969fc1fd4449ca141cf5f47ff357656a154a361f28d9ebca0badc5b02297", + "sha256:fe9c84c9b1c8798afa407be1cea1603401d99bfc7c34497e19f4f5e5ddc9b441", + "sha256:fecae19b5187d92900c73debb3a979b0b3290a53f85df1f8f3c5ba7d1e9fb9cb", + "sha256:ffb21203736b08fe27cb30df6a4f802fafb9ef7646c5ff7ef79569b63ea76c57" ], "markers": "python_version >= '3.9'", - "version": "==3.4.0" + "version": "==3.4.0.post0" }, "iniconfig": { "hashes": [ - "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", - "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" + "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", + "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12" ], - "markers": "python_version >= '3.8'", - "version": "==2.1.0" + "markers": "python_version >= '3.10'", + "version": "==2.3.0" }, "ipython": { "hashes": [ @@ -1377,12 +1549,12 @@ }, "isort": { "hashes": [ - "sha256:1cb5df28dfbc742e490c5e41bad6da41b805b0a8be7bc93cd0fb2a8a890ac450", - "sha256:2dc5d7f65c9678d94c88dfc29161a320eec67328bc97aad576874cb4be1e9615" + "sha256:1bcabac8bc3c36c7fb7b98a76c8abb18e0f841a3ba81decac7691008592499c1", + "sha256:5513527951aadb3ac4292a41a16cbc50dd1642432f5e8c20057d414bdafb4187" ], "index": "pypi", - "markers": "python_full_version >= '3.9.0'", - "version": "==6.0.1" + "markers": "python_full_version >= '3.10.0'", + "version": "==7.0.0" }, "jedi": { "hashes": [ @@ -1402,11 +1574,11 @@ }, "jsonschema-specifications": { "hashes": [ - "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", - "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608" + "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", + "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d" ], "markers": "python_version >= '3.9'", - "version": "==2025.4.1" + "version": "==2025.9.1" }, "lazyasd": { "hashes": [ @@ -1511,11 +1683,11 @@ }, "matplotlib-inline": { "hashes": [ - "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", - "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca" + "sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76", + "sha256:e1ee949c340d771fc39e241ea75683deb94762c8fa5f2927ec57c83c4dffa9fe" ], - "markers": "python_version >= '3.8'", - "version": "==0.1.7" + "markers": "python_version >= '3.9'", + "version": "==0.2.1" }, "mccabe": { "hashes": [ @@ -1583,119 +1755,155 @@ }, "multidict": { "hashes": [ - "sha256:01368e3c94032ba6ca0b78e7ccb099643466cf24f8dc8eefcfdc0571d56e58f9", - "sha256:01d0959807a451fe9fdd4da3e139cb5b77f7328baf2140feeaf233e1d777b729", - "sha256:024ce601f92d780ca1617ad4be5ac15b501cc2414970ffa2bb2bbc2bd5a68fa5", - "sha256:047d9425860a8c9544fed1b9584f0c8bcd31bcde9568b047c5e567a1025ecd6e", - "sha256:0a2088c126b6f72db6c9212ad827d0ba088c01d951cee25e758c450da732c138", - "sha256:0af5f9dee472371e36d6ae38bde009bd8ce65ac7335f55dcc240379d7bed1495", - "sha256:0b2e886624be5773e69cf32bcb8534aecdeb38943520b240fed3d5596a430f2f", - "sha256:0c5cbac6b55ad69cb6aa17ee9343dfbba903118fd530348c330211dc7aa756d1", - "sha256:0e0558693063c75f3d952abf645c78f3c5dfdd825a41d8c4d8156fc0b0da6e7e", - "sha256:0f37bed7319b848097085d7d48116f545985db988e2256b2e6f00563a3416ee6", - "sha256:0ffb87be160942d56d7b87b0fdf098e81ed565add09eaa1294268c7f3caac4c8", - "sha256:105245cc6b76f51e408451a844a54e6823bbd5a490ebfe5bdfc79798511ceded", - "sha256:10a68a9191f284fe9d501fef4efe93226e74df92ce7a24e301371293bd4918ae", - "sha256:14616a30fe6d0a48d0a48d1a633ab3b8bec4cf293aac65f32ed116f620adfd69", - "sha256:14754eb72feaa1e8ae528468f24250dd997b8e2188c3d2f593f9eba259e4b364", - "sha256:163c7ea522ea9365a8a57832dea7618e6cbdc3cd75f8c627663587459a4e328f", - "sha256:17d2cbbfa6ff20821396b25890f155f40c986f9cfbce5667759696d83504954f", - "sha256:190766dac95aab54cae5b152a56520fd99298f32a1266d66d27fdd1b5ac00f4e", - "sha256:1a0ccbfe93ca114c5d65a2471d52d8829e56d467c97b0e341cf5ee45410033b3", - "sha256:21f216669109e02ef3e2415ede07f4f8987f00de8cdfa0cc0b3440d42534f9f0", - "sha256:22e38b2bc176c5eb9c0a0e379f9d188ae4cd8b28c0f53b52bce7ab0a9e534657", - "sha256:27d8f8e125c07cb954e54d75d04905a9bba8a439c1d84aca94949d4d03d8601c", - "sha256:2a4c6875c37aae9794308ec43e3530e4aa0d36579ce38d89979bbf89582002bb", - "sha256:34d8f2a5ffdceab9dcd97c7a016deb2308531d5f0fced2bb0c9e1df45b3363d7", - "sha256:350f6b0fe1ced61e778037fdc7613f4051c8baf64b1ee19371b42a3acdb016a0", - "sha256:37b7187197da6af3ee0b044dbc9625afd0c885f2800815b228a0e70f9a7f473d", - "sha256:38a0956dd92d918ad5feff3db8fcb4a5eb7dba114da917e1a88475619781b57b", - "sha256:3ba5aaf600edaf2a868a391779f7a85d93bed147854925f34edd24cc70a3e141", - "sha256:3bb0eae408fa1996d87247ca0d6a57b7fc1dcf83e8a5c47ab82c558c250d4adf", - "sha256:3f8e2384cb83ebd23fd07e9eada8ba64afc4c759cd94817433ab8c81ee4b403f", - "sha256:40cd05eaeb39e2bc8939451f033e57feaa2ac99e07dbca8afe2be450a4a3b6cf", - "sha256:43868297a5759a845fa3a483fb4392973a95fb1de891605a3728130c52b8f40f", - "sha256:452ff5da78d4720d7516a3a2abd804957532dd69296cb77319c193e3ffb87e24", - "sha256:467fe64138cfac771f0e949b938c2e1ada2b5af22f39692aa9258715e9ea613a", - "sha256:49517449b58d043023720aa58e62b2f74ce9b28f740a0b5d33971149553d72aa", - "sha256:497a2954adc25c08daff36f795077f63ad33e13f19bfff7736e72c785391534f", - "sha256:4a1fb393a2c9d202cb766c76208bd7945bc194eba8ac920ce98c6e458f0b524b", - "sha256:4bb7627fd7a968f41905a4d6343b0d63244a0623f006e9ed989fa2b78f4438a0", - "sha256:4d09384e75788861e046330308e7af54dd306aaf20eb760eb1d0de26b2bea2cb", - "sha256:4fefd4a815e362d4f011919d97d7b4a1e566f1dde83dc4ad8cfb5b41de1df68d", - "sha256:52e3c8d43cdfff587ceedce9deb25e6ae77daba560b626e97a56ddcad3756879", - "sha256:55624b3f321d84c403cb7d8e6e982f41ae233d85f85db54ba6286f7295dc8a9c", - "sha256:56c6b3652f945c9bc3ac6c8178cd93132b8d82dd581fcbc3a00676c51302bc1a", - "sha256:580b643b7fd2c295d83cad90d78419081f53fd532d1f1eb67ceb7060f61cff0d", - "sha256:59e8d40ab1f5a8597abcef00d04845155a5693b5da00d2c93dbe88f2050f2812", - "sha256:5df8afd26f162da59e218ac0eefaa01b01b2e6cd606cffa46608f699539246da", - "sha256:630f70c32b8066ddfd920350bc236225814ad94dfa493fe1910ee17fe4365cbb", - "sha256:66247d72ed62d5dd29752ffc1d3b88f135c6a8de8b5f63b7c14e973ef5bda19e", - "sha256:6865f6d3b7900ae020b495d599fcf3765653bc927951c1abb959017f81ae8287", - "sha256:6bf2f10f70acc7a2446965ffbc726e5fc0b272c97a90b485857e5c70022213eb", - "sha256:6c84378acd4f37d1b507dfa0d459b449e2321b3ba5f2338f9b085cf7a7ba95eb", - "sha256:6d46a180acdf6e87cc41dc15d8f5c2986e1e8739dc25dbb7dac826731ef381a4", - "sha256:756989334015e3335d087a27331659820d53ba432befdef6a718398b0a8493ad", - "sha256:75aa52fba2d96bf972e85451b99d8e19cc37ce26fd016f6d4aa60da9ab2b005f", - "sha256:7dd57515bebffd8ebd714d101d4c434063322e4fe24042e90ced41f18b6d3395", - "sha256:7f683a551e92bdb7fac545b9c6f9fa2aebdeefa61d607510b3533286fcab67f5", - "sha256:87a32d20759dc52a9e850fe1061b6e41ab28e2998d44168a8a341b99ded1dba0", - "sha256:8c2fcb12136530ed19572bbba61b407f655e3953ba669b96a35036a11a485793", - "sha256:8c91cdb30809a96d9ecf442ec9bc45e8cfaa0f7f8bdf534e082c2443a196727e", - "sha256:8c9854df0eaa610a23494c32a6f44a3a550fb398b6b51a56e8c6b9b3689578db", - "sha256:8e42332cf8276bb7645d310cdecca93a16920256a5b01bebf747365f86a1675b", - "sha256:8fe323540c255db0bffee79ad7f048c909f2ab0edb87a597e1c17da6a54e493c", - "sha256:967af5f238ebc2eb1da4e77af5492219fbd9b4b812347da39a7b5f5c72c0fa45", - "sha256:9a950b7cf54099c1209f455ac5970b1ea81410f2af60ed9eb3c3f14f0bfcf987", - "sha256:a1b20a9d56b2d81e2ff52ecc0670d583eaabaa55f402e8d16dd062373dbbe796", - "sha256:a506a77ddee1efcca81ecbeae27ade3e09cdf21a8ae854d766c2bb4f14053f92", - "sha256:a59c63061f1a07b861c004e53869eb1211ffd1a4acbca330e3322efa6dd02978", - "sha256:a650629970fa21ac1fb06ba25dabfc5b8a2054fcbf6ae97c758aa956b8dba802", - "sha256:a693fc5ed9bdd1c9e898013e0da4dcc640de7963a371c0bd458e50e046bf6438", - "sha256:aaea28ba20a9026dfa77f4b80369e51cb767c61e33a2d4043399c67bd95fb7c6", - "sha256:ad8850921d3a8d8ff6fbef790e773cecfc260bbfa0566998980d3fa8f520bc4a", - "sha256:ad887a8250eb47d3ab083d2f98db7f48098d13d42eb7a3b67d8a5c795f224ace", - "sha256:ae9408439537c5afdca05edd128a63f56a62680f4b3c234301055d7a2000220f", - "sha256:af7618b591bae552b40dbb6f93f5518328a949dac626ee75927bba1ecdeea9f4", - "sha256:b6819f83aef06f560cb15482d619d0e623ce9bf155115150a85ab11b8342a665", - "sha256:b8aa6f0bd8125ddd04a6593437bad6a7e70f300ff4180a531654aa2ab3f6d58f", - "sha256:b8eb3025f17b0a4c3cd08cda49acf312a19ad6e8a4edd9dbd591e6506d999402", - "sha256:b95494daf857602eccf4c18ca33337dd2be705bccdb6dddbfc9d513e6addb9d9", - "sha256:b9e5853bbd7264baca42ffc53391b490d65fe62849bf2c690fa3f6273dbcd0cb", - "sha256:bbc14f0365534d35a06970d6a83478b249752e922d662dc24d489af1aa0d1be7", - "sha256:be5bf4b3224948032a845d12ab0f69f208293742df96dc14c4ff9b09e508fc17", - "sha256:c5c97aa666cf70e667dfa5af945424ba1329af5dd988a437efeb3a09430389fb", - "sha256:c7a0e9b561e6460484318a7612e725df1145d46b0ef57c6b9866441bf6e27e0c", - "sha256:caebafea30ed049c57c673d0b36238b1748683be2593965614d7b0e99125c877", - "sha256:cbbc54e58b34c3bae389ef00046be0961f30fef7cb0dd9c7756aee376a4f7683", - "sha256:cc356250cffd6e78416cf5b40dc6a74f1edf3be8e834cf8862d9ed5265cf9b0e", - "sha256:ce9a40fbe52e57e7edf20113a4eaddfacac0561a0879734e636aa6d4bb5e3fb0", - "sha256:d191de6cbab2aff5de6c5723101705fd044b3e4c7cfd587a1929b5028b9714b3", - "sha256:d24f351e4d759f5054b641c81e8291e5d122af0fca5c72454ff77f7cbe492de8", - "sha256:d2d4e4787672911b48350df02ed3fa3fffdc2f2e8ca06dd6afdf34189b76a9dd", - "sha256:d8c112f7a90d8ca5d20213aa41eac690bb50a76da153e3afb3886418e61cb22e", - "sha256:d9890d68c45d1aeac5178ded1d1cccf3bc8d7accf1f976f79bf63099fb16e4bd", - "sha256:dadf95aa862714ea468a49ad1e09fe00fcc9ec67d122f6596a8d40caf6cec7d0", - "sha256:db6a3810eec08280a172a6cd541ff4a5f6a97b161d93ec94e6c4018917deb6b7", - "sha256:db9801fe021f59a5b375ab778973127ca0ac52429a26e2fd86aa9508f4d26eb7", - "sha256:e167bf899c3d724f9662ef00b4f7fef87a19c22b2fead198a6f68b263618df52", - "sha256:e1b93790ed0bc26feb72e2f08299691ceb6da5e9e14a0d13cc74f1869af327a0", - "sha256:e5b1413361cef15340ab9dc61523e653d25723e82d488ef7d60a12878227ed50", - "sha256:ecab51ad2462197a4c000b6d5701fc8585b80eecb90583635d7e327b7b6923eb", - "sha256:ed3b94c5e362a8a84d69642dbeac615452e8af9b8eb825b7bc9f31a53a1051e2", - "sha256:ed8358ae7d94ffb7c397cecb62cbac9578a83ecefc1eba27b9090ee910e2efb6", - "sha256:edfdcae97cdc5d1a89477c436b61f472c4d40971774ac4729c613b4b133163cb", - "sha256:ee25f82f53262f9ac93bd7e58e47ea1bdcc3393cef815847e397cba17e284210", - "sha256:f3be27440f7644ab9a13a6fc86f09cdd90b347c3c5e30c6d6d860de822d7cb53", - "sha256:f46a6e8597f9bd71b31cc708195d42b634c8527fecbcf93febf1052cacc1f16e", - "sha256:f6eb37d511bfae9e13e82cb4d1af36b91150466f24d9b2b8a9785816deb16605", - "sha256:f8d4916a81697faec6cb724a273bd5457e4c6c43d82b29f9dc02c5542fd21fc9", - "sha256:f93b2b2279883d1d0a9e1bd01f312d6fc315c5e4c1f09e112e4736e2f650bc4e", - "sha256:f9867e55590e0855bcec60d4f9a092b69476db64573c9fe17e92b0c50614c16a", - "sha256:f996b87b420995a9174b2a7c1a8daf7db4750be6848b03eb5e639674f7963773" + "sha256:03ca744319864e92721195fa28c7a3b2bc7b686246b35e4078c1e4d0eb5466d3", + "sha256:040f393368e63fb0f3330e70c26bfd336656bed925e5cbe17c9da839a6ab13ec", + "sha256:05047ada7a2fde2631a0ed706f1fd68b169a681dfe5e4cf0f8e4cb6618bbc2cd", + "sha256:0591b48acf279821a579282444814a2d8d0af624ae0bc600aa4d1b920b6e924b", + "sha256:07f5594ac6d084cbb5de2df218d78baf55ef150b91f0ff8a21cc7a2e3a5a58eb", + "sha256:08325c9e5367aa379a3496aa9a022fe8837ff22e00b94db256d3a1378c76ab32", + "sha256:08d4379f9744d8f78d98c8673c06e202ffa88296f009c71bbafe8a6bf847d01f", + "sha256:0934f3843a1860dd465d38895c17fce1f1cb37295149ab05cd1b9a03afacb2a7", + "sha256:096f52730c3fb8ed419db2d44391932b63891b2c5ed14850a7e215c0ba9ade36", + "sha256:09929cab6fcb68122776d575e03c6cc64ee0b8fca48d17e135474b042ce515cd", + "sha256:0a13fb8e748dfc94749f622de065dd5c1def7e0d2216dba72b1d8069a389c6ff", + "sha256:0db4956f82723cc1c270de9c6e799b4c341d327762ec78ef82bb962f79cc07d8", + "sha256:123e2a72e20537add2f33a79e605f6191fba2afda4cbb876e35c1a7074298a7d", + "sha256:14c9e076eede3b54c636f8ce1c9c252b5f057c62131211f0ceeec273810c9721", + "sha256:171b73bd4ee683d307599b66793ac80981b06f069b62eea1c9e29c9241aa66b0", + "sha256:18706cc31dbf402a7945916dd5cddf160251b6dab8a2c5f3d6d5a55949f676b3", + "sha256:19a1d55338ec1be74ef62440ca9e04a2f001a04d0cc49a4983dc320ff0f3212d", + "sha256:2049be98fb57a31b4ccf870bf377af2504d4ae35646a19037ec271e4c07998aa", + "sha256:2090d3718829d1e484706a2f525e50c892237b2bf9b17a79b059cb98cddc2f10", + "sha256:2397ab4daaf2698eb51a76721e98db21ce4f52339e535725de03ea962b5a3202", + "sha256:23bfeee5316266e5ee2d625df2d2c602b829435fc3a235c2ba2131495706e4a0", + "sha256:27e0b36c2d388dc7b6ced3406671b401e84ad7eb0656b8f3a2f46ed0ce483718", + "sha256:28b37063541b897fd6a318007373930a75ca6d6ac7c940dbe14731ffdd8d498e", + "sha256:295a92a76188917c7f99cda95858c822f9e4aae5824246bba9b6b44004ddd0a6", + "sha256:29fe6740ebccba4175af1b9b87bf553e9c15cd5868ee967e010efcf94e4fd0f1", + "sha256:2a7baa46a22e77f0988e3b23d4ede5513ebec1929e34ee9495be535662c0dfe2", + "sha256:2d2cfeec3f6f45651b3d408c4acec0ebf3daa9bc8a112a084206f5db5d05b754", + "sha256:2f67396ec0310764b9222a1728ced1ab638f61aadc6226f17a71dd9324f9a99c", + "sha256:30d193c6cc6d559db42b6bcec8a5d395d34d60c9877a0b71ecd7c204fcf15390", + "sha256:31bae522710064b5cbeddaf2e9f32b1abab70ac6ac91d42572502299e9953128", + "sha256:329aa225b085b6f004a4955271a7ba9f1087e39dcb7e65f6284a988264a63912", + "sha256:363eb68a0a59bd2303216d2346e6c441ba10d36d1f9969fcb6f1ba700de7bb5c", + "sha256:394fc5c42a333c9ffc3e421a4c85e08580d990e08b99f6bf35b4132114c5dcb3", + "sha256:3996b50c3237c4aec17459217c1e7bbdead9a22a0fcd3c365564fbd16439dde6", + "sha256:39f1719f57adbb767ef592a50ae5ebb794220d1188f9ca93de471336401c34d2", + "sha256:3b29b980d0ddbecb736735ee5bef69bb2ddca56eff603c86f3f29a1128299b4f", + "sha256:3ba3ef510467abb0667421a286dc906e30eb08569365f5cdb131d7aff7c2dd84", + "sha256:3bab1e4aff7adaa34410f93b1f8e57c4b36b9af0426a76003f441ee1d3c7e842", + "sha256:3d7b6ccce016e29df4b7ca819659f516f0bc7a4b3efa3bb2012ba06431b044f9", + "sha256:3da4fb467498df97e986af166b12d01f05d2e04f978a9c1c680ea1988e0bc4b6", + "sha256:3e56d780c238f9e1ae66a22d2adf8d16f485381878250db8d496623cd38b22bd", + "sha256:3e8bfdd0e487acf992407a140d2589fe598238eaeffa3da8448d63a63cd363f8", + "sha256:44b546bd3eb645fd26fb949e43c02a25a2e632e2ca21a35e2e132c8105dc8599", + "sha256:478cc36476687bac1514d651cbbaa94b86b0732fb6855c60c673794c7dd2da62", + "sha256:490dab541a6a642ce1a9d61a4781656b346a55c13038f0b1244653828e3a83ec", + "sha256:4a0df7ff02397bb63e2fd22af2c87dfa39e8c7f12947bc524dbdc528282c7e34", + "sha256:4b73189894398d59131a66ff157837b1fafea9974be486d036bb3d32331fdbf0", + "sha256:4b7a9db5a870f780220e931d0002bbfd88fb53aceb6293251e2c839415c1b20e", + "sha256:4c09703000a9d0fa3c3404b27041e574cc7f4df4c6563873246d0e11812a94b6", + "sha256:4d409aa42a94c0b3fa617708ef5276dfe81012ba6753a0370fcc9d0195d0a1fc", + "sha256:4d72a9a2d885f5c208b0cb91ff2ed43636bb7e345ec839ff64708e04f69a13cc", + "sha256:4ef089f985b8c194d341eb2c24ae6e7408c9a0e2e5658699c92f497437d88c3c", + "sha256:51cb455de290ae462593e5b1cb1118c5c22ea7f0d3620d9940bf695cea5a4bd7", + "sha256:521f33e377ff64b96c4c556b81c55d0cfffb96a11c194fd0c3f1e56f3d8dd5a4", + "sha256:53a42d364f323275126aff81fb67c5ca1b7a04fda0546245730a55c8c5f24bc4", + "sha256:5aa873cbc8e593d361ae65c68f85faadd755c3295ea2c12040ee146802f23b38", + "sha256:654030da3197d927f05a536a66186070e98765aa5142794c9904555d3a9d8fb5", + "sha256:661709cdcd919a2ece2234f9bae7174e5220c80b034585d7d8a755632d3e2111", + "sha256:680878b9f3d45c31e1f730eef731f9b0bc1da456155688c6745ee84eb818e90e", + "sha256:6843b28b0364dc605f21481c90fadb5f60d9123b442eb8a726bb74feef588a84", + "sha256:68af405971779d8b37198726f2b6fe3955db846fee42db7a4286fc542203934c", + "sha256:6b4c3d199f953acd5b446bf7c0de1fe25d94e09e79086f8dc2f48a11a129cdf1", + "sha256:6bdce131e14b04fd34a809b6380dbfd826065c3e2fe8a50dbae659fa0c390546", + "sha256:716133f7d1d946a4e1b91b1756b23c088881e70ff180c24e864c26192ad7534a", + "sha256:749a72584761531d2b9467cfbdfd29487ee21124c304c4b6cb760d8777b27f9c", + "sha256:7516c579652f6a6be0e266aec0acd0db80829ca305c3d771ed898538804c2036", + "sha256:79dcf9e477bc65414ebfea98ffd013cb39552b5ecd62908752e0e413d6d06e38", + "sha256:7a0222514e8e4c514660e182d5156a415c13ef0aabbd71682fc714e327b95e99", + "sha256:7b022717c748dd1992a83e219587aabe45980d88969f01b316e78683e6285f64", + "sha256:7bf77f54997a9166a2f5675d1201520586439424c2511723a7312bdb4bcc034e", + "sha256:7e73299c99939f089dd9b2120a04a516b95cdf8c1cd2b18c53ebf0de80b1f18f", + "sha256:7ef6b61cad77091056ce0e7ce69814ef72afacb150b7ac6a3e9470def2198159", + "sha256:7f5170993a0dd3ab871c74f45c0a21a4e2c37a2f2b01b5f722a2ad9c6650469e", + "sha256:803d685de7be4303b5a657b76e2f6d1240e7e0a8aa2968ad5811fa2285553a12", + "sha256:8891681594162635948a636c9fe0ff21746aeb3dd5463f6e25d9bea3a8a39ca1", + "sha256:8a19cdb57cd3df4cd865849d93ee14920fb97224300c88501f16ecfa2604b4e0", + "sha256:8a3862568a36d26e650a19bb5cbbba14b71789032aebc0423f8cc5f150730184", + "sha256:8b55d5497b51afdfde55925e04a022f1de14d4f4f25cdfd4f5d9b0aa96166851", + "sha256:8cfc12a8630a29d601f48d47787bd7eb730e475e83edb5d6c5084317463373eb", + "sha256:9281bf5b34f59afbc6b1e477a372e9526b66ca446f4bf62592839c195a718b32", + "sha256:92abb658ef2d7ef22ac9f8bb88e8b6c3e571671534e029359b6d9e845923eb1b", + "sha256:94218fcec4d72bc61df51c198d098ce2b378e0ccbac41ddbed5ef44092913288", + "sha256:95b5ffa4349df2887518bb839409bcf22caa72d82beec453216802f475b23c81", + "sha256:9600082733859f00d79dee64effc7aef1beb26adb297416a4ad2116fd61374bd", + "sha256:960c60b5849b9b4f9dcc9bea6e3626143c252c74113df2c1540aebce70209b45", + "sha256:9b2fd74c52accced7e75de26023b7dccee62511a600e62311b918ec5c168fc2a", + "sha256:9c0359b1ec12b1d6849c59f9d319610b7f20ef990a6d454ab151aa0e3b9f78ca", + "sha256:9cf41880c991716f3c7cec48e2f19ae4045fc9db5fc9cff27347ada24d710bb5", + "sha256:9d14baca2ee12c1a64740d4531356ba50b82543017f3ad6de0deb943c5979abb", + "sha256:9f474ad5acda359c8758c8accc22032c6abe6dc87a8be2440d097785e27a9349", + "sha256:9fb0211dfc3b51efea2f349ec92c114d7754dd62c01f81c3e32b765b70c45c9b", + "sha256:9fe04da3f79387f450fd0061d4dd2e45a72749d31bf634aecc9e27f24fdc4b3f", + "sha256:9ff96e8815eecacc6645da76c413eb3b3d34cfca256c70b16b286a687d013c32", + "sha256:a027ec240fe73a8d6281872690b988eed307cd7d91b23998ff35ff577ca688b5", + "sha256:a048ce45dcdaaf1defb76b2e684f997fb5abf74437b6cb7b22ddad934a964e34", + "sha256:a265acbb7bb33a3a2d626afbe756371dce0279e7b17f4f4eda406459c2b5ff1c", + "sha256:a35c5fc61d4f51eb045061e7967cfe3123d622cd500e8868e7c0c592a09fedc4", + "sha256:a37bd74c3fa9d00be2d7b8eca074dc56bd8077ddd2917a839bd989612671ed17", + "sha256:a60a4d75718a5efa473ebd5ab685786ba0c67b8381f781d1be14da49f1a2dc60", + "sha256:a6ef16328011d3f468e7ebc326f24c1445f001ca1dec335b2f8e66bed3006394", + "sha256:a90af66facec4cebe4181b9e62a68be65e45ac9b52b67de9eec118701856e7ff", + "sha256:ad9ce259f50abd98a1ca0aa6e490b58c316a0fce0617f609723e40804add2c00", + "sha256:afa8a2978ec65d2336305550535c9c4ff50ee527914328c8677b3973ade52b85", + "sha256:b15b3afff74f707b9275d5ba6a91ae8f6429c3ffb29bbfd216b0b375a56f13d7", + "sha256:b284e319754366c1aee2267a2036248b24eeb17ecd5dc16022095e747f2f4304", + "sha256:b2d7f80c4e1fd010b07cb26820aae86b7e73b681ee4889684fb8d2d4537aab13", + "sha256:b3bc26a951007b1057a1c543af845f1c7e3e71cc240ed1ace7bf4484aa99196e", + "sha256:b3e34f3a1b8131ba06f1a73adab24f30934d148afcd5f5de9a73565a4404384e", + "sha256:b4121773c49a0776461f4a904cdf6264c88e42218aaa8407e803ca8025872792", + "sha256:b61189b29081a20c7e4e0b49b44d5d44bb0dc92be3c6d06a11cc043f81bf9329", + "sha256:b6234e14f9314731ec45c42fc4554b88133ad53a09092cc48a88e771c125dadb", + "sha256:b8512bac933afc3e45fb2b18da8e59b78d4f408399a960339598374d4ae3b56b", + "sha256:ba672b26069957ee369cfa7fc180dde1fc6f176eaf1e6beaf61fbebbd3d9c000", + "sha256:bee7c0588aa0076ce77c0ea5d19a68d76ad81fcd9fe8501003b9a24f9d4000f6", + "sha256:c04a328260dfd5db8c39538f999f02779012268f54614902d0afc775d44e0a62", + "sha256:c1dcc7524066fa918c6a27d61444d4ee7900ec635779058571f70d042d86ed63", + "sha256:c6e99d9a65ca282e578dfea819cfa9c0a62b2499d8677392e09feaf305e9e6f5", + "sha256:ca43bdfa5d37bd6aee89d85e1d0831fb86e25541be7e9d376ead1b28974f8e5e", + "sha256:caf53b15b1b7df9fbd0709aa01409000a2b4dd03a5f6f5cc548183c7c8f8b63c", + "sha256:cc41db090ed742f32bd2d2c721861725e6109681eddf835d0a82bd3a5c382827", + "sha256:cd240939f71c64bd658f186330603aac1a9a81bf6273f523fca63673cb7378a8", + "sha256:ce8fdc2dca699f8dbf055a61d73eaa10482569ad20ee3c36ef9641f69afa8c91", + "sha256:d1bed1b467ef657f2a0ae62844a607909ef1c6889562de5e1d505f74457d0b96", + "sha256:d1d964afecdf3a8288789df2f5751dc0a8261138c3768d9af117ed384e538fad", + "sha256:d4393e3581e84e5645506923816b9cc81f5609a778c7e7534054091acc64d1c6", + "sha256:d874eb056410ca05fed180b6642e680373688efafc7f077b2a2f61811e873a40", + "sha256:db99677b4457c7a5c5a949353e125ba72d62b35f74e26da141530fbb012218a7", + "sha256:dd32a49400a2c3d52088e120ee00c1e3576cbff7e10b98467962c74fdb762ed4", + "sha256:df0e3bf7993bdbeca5ac25aa859cf40d39019e015c9c91809ba7093967f7a648", + "sha256:e011555abada53f1578d63389610ac8a5400fc70ce71156b0aa30d326f1a5064", + "sha256:e2862408c99f84aa571ab462d25236ef9cb12a602ea959ba9c9009a54902fc73", + "sha256:e3aa16de190d29a0ea1b48253c57d99a68492c8dd8948638073ab9e74dc9410b", + "sha256:e93a0617cd16998784bf4414c7e40f17a35d2350e5c6f0bd900d3a8e02bd3762", + "sha256:ea3334cabe4d41b7ccd01e4d349828678794edbc2d3ae97fc162a3312095092e", + "sha256:eb866162ef2f45063acc7a53a88ef6fe8bf121d45c30ea3c9cd87ce7e191a8d4", + "sha256:ec81878ddf0e98817def1e77d4f50dae5ef5b0e4fe796fae3bd674304172416e", + "sha256:efbb54e98446892590dc2458c19c10344ee9a883a79b5cec4bc34d6656e8d546", + "sha256:f0e77e3c0008bc9316e662624535b88d360c3a5d3f81e15cf12c139a75250046", + "sha256:f0feece2ef8ebc42ed9e2e8c78fc4aa3cf455733b507c09ef7406364c94376c6", + "sha256:f470f68adc395e0183b92a2f4689264d1ea4b40504a24d9882c27375e6662bb9", + "sha256:f844a1bbf1d207dd311a56f383f7eda2d0e134921d45751842d8235e7778965d", + "sha256:f8a93b1c0ed2d04b97a5e9336fd2d33371b9a6e29ab7dd6503d63407c20ffbaf", + "sha256:f8e5c0031b90ca9ce555e2e8fd5c3b02a25f14989cbc310701823832c99eb687", + "sha256:fb287618b9c7aa3bf8d825f02d9201b2f13078a5ed3b293c8f4d953917d84d5e", + "sha256:fbafe31d191dfa7c4c51f7a6149c9fb7e914dcf9ffead27dcfd9f1ae382b3885", + "sha256:fbd18dc82d7bf274b37aa48d664534330af744e03bccf696d6f4c6042e7d19e7" ], "markers": "python_version >= '3.9'", - "version": "==6.6.4" + "version": "==6.7.0" }, "mypy-extensions": { "hashes": [ @@ -1714,23 +1922,9 @@ "version": "==1.9.1" }, "nucypher-core": { - "hashes": [ - "sha256:0723aff0adc8a3aea967c4f7eee3d65f86399ebe03ead8a9e44fa2abdab5da09", - "sha256:172b7b9a82c73b4c3c75719c32a84cf2c592789418ebdfb8ee3eba8699a021f9", - "sha256:182fd095c56bdb41dda9421787cc33c147ac39cb108f892e7591058c9ebdfc79", - "sha256:4200b8b66d26fb2af2b821f6cdf898460a77ab18cc686c5133298614a4f01b39", - "sha256:4e6ad7ef4c905c179f35623c6573d83025ed9d87f0f1f3e33df795048a3161f7", - "sha256:53a5d71c88542c46ed56cc35c1a4371c6e7da3c67f61ddc0adb75f14fca75bc5", - "sha256:6d5220cafcbfd61b3727b5c40f45df618576b2865960ac78765ed59827852d11", - "sha256:8baa7b54e2fd12b4645fb627115d7ecc0dae6b20181b5d21e228fac93d5e2a0d", - "sha256:958a88388d2c0025731783b0038a19e9f49aea1a59dc7ea62bb3da8bd735d903", - "sha256:97e496d29600a550097e221fc6ee2d97ed6fadfcd74293cd020926d1dbd641f5", - "sha256:d9386726ba88de05fb92be5e98a45f6eaf7f690471f45b15eefcd8a870a32d8b", - "sha256:f0623ceff804913bd8f9c422bffc8bd6d1ddf039d4ada6c327f28b5b7d501050", - "sha256:f3d8fb6d2dff016a94b97025f14879e8fffac3f03c6921cc5818a72dc8f05f7d" - ], - "index": "pypi", - "version": "==0.15.0" + "git": "https://github.com/nucypher/nucypher-core.git", + "ref": "806bc81a658f107eddb26c179b04763b1b0cdbed", + "subdirectory": "nucypher-core-python" }, "numpy": { "hashes": [ @@ -1784,51 +1978,64 @@ }, "pandas": { "hashes": [ - "sha256:0064187b80a5be6f2f9c9d6bdde29372468751dfa89f4211a3c5871854cfbf7a", - "sha256:0bd281310d4f412733f319a5bc552f86d62cddc5f51d2e392c8787335c994175", - "sha256:0c6ecbac99a354a051ef21c5307601093cb9e0f4b1855984a084bfec9302699e", - "sha256:0cee69d583b9b128823d9514171cabb6861e09409af805b54459bd0c821a35c2", - "sha256:114c2fe4f4328cf98ce5716d1532f3ab79c5919f95a9cfee81d9140064a2e4d6", - "sha256:12d039facec710f7ba305786837d0225a3444af7bbd9c15c32ca2d40d157ed8b", - "sha256:1333e9c299adcbb68ee89a9bb568fc3f20f9cbb419f1dd5225071e6cddb2a743", - "sha256:13bd629c653856f00c53dc495191baa59bcafbbf54860a46ecc50d3a88421a96", - "sha256:1b9b52693123dd234b7c985c68b709b0b009f4521000d0525f2b95c22f15944b", - "sha256:1d81573b3f7db40d020983f78721e9bfc425f411e616ef019a10ebf597aedb2e", - "sha256:213a5adf93d020b74327cb2c1b842884dbdd37f895f42dcc2f09d451d949f811", - "sha256:21bb612d148bb5860b7eb2c10faacf1a810799245afd342cf297d7551513fbb6", - "sha256:220cc5c35ffaa764dd5bb17cf42df283b5cb7fdf49e10a7b053a06c9cb48ee2b", - "sha256:2319656ed81124982900b4c37f0e0c58c015af9a7bbc62342ba5ad07ace82ba9", - "sha256:36d627906fd44b5fd63c943264e11e96e923f8de77d6016dc2f667b9ad193438", - "sha256:3fbb977f802156e7a3f829e9d1d5398f6192375a3e2d1a9ee0803e35fe70a2b9", - "sha256:42c05e15111221384019897df20c6fe893b2f697d03c811ee67ec9e0bb5a3424", - "sha256:45178cf09d1858a1509dc73ec261bf5b25a625a389b65be2e47b559905f0ab6a", - "sha256:48fa91c4dfb3b2b9bfdb5c24cd3567575f4e13f9636810462ffed8925352be5a", - "sha256:4ac8c320bded4718b298281339c1a50fb00a6ba78cb2a63521c39bec95b0209b", - "sha256:52bc29a946304c360561974c6542d1dd628ddafa69134a7131fdfd6a5d7a1a35", - "sha256:76972bcbd7de8e91ad5f0ca884a9f2c477a2125354af624e022c49e5bd0dfff4", - "sha256:77cefe00e1b210f9c76c697fedd8fdb8d3dd86563e9c8adc9fa72b90f5e9e4c2", - "sha256:837248b4fc3a9b83b9c6214699a13f069dc13510a6a6d7f9ba33145d2841a012", - "sha256:88080a0ff8a55eac9c84e3ff3c7665b3b5476c6fbc484775ca1910ce1c3e0b87", - "sha256:8c13b81a9347eb8c7548f53fd9a4f08d4dfe996836543f805c987bafa03317ae", - "sha256:9467697b8083f9667b212633ad6aa4ab32436dcbaf4cd57325debb0ddef2012f", - "sha256:96d31a6b4354e3b9b8a2c848af75d31da390657e3ac6f30c05c82068b9ed79b9", - "sha256:a9d7ec92d71a420185dec44909c32e9a362248c4ae2238234b76d5be37f208cc", - "sha256:ab7b58f8f82706890924ccdfb5f48002b83d2b5a3845976a9fb705d36c34dcdb", - "sha256:b37205ad6f00d52f16b6d09f406434ba928c1a1966e2771006a9033c736d30d2", - "sha256:b62d586eb25cb8cb70a5746a378fc3194cb7f11ea77170d59f889f5dfe3cec7a", - "sha256:b98bdd7c456a05eef7cd21fd6b29e3ca243591fe531c62be94a2cc987efb5ac2", - "sha256:c253828cb08f47488d60f43c5fc95114c771bbfff085da54bfc79cb4f9e3a372", - "sha256:c624b615ce97864eb588779ed4046186f967374185c047070545253a52ab2d57", - "sha256:c6f048aa0fd080d6a06cc7e7537c09b53be6642d330ac6f54a600c3ace857ee9", - "sha256:cc03acc273c5515ab69f898df99d9d4f12c4d70dbfc24c3acc6203751d0804cf", - "sha256:d25c20a03e8870f6339bcf67281b946bd20b86f1a544ebbebb87e66a8d642cba", - "sha256:d2c3554bd31b731cd6490d94a28f3abb8dd770634a9e06eb6d2911b9827db370", - "sha256:d4a558c7620340a0931828d8065688b3cc5b4c8eb674bcaf33d18ff4a6870b4a", - "sha256:df4df0b9d02bb873a106971bb85d448378ef14b86ba96f035f50bbd3688456b4", - "sha256:e190b738675a73b581736cc8ec71ae113d6c3768d0bd18bffa5b9a0927b0b6ea" + "sha256:0242fe9a49aa8b4d78a4fa03acb397a58833ef6199e9aa40a95f027bb3a1b6e7", + "sha256:1611aedd912e1ff81ff41c745822980c49ce4a7907537be8692c8dbc31924593", + "sha256:1b07204a219b3b7350abaae088f451860223a52cfb8a6c53358e7948735158e5", + "sha256:1d37b5848ba49824e5c30bedb9c830ab9b7751fd049bc7914533e01c65f79791", + "sha256:23ebd657a4d38268c7dfbdf089fbc31ea709d82e4923c5ffd4fbd5747133ce73", + "sha256:2462b1a365b6109d275250baaae7b760fd25c726aaca0054649286bcfbb3e8ec", + "sha256:28083c648d9a99a5dd035ec125d42439c6c1c525098c58af0fc38dd1a7a1b3d4", + "sha256:2e3ebdb170b5ef78f19bfb71b0dc5dc58775032361fa188e814959b74d726dd5", + "sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac", + "sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084", + "sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c", + "sha256:3869faf4bd07b3b66a9f462417d0ca3a9df29a9f6abd5d0d0dbab15dac7abe87", + "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", + "sha256:4793891684806ae50d1288c9bae9330293ab4e083ccd1c5e383c34549c6e4250", + "sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c", + "sha256:503cf027cf9940d2ceaa1a93cfb5f8c8c7e6e90720a2850378f0b3f3b1e06826", + "sha256:5554c929ccc317d41a5e3d1234f3be588248e61f08a74dd17c9eabb535777dc9", + "sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713", + "sha256:5caf26f64126b6c7aec964f74266f435afef1c1b13da3b0636c7518a1fa3e2b1", + "sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523", + "sha256:6253c72c6a1d990a410bc7de641d34053364ef8bcd3126f7e7450125887dffe3", + "sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78", + "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53", + "sha256:6d2cefc361461662ac48810cb14365a365ce864afe85ef1f447ff5a1e99ea81c", + "sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21", + "sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5", + "sha256:854d00d556406bffe66a4c0802f334c9ad5a96b4f1f868adf036a21b11ef13ff", + "sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45", + "sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110", + "sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493", + "sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b", + "sha256:a21d830e78df0a515db2b3d2f5570610f5e6bd2e27749770e8bb7b524b89b450", + "sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86", + "sha256:a637c5cdfa04b6d6e2ecedcb81fc52ffb0fd78ce2ebccc9ea964df9f658de8c8", + "sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98", + "sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89", + "sha256:b468d3dad6ff947df92dcb32ede5b7bd41a9b3cceef0a30ed925f6d01fb8fa66", + "sha256:b98560e98cb334799c0b07ca7967ac361a47326e9b4e5a7dfb5ab2b1c9d35a1b", + "sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8", + "sha256:bf1f8a81d04ca90e32a0aceb819d34dbd378a98bf923b6398b9a3ec0bf44de29", + "sha256:c46467899aaa4da076d5abc11084634e2d197e9460643dd455ac3db5856b24d6", + "sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc", + "sha256:c503ba5216814e295f40711470446bc3fd00f0faea8a086cbc688808e26f92a2", + "sha256:d051c0e065b94b7a3cea50eb1ec32e912cd96dba41647eb24104b6c6c14c5788", + "sha256:d3e28b3e83862ccf4d85ff19cf8c20b2ae7e503881711ff2d534dc8f761131aa", + "sha256:db4301b2d1f926ae677a751eb2bd0e8c5f5319c9cb3f88b0becbbb0b07b34151", + "sha256:dd7478f1463441ae4ca7308a70e90b33470fa593429f9d4c578dd00d1fa78838", + "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", + "sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a", + "sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d", + "sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908", + "sha256:ee15f284898e7b246df8087fc82b87b01686f98ee67d85a17b7ab44143a3a9a0", + "sha256:ee67acbbf05014ea6c763beb097e03cd629961c8a632075eeb34247120abcb4b", + "sha256:f086f6fe114e19d92014a1966f43a3e62285109afe874f067f5abbdcbb10e59c", + "sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee" ], "markers": "python_version >= '3.9'", - "version": "==2.3.2" + "version": "==2.3.3" }, "parsimonious": { "hashes": [ @@ -1839,11 +2046,11 @@ }, "parso": { "hashes": [ - "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", - "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d" + "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a", + "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887" ], "markers": "python_version >= '3.6'", - "version": "==0.8.4" + "version": "==0.8.5" }, "pathspec": { "hashes": [ @@ -1863,11 +2070,11 @@ }, "platformdirs": { "hashes": [ - "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", - "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4" + "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312", + "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3" ], - "markers": "python_version >= '3.9'", - "version": "==4.3.8" + "markers": "python_version >= '3.10'", + "version": "==4.5.0" }, "pluggy": { "hashes": [ @@ -1888,130 +2095,155 @@ }, "prompt-toolkit": { "hashes": [ - "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", - "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed" + "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", + "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955" ], "markers": "python_version >= '3.8'", - "version": "==3.0.51" + "version": "==3.0.52" }, "propcache": { "hashes": [ - "sha256:035e631be25d6975ed87ab23153db6a73426a48db688070d925aa27e996fe93c", - "sha256:03c89c1b14a5452cf15403e291c0ccd7751d5b9736ecb2c5bab977ad6c5bcd81", - "sha256:06766d8f34733416e2e34f46fea488ad5d60726bb9481d3cddf89a6fa2d9603f", - "sha256:0a2f2235ac46a7aa25bdeb03a9e7060f6ecbd213b1f9101c43b3090ffb971ef6", - "sha256:0b504d29f3c47cf6b9e936c1852246c83d450e8e063d50562115a6be6d3a2535", - "sha256:0b8d2f607bd8f80ddc04088bc2a037fdd17884a6fcadc47a96e334d72f3717be", - "sha256:0cc17efde71e12bbaad086d679ce575268d70bc123a5a71ea7ad76f70ba30bba", - "sha256:0d0fda578d1dc3f77b6b5a5dce3b9ad69a8250a891760a548df850a5e8da87f3", - "sha256:156c03d07dc1323d8dacaa221fbe028c5c70d16709cdd63502778e6c3ccca1b0", - "sha256:1f43837d4ca000243fd7fd6301947d7cb93360d03cd08369969450cc6b2ce3b4", - "sha256:20d7d62e4e7ef05f221e0db2856b979540686342e7dd9973b815599c7057e168", - "sha256:2183111651d710d3097338dd1893fcf09c9f54e27ff1a8795495a16a469cc90b", - "sha256:21d8759141a9e00a681d35a1f160892a36fb6caa715ba0b832f7747da48fb6ea", - "sha256:22d9962a358aedbb7a2e36187ff273adeaab9743373a272976d2e348d08c7770", - "sha256:261df2e9474a5949c46e962065d88eb9b96ce0f2bd30e9d3136bcde84befd8f2", - "sha256:261fa020c1c14deafd54c76b014956e2f86991af198c51139faf41c4d5e83892", - "sha256:28710b0d3975117239c76600ea351934ac7b5ff56e60953474342608dbbb6154", - "sha256:2a4092e8549031e82facf3decdbc0883755d5bbcc62d3aea9d9e185549936dcf", - "sha256:2ca6d378f09adb13837614ad2754fa8afaee330254f404299611bce41a8438cb", - "sha256:310d11aa44635298397db47a3ebce7db99a4cc4b9bbdfcf6c98a60c8d5261cf1", - "sha256:31248e44b81d59d6addbb182c4720f90b44e1efdc19f58112a3c3a1615fb47ef", - "sha256:34a624af06c048946709f4278b4176470073deda88d91342665d95f7c6270fbe", - "sha256:36c8d9b673ec57900c3554264e630d45980fd302458e4ac801802a7fd2ef7897", - "sha256:3def3da3ac3ce41562d85db655d18ebac740cb3fa4367f11a52b3da9d03a5cc3", - "sha256:404d70768080d3d3bdb41d0771037da19d8340d50b08e104ca0e7f9ce55fce70", - "sha256:4445542398bd0b5d32df908031cb1b30d43ac848e20470a878b770ec2dcc6330", - "sha256:46d7f8aa79c927e5f987ee3a80205c987717d3659f035c85cf0c3680526bdb44", - "sha256:4927842833830942a5d0a56e6f4839bc484785b8e1ce8d287359794818633ba0", - "sha256:4adfb44cb588001f68c5466579d3f1157ca07f7504fc91ec87862e2b8e556b88", - "sha256:4ba3fef1c30f306b1c274ce0b8baaa2c3cdd91f645c48f06394068f37d3837a1", - "sha256:4c1396592321ac83157ac03a2023aa6cc4a3cc3cfdecb71090054c09e5a7cce3", - "sha256:4c181cad81158d71c41a2bce88edce078458e2dd5ffee7eddd6b05da85079f43", - "sha256:54e02207c79968ebbdffc169591009f4474dde3b4679e16634d34c9363ff56b4", - "sha256:55780d5e9a2ddc59711d727226bb1ba83a22dd32f64ee15594b9392b1f544eb1", - "sha256:55ffda449a507e9fbd4aca1a7d9aa6753b07d6166140e5a18d2ac9bc49eac220", - "sha256:5745bc7acdafa978ca1642891b82c19238eadc78ba2aaa293c6863b304e552d7", - "sha256:59d61f6970ecbd8ff2e9360304d5c8876a6abd4530cb752c06586849ac8a9dc9", - "sha256:5f559e127134b07425134b4065be45b166183fdcb433cb6c24c8e4149056ad50", - "sha256:5f57aa0847730daceff0497f417c9de353c575d8da3579162cc74ac294c5369e", - "sha256:6107ddd08b02654a30fb8ad7a132021759d750a82578b94cd55ee2772b6ebea2", - "sha256:62180e0b8dbb6b004baec00a7983e4cc52f5ada9cd11f48c3528d8cfa7b96a66", - "sha256:62b4239611205294cc433845b914131b2a1f03500ff3c1ed093ed216b82621e1", - "sha256:64a67fb39229a8a8491dd42f864e5e263155e729c2e7ff723d6e25f596b1e8cb", - "sha256:6d8f3f0eebf73e3c0ff0e7853f68be638b4043c65a70517bb575eff54edd8dbe", - "sha256:7046e79b989d7fe457bb755844019e10f693752d169076138abf17f31380800c", - "sha256:70bd8b9cd6b519e12859c99f3fc9a93f375ebd22a50296c3a295028bea73b9e7", - "sha256:7435d766f978b4ede777002e6b3b6641dd229cd1da8d3d3106a45770365f9ad9", - "sha256:74413c0ba02ba86f55cf60d18daab219f7e531620c15f1e23d95563f505efe7e", - "sha256:76cace5d6b2a54e55b137669b30f31aa15977eeed390c7cbfb1dafa8dfe9a701", - "sha256:7a2368eed65fc69a7a7a40b27f22e85e7627b74216f0846b04ba5c116e191ec9", - "sha256:7a4f30862869fa2b68380d677cc1c5fcf1e0f2b9ea0cf665812895c75d0ca3b8", - "sha256:7ca3aee1aa955438c4dba34fc20a9f390e4c79967257d830f137bd5a8a32ed3b", - "sha256:7f08f1cc28bd2eade7a8a3d2954ccc673bb02062e3e7da09bc75d843386b342f", - "sha256:85871b050f174bc0bfb437efbdb68aaf860611953ed12418e4361bc9c392749e", - "sha256:8a08154613f2249519e549de2330cf8e2071c2887309a7b07fb56098f5170a02", - "sha256:8a544caaae1ac73f1fecfae70ded3e93728831affebd017d53449e3ac052ac1e", - "sha256:8cabf5b5902272565e78197edb682017d21cf3b550ba0460ee473753f28d23c1", - "sha256:8de106b6c84506b31c27168582cd3cb3000a6412c16df14a8628e5871ff83c10", - "sha256:92b69e12e34869a6970fd2f3da91669899994b47c98f5d430b781c26f1d9f387", - "sha256:9704bedf6e7cbe3c65eca4379a9b53ee6a83749f047808cbb5044d40d7d72198", - "sha256:98f1ec44fb675f5052cccc8e609c46ed23a35a1cfd18545ad4e29002d858a43f", - "sha256:9a3cf035bbaf035f109987d9d55dc90e4b0e36e04bbbb95af3055ef17194057b", - "sha256:9bec58347a5a6cebf239daba9bda37dffec5b8d2ce004d9fe4edef3d2815137e", - "sha256:9da1cf97b92b51253d5b68cf5a2b9e0dafca095e36b7f2da335e27dc6172a614", - "sha256:9ecb0aad4020e275652ba3975740f241bd12a61f1a784df044cf7477a02bc252", - "sha256:a2dc1f4a1df4fecf4e6f68013575ff4af84ef6f478fe5344317a65d38a8e6dc9", - "sha256:a7fad897f14d92086d6b03fdd2eb844777b0c4d7ec5e3bac0fbae2ab0602bbe5", - "sha256:ab50cef01b372763a13333b4e54021bdcb291fc9a8e2ccb9c2df98be51bcde6c", - "sha256:abb7fa19dbf88d3857363e0493b999b8011eea856b846305d8c0512dfdf8fbb1", - "sha256:acdf05d00696bc0447e278bb53cb04ca72354e562cf88ea6f9107df8e7fd9770", - "sha256:aff2e4e06435d61f11a428360a932138d0ec288b0a31dd9bd78d200bd4a2b339", - "sha256:b77ec3c257d7816d9f3700013639db7491a434644c906a2578a11daf13176251", - "sha256:bca54bd347a253af2cf4544bbec232ab982f4868de0dd684246b67a51bc6b1db", - "sha256:be29c4f4810c5789cf10ddf6af80b041c724e629fa51e308a7a0fb19ed1ef7bf", - "sha256:c0075bf773d66fa8c9d41f66cc132ecc75e5bb9dd7cce3cfd14adc5ca184cb95", - "sha256:c144ca294a204c470f18cf4c9d78887810d04a3e2fbb30eea903575a779159df", - "sha256:c5c2a784234c28854878d68978265617aa6dc0780e53d44b4d67f3651a17a9a2", - "sha256:ca592ed634a73ca002967458187109265e980422116c0a107cf93d81f95af945", - "sha256:cab90ac9d3f14b2d5050928483d3d3b8fb6b4018893fc75710e6aa361ecb2474", - "sha256:cc2782eb0f7a16462285b6f8394bbbd0e1ee5f928034e941ffc444012224171b", - "sha256:ce26862344bdf836650ed2487c3d724b00fbfec4233a1013f597b78c1cb73615", - "sha256:ce2ac2675a6aa41ddb2a0c9cbff53780a617ac3d43e620f8fd77ba1c84dcfc06", - "sha256:d1a342c834734edb4be5ecb1e9fb48cb64b1e2320fccbd8c54bf8da8f2a84c33", - "sha256:d4a996adb6904f85894570301939afeee65f072b4fd265ed7e569e8d9058e4ec", - "sha256:d81ac3ae39d38588ad0549e321e6f773a4e7cc68e7751524a22885d5bbadf886", - "sha256:db429c19a6c7e8a1c320e6a13c99799450f411b02251fb1b75e6217cf4a14fcb", - "sha256:df4a81b9b53449ebc90cc4deefb052c1dd934ba85012aa912c7ea7b7e38b60c1", - "sha256:e41671f1594fc4ab0a6dec1351864713cb3a279910ae8b58f884a88a0a632c05", - "sha256:e514326b79e51f0a177daab1052bc164d9d9e54133797a3a58d24c9c87a3fe6d", - "sha256:e53af8cb6a781b02d2ea079b5b853ba9430fcbe18a8e3ce647d5982a3ff69f39", - "sha256:ee6f22b6eaa39297c751d0e80c0d3a454f112f5c6481214fcf4c092074cecd67", - "sha256:eef914c014bf72d18efb55619447e0aecd5fb7c2e3fa7441e2e5d6099bddff7e", - "sha256:f066b437bb3fa39c58ff97ab2ca351db465157d68ed0440abecb21715eb24b28", - "sha256:f1304b085c83067914721e7e9d9917d41ad87696bf70f0bc7dee450e9c71ad0a", - "sha256:f86e5d7cd03afb3a1db8e9f9f6eff15794e79e791350ac48a8c924e6f439f394", - "sha256:fad3b2a085ec259ad2c2842666b2a0a49dea8463579c606426128925af1ed725", - "sha256:fb075ad271405dcad8e2a7ffc9a750a3bf70e533bd86e89f0603e607b93aa64c", - "sha256:fd3e6019dc1261cd0291ee8919dd91fbab7b169bb76aeef6c716833a3f65d206" + "sha256:0002004213ee1f36cfb3f9a42b5066100c44276b9b72b4e1504cddd3d692e86e", + "sha256:0013cb6f8dde4b2a2f66903b8ba740bdfe378c943c4377a200551ceb27f379e4", + "sha256:005f08e6a0529984491e37d8dbc3dd86f84bd78a8ceb5fa9a021f4c48d4984be", + "sha256:031dce78b9dc099f4c29785d9cf5577a3faf9ebf74ecbd3c856a7b92768c3df3", + "sha256:05674a162469f31358c30bcaa8883cb7829fa3110bf9c0991fe27d7896c42d85", + "sha256:060b16ae65bc098da7f6d25bf359f1f31f688384858204fe5d652979e0015e5b", + "sha256:120c964da3fdc75e3731aa392527136d4ad35868cc556fd09bb6d09172d9a367", + "sha256:15932ab57837c3368b024473a525e25d316d8353016e7cc0e5ba9eb343fbb1cf", + "sha256:17612831fda0138059cc5546f4d12a2aacfb9e47068c06af35c400ba58ba7393", + "sha256:182b51b421f0501952d938dc0b0eb45246a5b5153c50d42b495ad5fb7517c888", + "sha256:1cdb7988c4e5ac7f6d175a28a9aa0c94cb6f2ebe52756a3c0cda98d2809a9e37", + "sha256:1eb2994229cc8ce7fe9b3db88f5465f5fd8651672840b2e426b88cdb1a30aac8", + "sha256:1f0978529a418ebd1f49dad413a2b68af33f85d5c5ca5c6ca2a3bed375a7ac60", + "sha256:204483131fb222bdaaeeea9f9e6c6ed0cac32731f75dfc1d4a567fc1926477c1", + "sha256:296f4c8ed03ca7476813fe666c9ea97869a8d7aec972618671b33a38a5182ef4", + "sha256:2ad890caa1d928c7c2965b48f3a3815c853180831d0e5503d35cf00c472f4717", + "sha256:2b16ec437a8c8a965ecf95739448dd938b5c7f56e67ea009f4300d8df05f32b7", + "sha256:2bb07ffd7eaad486576430c89f9b215f9e4be68c4866a96e97db9e97fead85dc", + "sha256:333ddb9031d2704a301ee3e506dc46b1fe5f294ec198ed6435ad5b6a085facfe", + "sha256:357f5bb5c377a82e105e44bd3d52ba22b616f7b9773714bff93573988ef0a5fb", + "sha256:35c3277624a080cc6ec6f847cbbbb5b49affa3598c4535a0a4682a697aaa5c75", + "sha256:364426a62660f3f699949ac8c621aad6977be7126c5807ce48c0aeb8e7333ea6", + "sha256:381914df18634f5494334d201e98245c0596067504b9372d8cf93f4bb23e025e", + "sha256:3d233076ccf9e450c8b3bc6720af226b898ef5d051a2d145f7d765e6e9f9bcff", + "sha256:3d902a36df4e5989763425a8ab9e98cd8ad5c52c823b34ee7ef307fd50582566", + "sha256:3f7124c9d820ba5548d431afb4632301acf965db49e666aa21c305cbe8c6de12", + "sha256:405aac25c6394ef275dee4c709be43745d36674b223ba4eb7144bf4d691b7367", + "sha256:41a89040cb10bd345b3c1a873b2bf36413d48da1def52f268a055f7398514874", + "sha256:43eedf29202c08550aac1d14e0ee619b0430aaef78f85864c1a892294fbc28cf", + "sha256:473c61b39e1460d386479b9b2f337da492042447c9b685f28be4f74d3529e566", + "sha256:49a2dc67c154db2c1463013594c458881a069fcf98940e61a0569016a583020a", + "sha256:4b536b39c5199b96fc6245eb5fb796c497381d3942f169e44e8e392b29c9ebcc", + "sha256:4c3c70630930447f9ef1caac7728c8ad1c56bc5015338b20fed0d08ea2480b3a", + "sha256:4d3df5fa7e36b3225954fba85589da77a0fe6a53e3976de39caf04a0db4c36f1", + "sha256:4d7af63f9f93fe593afbf104c21b3b15868efb2c21d07d8732c0c4287e66b6a6", + "sha256:501d20b891688eb8e7aa903021f0b72d5a55db40ffaab27edefd1027caaafa61", + "sha256:521a463429ef54143092c11a77e04056dd00636f72e8c45b70aaa3140d639726", + "sha256:5558992a00dfd54ccbc64a32726a3357ec93825a418a401f5cc67df0ac5d9e49", + "sha256:55c72fd6ea2da4c318e74ffdf93c4fe4e926051133657459131a95c846d16d44", + "sha256:564d9f0d4d9509e1a870c920a89b2fec951b44bf5ba7d537a9e7c1ccec2c18af", + "sha256:580e97762b950f993ae618e167e7be9256b8353c2dcd8b99ec100eb50f5286aa", + "sha256:5a103c3eb905fcea0ab98be99c3a9a5ab2de60228aa5aceedc614c0281cf6153", + "sha256:5c3310452e0d31390da9035c348633b43d7e7feb2e37be252be6da45abd1abcc", + "sha256:5d4e2366a9c7b837555cf02fb9be2e3167d333aff716332ef1b7c3a142ec40c5", + "sha256:5fd37c406dd6dc85aa743e214cef35dc54bbdd1419baac4f6ae5e5b1a2976938", + "sha256:60a8fda9644b7dfd5dece8c61d8a85e271cb958075bfc4e01083c148b61a7caf", + "sha256:66c1f011f45a3b33d7bcb22daed4b29c0c9e2224758b6be00686731e1b46f925", + "sha256:671538c2262dadb5ba6395e26c1731e1d52534bfe9ae56d0b5573ce539266aa8", + "sha256:678ae89ebc632c5c204c794f8dab2837c5f159aeb59e6ed0539500400577298c", + "sha256:67fad6162281e80e882fb3ec355398cf72864a54069d060321f6cd0ade95fe85", + "sha256:6918ecbd897443087a3b7cd978d56546a812517dcaaca51b49526720571fa93e", + "sha256:6f6ff873ed40292cd4969ef5310179afd5db59fdf055897e282485043fc80ad0", + "sha256:6f8b465489f927b0df505cbe26ffbeed4d6d8a2bbc61ce90eb074ff129ef0ab1", + "sha256:71b749281b816793678ae7f3d0d84bd36e694953822eaad408d682efc5ca18e0", + "sha256:74c1fb26515153e482e00177a1ad654721bf9207da8a494a0c05e797ad27b992", + "sha256:7c2d1fa3201efaf55d730400d945b5b3ab6e672e100ba0f9a409d950ab25d7db", + "sha256:824e908bce90fb2743bd6b59db36eb4f45cd350a39637c9f73b1c1ea66f5b75f", + "sha256:8326e144341460402713f91df60ade3c999d601e7eb5ff8f6f7862d54de0610d", + "sha256:8873eb4460fd55333ea49b7d189749ecf6e55bf85080f11b1c4530ed3034cba1", + "sha256:89eb3fa9524f7bec9de6e83cf3faed9d79bffa560672c118a96a171a6f55831e", + "sha256:8c9b3cbe4584636d72ff556d9036e0c9317fa27b3ac1f0f558e7e84d1c9c5900", + "sha256:8e57061305815dfc910a3634dcf584f08168a8836e6999983569f51a8544cd89", + "sha256:929d7cbe1f01bb7baffb33dc14eb5691c95831450a26354cd210a8155170c93a", + "sha256:92d1935ee1f8d7442da9c0c4fa7ac20d07e94064184811b685f5c4fada64553b", + "sha256:948dab269721ae9a87fd16c514a0a2c2a1bdb23a9a61b969b0f9d9ee2968546f", + "sha256:981333cb2f4c1896a12f4ab92a9cc8f09ea664e9b7dbdc4eff74627af3a11c0f", + "sha256:990f6b3e2a27d683cb7602ed6c86f15ee6b43b1194736f9baaeb93d0016633b1", + "sha256:99d43339c83aaf4d32bda60928231848eee470c6bda8d02599cc4cebe872d183", + "sha256:9a0bd56e5b100aef69bd8562b74b46254e7c8812918d3baa700c8a8009b0af66", + "sha256:9a52009f2adffe195d0b605c25ec929d26b36ef986ba85244891dee3b294df21", + "sha256:9d2b6caef873b4f09e26ea7e33d65f42b944837563a47a94719cc3544319a0db", + "sha256:9f302f4783709a78240ebc311b793f123328716a60911d667e0c036bc5dcbded", + "sha256:a0ee98db9c5f80785b266eb805016e36058ac72c51a064040f2bc43b61101cdb", + "sha256:a129e76735bc792794d5177069691c3217898b9f5cee2b2661471e52ffe13f19", + "sha256:a78372c932c90ee474559c5ddfffd718238e8673c340dc21fe45c5b8b54559a0", + "sha256:a9695397f85973bb40427dedddf70d8dc4a44b22f1650dd4af9eedf443d45165", + "sha256:ab08df6c9a035bee56e31af99be621526bd237bea9f32def431c656b29e41778", + "sha256:ab2943be7c652f09638800905ee1bab2c544e537edb57d527997a24c13dc1455", + "sha256:ab4c29b49d560fe48b696cdcb127dd36e0bc2472548f3bf56cc5cb3da2b2984f", + "sha256:af223b406d6d000830c6f65f1e6431783fc3f713ba3e6cc8c024d5ee96170a4b", + "sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237", + "sha256:bcc9aaa5d80322bc2fb24bb7accb4a30f81e90ab8d6ba187aec0744bc302ad81", + "sha256:c07fda85708bc48578467e85099645167a955ba093be0a2dcba962195676e859", + "sha256:c0d4b719b7da33599dfe3b22d3db1ef789210a0597bc650b7cee9c77c2be8c5c", + "sha256:c0ef0aaafc66fbd87842a3fe3902fd889825646bc21149eafe47be6072725835", + "sha256:c2b5e7db5328427c57c8e8831abda175421b709672f6cfc3d630c3b7e2146393", + "sha256:c30b53e7e6bda1d547cabb47c825f3843a0a1a42b0496087bb58d8fedf9f41b5", + "sha256:c80ee5802e3fb9ea37938e7eecc307fb984837091d5fd262bb37238b1ae97641", + "sha256:c9b822a577f560fbd9554812526831712c1436d2c046cedee4c3796d3543b144", + "sha256:cae65ad55793da34db5f54e4029b89d3b9b9490d8abe1b4c7ab5d4b8ec7ebf74", + "sha256:cb2d222e72399fcf5890d1d5cc1060857b9b236adff2792ff48ca2dfd46c81db", + "sha256:cbc3b6dfc728105b2a57c06791eb07a94229202ea75c59db644d7d496b698cac", + "sha256:cd547953428f7abb73c5ad82cbb32109566204260d98e41e5dfdc682eb7f8403", + "sha256:cfc27c945f422e8b5071b6e93169679e4eb5bf73bbcbf1ba3ae3a83d2f78ebd9", + "sha256:d472aeb4fbf9865e0c6d622d7f4d54a4e101a89715d8904282bb5f9a2f476c3f", + "sha256:d62cdfcfd89ccb8de04e0eda998535c406bf5e060ffd56be6c586cbcc05b3311", + "sha256:d82ad62b19645419fe79dd63b3f9253e15b30e955c0170e5cebc350c1844e581", + "sha256:d8f353eb14ee3441ee844ade4277d560cdd68288838673273b978e3d6d2c8f36", + "sha256:daede9cd44e0f8bdd9e6cc9a607fc81feb80fae7a5fc6cecaff0e0bb32e42d00", + "sha256:db65d2af507bbfbdcedb254a11149f894169d90488dd3e7190f7cdcb2d6cd57a", + "sha256:dee69d7015dc235f526fe80a9c90d65eb0039103fe565776250881731f06349f", + "sha256:e153e9cd40cc8945138822807139367f256f89c6810c2634a4f6902b52d3b4e2", + "sha256:e35b88984e7fa64aacecea39236cee32dd9bd8c55f57ba8a75cf2399553f9bd7", + "sha256:e53f3a38d3510c11953f3e6a33f205c6d1b001129f972805ca9b42fc308bc239", + "sha256:e9b0d8d0845bbc4cfcdcbcdbf5086886bc8157aa963c31c777ceff7846c77757", + "sha256:ec17c65562a827bba85e3872ead335f95405ea1674860d96483a02f5c698fa72", + "sha256:ecef2343af4cc68e05131e45024ba34f6095821988a9d0a02aa7c73fcc448aa9", + "sha256:ed5a841e8bb29a55fb8159ed526b26adc5bdd7e8bd7bf793ce647cb08656cdf4", + "sha256:ee17f18d2498f2673e432faaa71698032b0127ebf23ae5974eeaf806c279df24", + "sha256:f048da1b4f243fc44f205dfd320933a951b8d89e0afd4c7cacc762a8b9165207", + "sha256:f10207adf04d08bec185bae14d9606a1444715bc99180f9331c9c02093e1959e", + "sha256:f1d2f90aeec838a52f1c1a32fe9a619fefd5e411721a9117fbf82aea638fe8a1", + "sha256:f48107a8c637e80362555f37ecf49abe20370e557cc4ab374f04ec4423c97c3d", + "sha256:f7ee0e597f495cf415bcbd3da3caa3bd7e816b74d0d52b8145954c5e6fd3ff37", + "sha256:f93243fdc5657247533273ac4f86ae106cc6445a0efacb9a1bfe982fcfefd90c", + "sha256:f95393b4d66bfae908c3ca8d169d5f79cd65636ae15b5e7a4f6e67af675adb0e", + "sha256:fc38cba02d1acba4e2869eef1a57a43dfbd3d49a59bf90dda7444ec2be6a5570", + "sha256:fd0858c20f078a32cf55f7e81473d96dcf3b93fd2ccdb3d40fdf54b8573df3af", + "sha256:fd138803047fb4c062b1c1dd95462f5209456bfab55c734458f15d11da288f8f", + "sha256:fd2dbc472da1f772a4dae4fa24be938a6c544671a912e30529984dd80400cd88", + "sha256:fd6f30fdcf9ae2a70abd34da54f18da086160e4d7d9251f81f3da0ff84fc5a48", + "sha256:fe49d0a85038f36ba9e3ffafa1103e61170b28e95b16622e11be0a0ea07c6781" ], "markers": "python_version >= '3.9'", - "version": "==0.3.2" + "version": "==0.4.1" }, "protobuf": { "hashes": [ - "sha256:15eba1b86f193a407607112ceb9ea0ba9569aed24f93333fe9a497cf2fda37d3", - "sha256:501fe6372fd1c8ea2a30b4d9be8f87955a64d6be9c88a973996cef5ef6f0abf1", - "sha256:75a2aab2bd1aeb1f5dc7c5f33bcb11d82ea8c055c9becbb41c26a8c43fd7092c", - "sha256:7db8ed09024f115ac877a1427557b838705359f047b2ff2f2b2364892d19dacb", - "sha256:84f9e3c1ff6fb0308dbacb0950d8aa90694b0d0ee68e75719cb044b7078fe741", - "sha256:a81439049127067fc49ec1d36e25c6ee1d1a2b7be930675f919258d03c04e7d2", - "sha256:a8bdbb2f009cfc22a36d031f22a625a38b615b5e19e558a7b756b3279723e68e", - "sha256:ba377e5b67b908c8f3072a57b63e2c6a4cbd18aea4ed98d2584350dbf46f2783", - "sha256:d52691e5bee6c860fff9a1c86ad26a13afbeb4b168cd4445c922b7e2cf85aaf0" + "sha256:140303d5c8d2037730c548f8c7b93b20bb1dc301be280c378b82b8894589c954", + "sha256:25c9e1963c6734448ea2d308cfa610e692b801304ba0908d7bfa564ac5132995", + "sha256:35be49fd3f4fefa4e6e2aacc35e8b837d6703c37a2168a55ac21e9b1bc7559ef", + "sha256:905b07a65f1a4b72412314082c7dbfae91a9e8b68a0cc1577515f8df58ecf455", + "sha256:9a031d10f703f03768f2743a1c403af050b6ae1f3480e9c140f39c45f81b13ee", + "sha256:c963e86c3655af3a917962c9619e1a6b9670540351d7af9439d06064e3317cc9", + "sha256:cd33a8e38ea3e39df66e1bbc462b076d6e5ba3a4ebbde58219d777223a7873d3", + "sha256:d6101ded078042a8f17959eccd9236fb7a9ca20d3b0098bbcb91533a5680d035", + "sha256:e0697ece353e6239b90ee43a9231318302ad8353c70e6e45499fa52396debf90", + "sha256:e0a1715e4f27355afd9570f3ea369735afc853a6c3951a6afe1f80d8569ad298" ], "markers": "python_version >= '3.9'", - "version": "==6.32.0" + "version": "==6.33.0" }, "ptyprocess": { "hashes": [ @@ -2029,10 +2261,11 @@ }, "py-cid": { "hashes": [ - "sha256:22f432cc6fb68d12a9c35dbdc92c95484fc49e31dfcb9e0efb0082233c5394e3", - "sha256:7c48a6ee0bc50fd114d4b24849cd689a31d3ad5bdf8fa073bf68f846fd58c5da" + "sha256:bd60f54372704b7f2c0565432bf052e9ba7d42f260d39e9f7dc9566802a445a6", + "sha256:eb0d14f35430787b978ffb66067d70ffaa9d85ecf62c950e792293193e705a75" ], - "version": "==0.3.0" + "markers": "python_version >= '3.10'", + "version": "==0.3.1" }, "py-ecc": { "hashes": [ @@ -2072,13 +2305,6 @@ ], "version": "==0.2.1" }, - "py-multihash": { - "hashes": [ - "sha256:a0602c99093587dfbf1634e2e8c7726de39374b0d68587a36093b4c237af6969", - "sha256:f0ade4de820afdc4b4aaa40464ec86c9da5cae3a4578cda2daab4b0eb7e5b18d" - ], - "version": "==0.2.3" - }, "py-solc-x": { "hashes": [ "sha256:6f6f7f47c8520bde73679624568ec343db9baca6914212b371896fad8697deca", @@ -2097,11 +2323,11 @@ }, "pycparser": { "hashes": [ - "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", - "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc" + "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", + "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934" ], "markers": "python_version >= '3.8'", - "version": "==2.22" + "version": "==2.23" }, "pycryptodome": { "hashes": [ @@ -2152,124 +2378,146 @@ }, "pydantic": { "hashes": [ - "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", - "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b" + "sha256:0f8cb9555000a4b5b617f66bfd2566264c4984b27589d3b845685983e8ea85ac", + "sha256:92d3d202a745d46f9be6df459ac5a064fdaa3c1c4cd8adcfa332ccf3c05f871e" ], "markers": "python_version >= '3.9'", - "version": "==2.11.7" + "version": "==2.12.4" }, "pydantic-core": { "hashes": [ - "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d", - "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac", - "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02", - "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", - "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4", - "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22", - "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", - "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec", - "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d", - "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b", - "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", - "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", - "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052", - "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", - "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", - "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c", - "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", - "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27", - "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", - "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8", - "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", - "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", - "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", - "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039", - "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca", - "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", - "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", - "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6", - "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782", - "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b", - "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", - "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", - "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", - "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7", - "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", - "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa", - "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", - "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", - "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", - "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", - "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", - "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", - "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", - "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2", - "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954", - "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b", - "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", - "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", - "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64", - "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", - "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9", - "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101", - "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d", - "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", - "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3", - "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", - "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", - "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", - "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d", - "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", - "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e", - "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", - "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808", - "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", - "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d", - "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", - "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e", - "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640", - "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", - "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", - "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", - "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a", - "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", - "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", - "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb", - "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", - "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", - "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d", - "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572", - "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", - "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29", - "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535", - "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", - "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", - "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", - "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", - "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", - "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", - "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", - "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9", - "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a", - "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3", - "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", - "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", - "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a", - "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", - "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c", - "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", - "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d" + "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", + "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", + "sha256:0384e2e1021894b1ff5a786dbf94771e2986ebe2869533874d7e43bc79c6f504", + "sha256:03b77d184b9eb40240ae9fd676ca364ce1085f203e1b1256f8ab9984dca80a84", + "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", + "sha256:05a2c8852530ad2812cb7914dc61a1125dc4e06252ee98e5638a12da6cc6fb6c", + "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", + "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", + "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", + "sha256:100baa204bb412b74fe285fb0f3a385256dad1d1879f0a5cb1499ed2e83d132a", + "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", + "sha256:16f80f7abe3351f8ea6858914ddc8c77e02578544a0ebc15b4c2e1a0e813b0b2", + "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", + "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", + "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", + "sha256:1f8d33a7f4d5a7889e60dc39856d76d09333d8a6ed0f5f1190635cbec70ec4ba", + "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", + "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", + "sha256:242a206cd0318f95cd21bdacff3fcc3aab23e79bba5cac3db5a841c9ef9c6963", + "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", + "sha256:266fb4cbf5e3cbd0b53669a6d1b039c45e3ce651fd5442eff4d07c2cc8d66808", + "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", + "sha256:287dad91cfb551c363dc62899a80e9e14da1f0e2b6ebde82c806612ca2a13ef1", + "sha256:29452c56df2ed968d18d7e21f4ab0ac55e71dc59524872f6fc57dcf4a3249ed2", + "sha256:299e0a22e7ae2b85c1a57f104538b2656e8ab1873511fd718a1c1c6f149b77b5", + "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", + "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", + "sha256:2c010c6ded393148374c0f6f0bf89d206bf3217f201faa0635dcd56bd1520f6b", + "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", + "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", + "sha256:33cb885e759a705b426baada1fe68cbb0a2e68e34c5d0d0289a364cf01709093", + "sha256:346285d28e4c8017da95144c7f3acd42740d637ff41946af5ce6e5e420502dd5", + "sha256:34a64bc3441dc1213096a20fe27e8e128bd3ff89921706e83c0b1ac971276594", + "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", + "sha256:378bec5c66998815d224c9ca994f1e14c0c21cb95d2f52b6021cc0b2a58f2a5a", + "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", + "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", + "sha256:4009935984bd36bd2c774e13f9a09563ce8de4abaa7226f5108262fa3e637284", + "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", + "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", + "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", + "sha256:4bc36bbc0b7584de96561184ad7f012478987882ebf9f9c389b23f432ea3d90f", + "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", + "sha256:56121965f7a4dc965bff783d70b907ddf3d57f6eba29b6d2e5dabfaf07799c51", + "sha256:58133647260ea01e4d0500089a8c4f07bd7aa6ce109682b1426394988d8aaacc", + "sha256:5921a4d3ca3aee735d9fd163808f5e8dd6c6972101e4adbda9a4667908849b97", + "sha256:5a4e67afbc95fa5c34cf27d9089bca7fcab4e51e57278d710320a70b956d1b9a", + "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", + "sha256:62de39db01b8d593e45871af2af9e497295db8d73b085f6bfd0b18c83c70a8f9", + "sha256:634e8609e89ceecea15e2d61bc9ac3718caaaa71963717bf3c8f38bfde64242c", + "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", + "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", + "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", + "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", + "sha256:6cb58b9c66f7e4179a2d5e0f849c48eff5c1fca560994d6eb6543abf955a149e", + "sha256:6f52298fbd394f9ed112d56f3d11aabd0d5bd27beb3084cc3d8ad069483b8941", + "sha256:707625ef0983fcfb461acfaf14de2067c5942c6bb0f3b4c99158bed6fedd3cf3", + "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", + "sha256:753e230374206729bf0a807954bcc6c150d3743928a73faffee51ac6557a03c3", + "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b", + "sha256:76ee27c6e9c7f16f47db7a94157112a2f3a00e958bc626e2f4ee8bec5c328fbe", + "sha256:77b63866ca88d804225eaa4af3e664c5faf3568cea95360d21f4725ab6e07146", + "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", + "sha256:7b93a4d08587e2b7e7882de461e82b6ed76d9026ce91ca7915e740ecc7855f60", + "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd", + "sha256:7f3bf998340c6d4b0c9a2f02d6a400e51f123b59565d74dc60d252ce888c260b", + "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", + "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", + "sha256:873e0d5b4fb9b89ef7c2d2a963ea7d02879d9da0da8d9d4933dee8ee86a8b460", + "sha256:88942d3a3dff3afc8288c21e565e476fc278902ae4d6d134f1eeda118cc830b1", + "sha256:8bfeaf8735be79f225f3fefab7f941c712aaca36f1128c9d7e2352ee1aa87bdf", + "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", + "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", + "sha256:93e8740d7503eb008aa2df04d3b9735f845d43ae845e6dcd2be0b55a2da43cd2", + "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", + "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", + "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", + "sha256:a3a52f6156e73e7ccb0f8cced536adccb7042be67cb45f9562e12b319c119da6", + "sha256:a668ce24de96165bb239160b3d854943128f4334822900534f2fe947930e5770", + "sha256:a75dafbf87d6276ddc5b2bf6fae5254e3d0876b626eb24969a574fff9149ee5d", + "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc", + "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", + "sha256:b2379fa7ed44ddecb5bfe4e48577d752db9fc10be00a6b7446e9663ba143de26", + "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", + "sha256:b5819cd790dbf0c5eb9f82c73c16b39a65dd6dd4d1439dcdea7816ec9adddab8", + "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", + "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", + "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", + "sha256:b96d5f26b05d03cc60f11a7761a5ded1741da411e7fe0909e27a5e6a0cb7b034", + "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", + "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", + "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56", + "sha256:c1df3d34aced70add6f867a8cf413e299177e0c22660cc767218373d0779487b", + "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", + "sha256:c8d8b4eb992936023be7dee581270af5c6e0697a8559895f527f5b7105ecd36a", + "sha256:c9e19dd6e28fdcaa5a1de679aec4141f691023916427ef9bae8584f9c2fb3b0e", + "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", + "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", + "sha256:d3a978c4f57a597908b7e697229d996d77a6d3c94901e9edee593adada95ce1a", + "sha256:d5160812ea7a8a2ffbe233d8da666880cad0cbaf5d4de74ae15c313213d62556", + "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", + "sha256:df3959765b553b9440adfd3c795617c352154e497a4eaf3752555cfb5da8fc49", + "sha256:dfa8a0c812ac681395907e71e1274819dec685fec28273a28905df579ef137e2", + "sha256:e25c479382d26a2a41b7ebea1043564a937db462816ea07afa8a44c0866d52f9", + "sha256:e4f4a984405e91527a0d62649ee21138f8e3d0ef103be488c1dc11a80d7f184b", + "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", + "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", + "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", + "sha256:e7b576130c69225432866fe2f4a469a85a54ade141d96fd396dffcf607b558f8", + "sha256:e8465ab91a4bd96d36dde3263f06caa6a8a6019e4113f24dc753d79a8b3a3f82", + "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", + "sha256:ece5c59f0ce7d001e017643d8d24da587ea1f74f6993467d85ae8a5ef9d4f42b", + "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", + "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", + "sha256:f0cd744688278965817fd0839c4a4116add48d23890d468bc436f78beb28abf5", + "sha256:f14f8f046c14563f8eb3f45f499cc658ab8d10072961e07225e507adb700e93f", + "sha256:f15489ba13d61f670dcc96772e733aad1a6f9c429cc27574c6cdaed82d0146ad", + "sha256:f31d95a179f8d64d90f6831d71fa93290893a33148d890ba15de25642c5d075b", + "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", + "sha256:f41eb9797986d6ebac5e8edff36d5cef9de40def462311b3eb3eeded1431e425", + "sha256:f547144f2966e1e16ae626d8ce72b4cfa0caedc7fa28052001c94fb2fcaa1c52" ], "markers": "python_version >= '3.9'", - "version": "==2.33.2" + "version": "==2.41.5" }, "pydantic-settings": { "hashes": [ - "sha256:06f0062169818d0f5524420a360d632d5857b83cffd4d42fe29597807a1614ee", - "sha256:a60952460b99cf661dc25c29c0ef171721f98bfcb52ef8d9ea4c943d7c8cc796" + "sha256:d0e87a1c7d33593beb7194adb8470fc426e95ba02af83a0f23474a04c9a08180", + "sha256:fe2cea3413b9530d10f3a5875adffb17ada5c1e1bab0b2885546d7310415207c" ], "markers": "python_version >= '3.9'", - "version": "==2.10.1" + "version": "==2.11.0" }, "pyflakes": { "hashes": [ @@ -2287,6 +2535,13 @@ "markers": "python_version >= '3.8'", "version": "==2.19.2" }, + "pymultihash": { + "hashes": [ + "sha256:49c75a1ae9ecc6d22d259064d4597b3685da3f0258f4ded632e03a3a79af215b", + "sha256:f7fa840b24bd6acbd6b073fcd330f10e15619387297babf1dd13ca4dae6e8209" + ], + "version": "==0.8.2" + }, "pyproject-api": { "hashes": [ "sha256:1817dc018adc0d1ff9ca1ed8c60e1623d5aaca40814b953af14a9cf9a5cae538", @@ -2297,11 +2552,11 @@ }, "pytest": { "hashes": [ - "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", - "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c" + "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", + "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79" ], "markers": "python_version >= '3.9'", - "version": "==8.4.1" + "version": "==8.4.2" }, "python-baseconv": { "hashes": [ @@ -2319,11 +2574,19 @@ }, "python-dotenv": { "hashes": [ - "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc", - "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab" + "sha256:42667e897e16ab0d66954af0e60a9caa94f0fd4ecf3aaf6d2d260eec1aa36ad6", + "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61" ], "markers": "python_version >= '3.9'", - "version": "==1.1.1" + "version": "==1.2.1" + }, + "pytokens": { + "hashes": [ + "sha256:2f932b14ed08de5fcf0b391ace2642f858f1394c0857202959000b68ed7a458a", + "sha256:95b2b5eaf832e469d141a378872480ede3f251a5a5041b8ec6e581d3ac71bbf3" + ], + "markers": "python_version >= '3.8'", + "version": "==0.3.0" }, "pytz": { "hashes": [ @@ -2334,172 +2597,220 @@ }, "pyunormalize": { "hashes": [ - "sha256:2e1dfbb4a118154ae26f70710426a52a364b926c9191f764601f5a8cb12761f7", - "sha256:c647d95e5d1e2ea9a2f448d1d95d8518348df24eab5c3fd32d2b5c3300a49152" + "sha256:0949a3e56817e287febcaf1b0cc4b5adf0bb107628d379335938040947eec792", + "sha256:f0d93b076f938db2b26d319d04f2b58505d1cd7a80b5b72badbe7d1aa4d2a31c" ], - "markers": "python_version >= '3.6'", - "version": "==16.0.0" + "markers": "python_version >= '3.8'", + "version": "==17.0.0" }, "pyyaml": { "hashes": [ - "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff", - "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", - "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", - "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e", - "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", - "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", - "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", - "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", - "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", - "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", - "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a", - "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", - "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", - "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8", - "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", - "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19", - "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", - "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a", - "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", - "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", - "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", - "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631", - "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d", - "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", - "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", - "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", - "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", - "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", - "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", - "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706", - "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", - "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", - "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", - "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083", - "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", - "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", - "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", - "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f", - "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725", - "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", - "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", - "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", - "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", - "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", - "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5", - "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d", - "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290", - "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", - "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", - "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", - "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", - "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12", - "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4" + "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", + "sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a", + "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", + "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", + "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", + "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", + "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", + "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", + "sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0", + "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", + "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", + "sha256:22ba7cfcad58ef3ecddc7ed1db3409af68d023b7f940da23c6c2a1890976eda6", + "sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7", + "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", + "sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007", + "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", + "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", + "sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9", + "sha256:3ff07ec89bae51176c0549bc4c63aa6202991da2d9a6129d7aef7f1407d3f295", + "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", + "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", + "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", + "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", + "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", + "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", + "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", + "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", + "sha256:5cf4e27da7e3fbed4d6c3d8e797387aaad68102272f8f9752883bc32d61cb87b", + "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", + "sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5", + "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", + "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", + "sha256:6344df0d5755a2c9a276d4473ae6b90647e216ab4757f8426893b5dd2ac3f369", + "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", + "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", + "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", + "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", + "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", + "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", + "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", + "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", + "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", + "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", + "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", + "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", + "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", + "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", + "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", + "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", + "sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4", + "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", + "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", + "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", + "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", + "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", + "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", + "sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da", + "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", + "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", + "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", + "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", + "sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f", + "sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917", + "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", + "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", + "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", + "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", + "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", + "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", + "sha256:efd7b85f94a6f21e4932043973a7ba2613b059c4a000551892ac9f1d11f5baf3", + "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", + "sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926", + "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==6.0.2" + "version": "==6.0.3" }, "referencing": { "hashes": [ - "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", - "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0" + "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", + "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8" ], - "markers": "python_version >= '3.9'", - "version": "==0.36.2" + "markers": "python_version >= '3.10'", + "version": "==0.37.0" }, "regex": { "hashes": [ - "sha256:0200a5150c4cf61e407038f4b4d5cdad13e86345dac29ff9dab3d75d905cf130", - "sha256:02e5860a250cd350c4933cf376c3bc9cb28948e2c96a8bc042aee7b985cfa26f", - "sha256:075641c94126b064c65ab86e7e71fc3d63e7ff1bea1fb794f0773c97cdad3a03", - "sha256:0a5966220b9a1a88691282b7e4350e9599cf65780ca60d914a798cb791aa1177", - "sha256:0b85241d3cfb9f8a13cefdfbd58a2843f208f2ed2c88181bf84e22e0c7fc066d", - "sha256:1a764a83128af9c1a54be81485b34dca488cbcacefe1e1d543ef11fbace191e1", - "sha256:1e4f4f62599b8142362f164ce776f19d79bdd21273e86920a7b604a4275b4f59", - "sha256:20ff8433fa45e131f7316594efe24d4679c5449c0ca69d91c2f9d21846fdf064", - "sha256:24257953d5c1d6d3c129ab03414c07fc1a47833c9165d49b954190b2b7f21a1a", - "sha256:2d15a9da5fad793e35fb7be74eec450d968e05d2e294f3e0e77ab03fa7234a83", - "sha256:3157aa512b9e606586900888cd469a444f9b898ecb7f8931996cb715f77477f0", - "sha256:32b9f9bcf0f605eb094b08e8da72e44badabb63dde6b83bd530580b488d1c6da", - "sha256:33be70d75fa05a904ee0dc43b650844e067d14c849df7e82ad673541cd465b5f", - "sha256:35e43ebf5b18cd751ea81455b19acfdec402e82fe0dc6143edfae4c5c4b3909a", - "sha256:37555e4ae0b93358fa7c2d240a4291d4a4227cc7c607d8f85596cdb08ec0a083", - "sha256:3b836eb4a95526b263c2a3359308600bd95ce7848ebd3c29af0c37c4f9627cd3", - "sha256:4494f8fd95a77eb434039ad8460e64d57baa0434f1395b7da44015bef650d0e4", - "sha256:469142fb94a869beb25b5f18ea87646d21def10fbacb0bcb749224f3509476f0", - "sha256:48fb045bbd4aab2418dc1ba2088a5e32de4bfe64e1457b948bb328a8dc2f1c2e", - "sha256:4913f52fbc7a744aaebf53acd8d3dc1b519e46ba481d4d7596de3c862e011ada", - "sha256:4b7dc33b9b48fb37ead12ffc7bdb846ac72f99a80373c4da48f64b373a7abeae", - "sha256:4b8c4d39f451e64809912c82392933d80fe2e4a87eeef8859fcc5380d0173c64", - "sha256:4f42b522259c66e918a0121a12429b2abcf696c6f967fa37bdc7b72e61469f98", - "sha256:4fef81b2f7ea6a2029161ed6dea9ae13834c28eb5a95b8771828194a026621e4", - "sha256:524c868ba527eab4e8744a9287809579f54ae8c62fbf07d62aacd89f6026b282", - "sha256:57d25b6732ea93eeb1d090e8399b6235ca84a651b52d52d272ed37d3d2efa0f1", - "sha256:5d7de1ceed5a5f84f342ba4a9f4ae589524adf9744b2ee61b5da884b5b659834", - "sha256:6164b1d99dee1dfad33f301f174d8139d4368a9fb50bf0a3603b2eaf579963ad", - "sha256:656433e5b7dccc9bc0da6312da8eb897b81f5e560321ec413500e5367fcd5d47", - "sha256:69c593ff5a24c0d5c1112b0df9b09eae42b33c014bdca7022d6523b210b69f72", - "sha256:69ed3bc611540f2ea70a4080f853741ec698be556b1df404599f8724690edbcd", - "sha256:6c053f9647e3421dd2f5dff8172eb7b4eec129df9d1d2f7133a4386319b47435", - "sha256:6cef962d7834437fe8d3da6f9bfc6f93f20f218266dcefec0560ed7765f5fe01", - "sha256:70645cad3407d103d1dbcb4841839d2946f7d36cf38acbd40120fee1682151e5", - "sha256:716a47515ba1d03f8e8a61c5013041c8c90f2e21f055203498105d7571b44531", - "sha256:72a26dcc6a59c057b292f39d41465d8233a10fd69121fa24f8f43ec6294e5415", - "sha256:7373afae7cfb716e3b8e15d0184510d518f9d21471f2d62918dbece85f2c588f", - "sha256:739a74970e736df0773788377969c9fea3876c2fc13d0563f98e5503e5185f46", - "sha256:7bf1c5503a9f2cbd2f52d7e260acb3131b07b6273c470abb78568174fe6bde3f", - "sha256:7f7211a746aced993bef487de69307a38c5ddd79257d7be83f7b202cb59ddb50", - "sha256:8283afe7042d8270cecf27cca558873168e771183d4d593e3c5fe5f12402212a", - "sha256:85c3a958ef8b3d5079c763477e1f09e89d13ad22198a37e9d7b26b4b17438b33", - "sha256:89c9504fc96268e8e74b0283e548f53a80c421182a2007e3365805b74ceef936", - "sha256:95b4639c77d414efa93c8de14ce3f7965a94d007e068a94f9d4997bb9bd9c81f", - "sha256:95d538b10eb4621350a54bf14600cc80b514211d91a019dc74b8e23d2159ace5", - "sha256:96bbae4c616726f4661fe7bcad5952e10d25d3c51ddc388189d8864fbc1b3c68", - "sha256:98d0ce170fcde1a03b5df19c5650db22ab58af375aaa6ff07978a85c9f250f0e", - "sha256:9960d162f3fecf6af252534a1ae337e9c2e20d74469fed782903b24e2cc9d3d7", - "sha256:9a9ab52a466a9b4b91564437b36417b76033e8778e5af8f36be835d8cb370d62", - "sha256:9d644de5520441e5f7e2db63aec2748948cc39ed4d7a87fd5db578ea4043d997", - "sha256:9ead9765217afd04a86822dfcd4ed2747dfe426e887da413b15ff0ac2457e21a", - "sha256:9feab78a1ffa4f2b1e27b1bcdaad36f48c2fed4870264ce32f52a393db093c78", - "sha256:a16dd56bbcb7d10e62861c3cd000290ddff28ea142ffb5eb3470f183628011ac", - "sha256:a664291c31cae9c4a30589bd8bc2ebb56ef880c9c6264cb7643633831e606a4d", - "sha256:aaef1f056d96a0a5d53ad47d019d5b4c66fe4be2da87016e0d43b7242599ffc7", - "sha256:baf2fe122a3db1c0b9f161aa44463d8f7e33eeeda47bb0309923deb743a18276", - "sha256:bca11d3c38a47c621769433c47f364b44e8043e0de8e482c5968b20ab90a3986", - "sha256:c1844be23cd40135b3a5a4dd298e1e0c0cb36757364dd6cdc6025770363e06c1", - "sha256:c3c9740a77aeef3f5e3aaab92403946a8d34437db930a0280e7e81ddcada61f5", - "sha256:c436fd1e95c04c19039668cfb548450a37c13f051e8659f40aed426e36b3765f", - "sha256:c7f663ccc4093877f55b51477522abd7299a14c5bb7626c5238599db6a0cb95d", - "sha256:c83aec91af9c6fbf7c743274fd952272403ad9a9db05fe9bfc9df8d12b45f176", - "sha256:cbe1698e5b80298dbce8df4d8d1182279fbdaf1044e864cbc9d53c20e4a2be77", - "sha256:cbfaa401d77334613cf434f723c7e8ba585df162be76474bccc53ae4e5520b3a", - "sha256:d03c6f9dcd562c56527c42b8530aad93193e0b3254a588be1f2ed378cdfdea1b", - "sha256:d428fc7731dcbb4e2ffe43aeb8f90775ad155e7db4347a639768bc6cd2df881a", - "sha256:d5273fddf7a3e602695c92716c420c377599ed3c853ea669c1fe26218867002f", - "sha256:d600e58ee6d036081c89696d2bdd55d507498a7180df2e19945c6642fac59588", - "sha256:d72765a4bff8c43711d5b0f5b452991a9947853dfa471972169b3cc0ba1d0751", - "sha256:d856164d25e2b3b07b779bfed813eb4b6b6ce73c2fd818d46f47c1eb5cd79bd6", - "sha256:da304313761b8500b8e175eb2040c4394a875837d5635f6256d6fa0377ad32c8", - "sha256:da7507d083ee33ccea1310447410c27ca11fb9ef18c95899ca57ff60a7e4d8f1", - "sha256:dde35e2afbbe2272f8abee3b9fe6772d9b5a07d82607b5788e8508974059925c", - "sha256:e154a7ee7fa18333ad90b20e16ef84daaeac61877c8ef942ec8dfa50dc38b7a1", - "sha256:e4636a7f3b65a5f340ed9ddf53585c42e3ff37101d383ed321bfe5660481744b", - "sha256:e91eb2c62c39705e17b4d42d4b86c4e86c884c0d15d9c5a47d0835f8387add8e", - "sha256:ea74cf81fe61a7e9d77989050d0089a927ab758c29dac4e8e1b6c06fccf3ebf0", - "sha256:ee38926f31f1aa61b0232a3a11b83461f7807661c062df9eb88769d86e6195c3", - "sha256:efac4db9e044d47fd3b6b0d40b6708f4dfa2d8131a5ac1d604064147c0f552fd", - "sha256:f14b36e6d4d07f1a5060f28ef3b3561c5d95eb0651741474ce4c0a4c56ba8719", - "sha256:f3e5c1e0925e77ec46ddc736b756a6da50d4df4ee3f69536ffb2373460e2dafd", - "sha256:f3f6e8e7af516a7549412ce57613e859c3be27d55341a894aacaa11703a4c31a", - "sha256:f7f3071b5faa605b0ea51ec4bb3ea7257277446b053f4fd3ad02b1dcb4e64353", - "sha256:f978ddfb6216028c8f1d6b0f7ef779949498b64117fc35a939022f67f810bdcb", - "sha256:fa1cdfb8db96ef20137de5587954c812821966c3e8b48ffc871e22d7ec0a4938", - "sha256:fb31080f2bd0681484b275461b202b5ad182f52c9ec606052020fe13eb13a72f", - "sha256:fd5edc3f453de727af267c7909d083e19f6426fc9dd149e332b6034f2a5611e6" + "sha256:04d2765516395cf7dda331a244a3282c0f5ae96075f728629287dfa6f76ba70a", + "sha256:087511f5c8b7dfbe3a03f5d5ad0c2a33861b1fc387f21f6f60825a44865a385a", + "sha256:08b884f4226602ad40c5d55f52bf91a9df30f513864e0054bad40c0e9cf1afb7", + "sha256:0d31e08426ff4b5b650f68839f5af51a92a5b51abd8554a60c2fbc7c71f25d0b", + "sha256:0f9397d561a4c16829d4e6ff75202c1c08b68a3bdbfe29dbfcdb31c9830907c6", + "sha256:10483eefbfb0adb18ee9474498c9a32fcf4e594fbca0543bb94c48bac6183e2e", + "sha256:149eb0bba95231fb4f6d37c8f760ec9fa6fabf65bab555e128dde5f2475193ec", + "sha256:1e00ec2970aab10dc5db34af535f21fcf32b4a31d99e34963419636e2f85ae39", + "sha256:1eb1ebf6822b756c723e09f5186473d93236c06c579d2cc0671a722d2ab14281", + "sha256:1fedc720f9bb2494ce31a58a1631f9c82df6a09b49c19517ea5cc280b4541e01", + "sha256:1ff0d190c7f68ae7769cd0313fe45820ba07ffebfddfaa89cc1eb70827ba0ddc", + "sha256:2292cd5a90dab247f9abe892ac584cb24f0f54680c73fcb4a7493c66c2bf2467", + "sha256:22b29dda7e1f7062a52359fca6e58e548e28c6686f205e780b02ad8ef710de36", + "sha256:22c12d837298651e5550ac1d964e4ff57c3f56965fc1812c90c9fb2028eaf267", + "sha256:22dd622a402aad4558277305350699b2be14bc59f64d64ae1d928ce7d072dced", + "sha256:22e7d1cdfa88ef33a2ae6aa0d707f9255eb286ffbd90045f1088246833223aee", + "sha256:28ba4d69171fc6e9896337d4fc63a43660002b7da53fc15ac992abcf3410917c", + "sha256:2ab815eb8a96379a27c3b6157fcb127c8f59c36f043c1678110cea492868f1d5", + "sha256:2b441a4ae2c8049106e8b39973bfbddfb25a179dda2bdb99b0eeb60c40a6a3af", + "sha256:2fa2eed3f76677777345d2f81ee89f5de2f5745910e805f7af7386a920fa7313", + "sha256:32f74f35ff0f25a5021373ac61442edcb150731fbaa28286bbc8bb1582c89d02", + "sha256:3809988f0a8b8c9dcc0f92478d6501fac7200b9ec56aecf0ec21f4a2ec4b6009", + "sha256:3839967cf4dc4b985e1570fd8d91078f0c519f30491c60f9ac42a8db039be204", + "sha256:38af559ad934a7b35147716655d4a2f79fcef2d695ddfe06a06ba40ae631fa7e", + "sha256:3a91e4a29938bc1a082cc28fdea44be420bf2bebe2665343029723892eb073e1", + "sha256:3b30bc921d50365775c09a7ed446359e5c0179e9e2512beec4a60cbcef6ddd50", + "sha256:3b3a5f320136873cc5561098dfab677eea139521cb9a9e8db98b7e64aef44cbc", + "sha256:3bf28b1873a8af8bbb58c26cc56ea6e534d80053b41fb511a35795b6de507e6a", + "sha256:3e0b11b2b2433d1c39c7c7a30e3f3d0aeeea44c2a8d0bae28f6b95f639927a69", + "sha256:3e816cc9aac1cd3cc9a4ec4d860f06d40f994b5c7b4d03b93345f44e08cc68bf", + "sha256:3f8bf11a4827cc7ce5a53d4ef6cddd5ad25595d3c1435ef08f76825851343154", + "sha256:435bbad13e57eb5606a68443af62bed3556de2f46deb9f7d4237bc2f1c9fb3a0", + "sha256:43b4fb020e779ca81c1b5255015fe2b82816c76ec982354534ad9ec09ad7c9e3", + "sha256:442d86cf1cfe4faabf97db7d901ef58347efd004934da045c745e7b5bd57ac49", + "sha256:44f264d4bf02f3176467d90b294d59bf1db9fe53c141ff772f27a8b456b2a9ed", + "sha256:454d9b4ae7881afbc25015b8627c16d88a597479b9dea82b8c6e7e2e07240dc7", + "sha256:4aecb6f461316adf9f1f0f6a4a1a3d79e045f9b71ec76055a791affa3b285850", + "sha256:4bf146dca15cdd53224a1bf46d628bd7590e4a07fbb69e720d561aea43a32b38", + "sha256:4c5238d32f3c5269d9e87be0cf096437b7622b6920f5eac4fd202468aaeb34d2", + "sha256:4e1e592789704459900728d88d41a46fe3969b82ab62945560a31732ffc19a6d", + "sha256:509dc827f89c15c66a0c216331260d777dd6c81e9a4e4f830e662b0bb296c313", + "sha256:51c1c1847128238f54930edb8805b660305dca164645a9fd29243f5610beea34", + "sha256:5cf77eac15bd264986c4a2c63353212c095b40f3affb2bc6b4ef80c4776c1a28", + "sha256:5d9903ca42bfeec4cebedba8022a7c97ad2aab22e09573ce9976ba01b65e4361", + "sha256:61a08bcb0ec14ff4e0ed2044aad948d0659604f824cbd50b55e30b0ec6f09c73", + "sha256:62ba394a3dda9ad41c7c780f60f6e4a70988741415ae96f6d1bf6c239cf01379", + "sha256:639431bdc89d6429f6721625e8129413980ccd62e9d3f496be618a41d205f160", + "sha256:64350685ff08b1d3a6fff33f45a9ca183dc1d58bbfe4981604e70ec9801bbc26", + "sha256:6538241f45eb5a25aa575dbba1069ad786f68a4f2773a29a2bd3dd1f9de787be", + "sha256:669dcfb2e38f9e8c69507bace46f4889e3abbfd9b0c29719202883c0a603598f", + "sha256:66d559b21d3640203ab9075797a55165d79017520685fb407b9234d72ab63c62", + "sha256:6dd329a1b61c0ee95ba95385fb0c07ea0d3fe1a21e1349fa2bec272636217118", + "sha256:728a9d2d173a65b62bdc380b7932dd8e74ed4295279a8fe1021204ce210803e7", + "sha256:732aea6de26051af97b94bc98ed86448821f839d058e5d259c72bf6d73ad0fc0", + "sha256:74d04244852ff73b32eeede4f76f51c5bcf44bc3c207bc3e6cf1c5c45b890708", + "sha256:7521684c8c7c4f6e88e35ec89680ee1aa8358d3f09d27dfbdf62c446f5d4c695", + "sha256:75fa6f0056e7efb1f42a1c34e58be24072cb9e61a601340cc1196ae92326a4f9", + "sha256:78c2d02bb6e1da0720eedc0bad578049cad3f71050ef8cd065ecc87691bed2b0", + "sha256:795ea137b1d809eb6836b43748b12634291c0ed55ad50a7d72d21edf1cd565c4", + "sha256:7a50cd39f73faa34ec18d6720ee25ef10c4c1839514186fcda658a06c06057a2", + "sha256:7a7c7fdf755032ffdd72c77e3d8096bdcb0eb92e89e17571a196f03d88b11b3c", + "sha256:7be0277469bf3bd7a34a9c57c1b6a724532a0d235cd0dc4e7f4316f982c28b19", + "sha256:7eb542fd347ce61e1321b0a6b945d5701528dca0cd9759c2e3bb8bd57e47964d", + "sha256:7fe6e5440584e94cc4b3f5f4d98a25e29ca12dccf8873679a635638349831b98", + "sha256:81519e25707fc076978c6143b81ea3dc853f176895af05bf7ec51effe818aeec", + "sha256:838441333bc90b829406d4a03cb4b8bf7656231b84358628b0406d803931ef32", + "sha256:849202cd789e5f3cf5dcc7822c34b502181b4824a65ff20ce82da5524e45e8e9", + "sha256:856a25c73b697f2ce2a24e7968285579e62577a048526161a2c0f53090bea9f9", + "sha256:87eb52a81ef58c7ba4d45c3ca74e12aa4b4e77816f72ca25258a85b3ea96cb48", + "sha256:885b26aa3ee56433b630502dc3d36ba78d186a00cc535d3806e6bfd9ed3c70ab", + "sha256:8a3d571bd95fade53c86c0517f859477ff3a93c3fde10c9e669086f038e0f207", + "sha256:8e026094aa12b43f4fd74576714e987803a315c76edb6b098b9809db5de58f74", + "sha256:9697a52e57576c83139d7c6f213d64485d3df5bf84807c35fa409e6c970801c6", + "sha256:9b5aca4d5dfd7fbfbfbdaf44850fcc7709a01146a797536a8f84952e940cca76", + "sha256:9ddc42e68114e161e51e272f667d640f97e84a2b9ef14b7477c53aac20c2d59a", + "sha256:9f95fbaa0ee1610ec0fc6b26668e9917a582ba80c52cc6d9ada15e30aa9ab9ad", + "sha256:a12ab1f5c29b4e93db518f5e3872116b7e9b1646c9f9f426f777b50d44a09e8c", + "sha256:a295ca2bba5c1c885826ce3125fa0b9f702a1be547d821c01d65f199e10c01e2", + "sha256:a4cb042b615245d5ff9b3794f56be4138b5adc35a4166014d31d1814744148c7", + "sha256:adad1a1bcf1c9e76346e091d22d23ac54ef28e1365117d99521631078dfec9de", + "sha256:b4774ff32f18e0504bfc4e59a3e71e18d83bc1e171a3c8ed75013958a03b2f14", + "sha256:b6f78f98741dcc89607c16b1e9426ee46ce4bf31ac5e6b0d40e81c89f3481ea5", + "sha256:b7f9ee819f94c6abfa56ec7b1dbab586f41ebbdc0a57e6524bd5e7f487a878c7", + "sha256:ba0d8a5d7f04f73ee7d01d974d47c5834f8a1b0224390e4fe7c12a3a92a78ecc", + "sha256:bac4200befe50c670c405dc33af26dad5a3b6b255dd6c000d92fe4629f9ed6a5", + "sha256:bc8ab71e2e31b16e40868a40a69007bc305e1109bd4658eb6cad007e0bf67c41", + "sha256:bce22519c989bb72a7e6b36a199384c53db7722fe669ba891da75907fe3587db", + "sha256:bf3490bcbb985a1ae97b2ce9ad1c0f06a852d5b19dde9b07bdf25bf224248c95", + "sha256:c1e448051717a334891f2b9a620fe36776ebf3dd8ec46a0b877c8ae69575feb4", + "sha256:c54f768482cef41e219720013cd05933b6f971d9562544d691c68699bf2b6801", + "sha256:c56b4d162ca2b43318ac671c65bd4d563e841a694ac70e1a976ac38fcf4ca1d2", + "sha256:c9c30003b9347c24bcc210958c5d167b9e4f9be786cb380a7d32f14f9b84674f", + "sha256:cc4076a5b4f36d849fd709284b4a3b112326652f3b0466f04002a6c15a0c96c1", + "sha256:cfe6d3f0c9e3b7e8c0c694b24d25e677776f5ca26dce46fd6b0489f9c8339391", + "sha256:d6c2d5919075a1f2e413c00b056ea0c2f065b3f5fe83c3d07d325ab92dce51d6", + "sha256:d8b4a27eebd684319bdf473d39f1d79eed36bf2cd34bd4465cdb4618d82b3d56", + "sha256:dbe6095001465294f13f1adcd3311e50dd84e5a71525f20a10bd16689c61ce0b", + "sha256:dd16e78eb18ffdb25ee33a0682d17912e8cc8a770e885aeee95020046128f1ce", + "sha256:ddd76a9f58e6a00f8772e72cff8ebcff78e022be95edf018766707c730593e1e", + "sha256:df9eb838c44f570283712e7cff14c16329a9f0fb19ca492d21d4b7528ee6821e", + "sha256:dfec44d532be4c07088c3de2876130ff0fbeeacaa89a137decbbb5f665855a0f", + "sha256:e18bc3f73bd41243c9b38a6d9f2366cd0e0137a9aebe2d8ff76c5b67d4c0a3f4", + "sha256:e43586ce5bd28f9f285a6e729466841368c4a0353f6fd08d4ce4630843d3648a", + "sha256:e6b49cd2aad93a1790ce9cffb18964f6d3a4b0b3dbdbd5de094b65296fce6e58", + "sha256:e6c7a21dffba883234baefe91bc3388e629779582038f75d2a5be918e250f0ed", + "sha256:e721d1b46e25c481dc5ded6f4b3f66c897c58d2e8cfdf77bbced84339108b0b9", + "sha256:eadade04221641516fa25139273505a1c19f9bf97589a05bc4cfcd8b4a618031", + "sha256:ee3a83ce492074c35a74cc76cf8235d49e77b757193a5365ff86e3f2f93db9fd", + "sha256:f117efad42068f9715677c8523ed2be1518116d1c49b1dd17987716695181efe", + "sha256:f3b5a391c7597ffa96b41bd5cbd2ed0305f515fcbb367dfa72735679d5502364", + "sha256:f4ff94e58e84aedb9c9fce66d4ef9f27a190285b451420f297c9a09f2b9abee9", + "sha256:f99be08cfead2020c7ca6e396c13543baea32343b7a9a5780c462e323bd8872f", + "sha256:fd0a5e563c756de210bb964789b5abe4f114dacae9104a47e1a649b910361536", + "sha256:feff9e54ec0dd3833d659257f5c3f5322a12eee58ffa360984b716f8b92983f4", + "sha256:ffcca5b9efe948ba0661e9df0fa50d2bc4b097c70b9810212d6b62f05d83b2dd" ], "markers": "python_version >= '3.9'", - "version": "==2025.7.34" + "version": "==2025.11.3" }, "requests": { "hashes": [ @@ -2527,164 +2838,124 @@ }, "rpds-py": { "hashes": [ - "sha256:010c4843a3b92b54373e3d2291a7447d6c3fc29f591772cc2ea0e9f5c1da434b", - "sha256:05284439ebe7d9f5f5a668d4d8a0a1d851d16f7d47c78e1fab968c8ad30cab04", - "sha256:0665be515767dc727ffa5f74bd2ef60b0ff85dad6bb8f50d91eaa6b5fb226f51", - "sha256:069e0384a54f427bd65d7fda83b68a90606a3835901aaff42185fcd94f5a9295", - "sha256:08680820d23df1df0a0260f714d12966bc6c42d02e8055a91d61e03f0c47dda0", - "sha256:0954e3a92e1d62e83a54ea7b3fdc9efa5d61acef8488a8a3d31fdafbfb00460d", - "sha256:09965b314091829b378b60607022048953e25f0b396c2b70e7c4c81bcecf932e", - "sha256:0c431bfb91478d7cbe368d0a699978050d3b112d7f1d440a41e90faa325557fd", - "sha256:0f401c369186a5743694dd9fc08cba66cf70908757552e1f714bfc5219c655b5", - "sha256:0f4f69d7a4300fbf91efb1fb4916421bd57804c01ab938ab50ac9c4aa2212f03", - "sha256:11e8e28c0ba0373d052818b600474cfee2fafa6c9f36c8587d217b13ee28ca7d", - "sha256:130c1ffa5039a333f5926b09e346ab335f0d4ec393b030a18549a7c7e7c2cea4", - "sha256:1321bce595ad70e80f97f998db37356b2e22cf98094eba6fe91782e626da2f71", - "sha256:13bbc4846ae4c993f07c93feb21a24d8ec637573d567a924b1001e81c8ae80f9", - "sha256:14f028eb47f59e9169bfdf9f7ceafd29dd64902141840633683d0bad5b04ff34", - "sha256:15ea4d2e182345dd1b4286593601d766411b43f868924afe297570658c31a62b", - "sha256:181bc29e59e5e5e6e9d63b143ff4d5191224d355e246b5a48c88ce6b35c4e466", - "sha256:183f5e221ba3e283cd36fdfbe311d95cd87699a083330b4f792543987167eff1", - "sha256:184f0d7b342967f6cda94a07d0e1fae177d11d0b8f17d73e06e36ac02889f303", - "sha256:190d7285cd3bb6d31d37a0534d7359c1ee191eb194c511c301f32a4afa5a1dd4", - "sha256:19c990fdf5acecbf0623e906ae2e09ce1c58947197f9bced6bbd7482662231c4", - "sha256:1d66f45b9399036e890fb9c04e9f70c33857fd8f58ac8db9f3278cfa835440c3", - "sha256:203f581accef67300a942e49a37d74c12ceeef4514874c7cede21b012613ca2c", - "sha256:20e222a44ae9f507d0f2678ee3dd0c45ec1e930f6875d99b8459631c24058aec", - "sha256:2406d034635d1497c596c40c85f86ecf2bf9611c1df73d14078af8444fe48031", - "sha256:249ab91ceaa6b41abc5f19513cb95b45c6f956f6b89f1fe3d99c81255a849f9e", - "sha256:25a4aebf8ca02bbb90a9b3e7a463bbf3bee02ab1c446840ca07b1695a68ce424", - "sha256:27bac29bbbf39601b2aab474daf99dbc8e7176ca3389237a23944b17f8913d97", - "sha256:299a245537e697f28a7511d01038c310ac74e8ea213c0019e1fc65f52c0dcb23", - "sha256:2cff9bdd6c7b906cc562a505c04a57d92e82d37200027e8d362518df427f96cd", - "sha256:2e307cb5f66c59ede95c00e93cd84190a5b7f3533d7953690b2036780622ba81", - "sha256:2e39169ac6aae06dd79c07c8a69d9da867cef6a6d7883a0186b46bb46ccfb0c3", - "sha256:2fe6e18e5c8581f0361b35ae575043c7029d0a92cb3429e6e596c2cdde251432", - "sha256:3001013dae10f806380ba739d40dee11db1ecb91684febb8406a87c2ded23dae", - "sha256:32196b5a99821476537b3f7732432d64d93a58d680a52c5e12a190ee0135d8b5", - "sha256:33ba649a6e55ae3808e4c39e01580dc9a9b0d5b02e77b66bb86ef117922b1264", - "sha256:341d8acb6724c0c17bdf714319c393bb27f6d23d39bc74f94221b3e59fc31828", - "sha256:343cf24de9ed6c728abefc5d5c851d5de06497caa7ac37e5e65dd572921ed1b5", - "sha256:36184b44bf60a480863e51021c26aca3dfe8dd2f5eeabb33622b132b9d8b8b54", - "sha256:3841f66c1ffdc6cebce8aed64e36db71466f1dc23c0d9a5592e2a782a3042c79", - "sha256:4045e2fc4b37ec4b48e8907a5819bdd3380708c139d7cc358f03a3653abedb89", - "sha256:419dd9c98bcc9fb0242be89e0c6e922df333b975d4268faa90d58499fd9c9ebe", - "sha256:42894616da0fc0dcb2ec08a77896c3f56e9cb2f4b66acd76fc8992c3557ceb1c", - "sha256:42ccc57ff99166a55a59d8c7d14f1a357b7749f9ed3584df74053fd098243451", - "sha256:4300e15e7d03660f04be84a125d1bdd0e6b2f674bc0723bc0fd0122f1a4585dc", - "sha256:443d239d02d9ae55b74015234f2cd8eb09e59fbba30bf60baeb3123ad4c6d5ff", - "sha256:44524b96481a4c9b8e6c46d6afe43fa1fb485c261e359fbe32b63ff60e3884d8", - "sha256:45d04a73c54b6a5fd2bab91a4b5bc8b426949586e61340e212a8484919183859", - "sha256:46f48482c1a4748ab2773f75fffbdd1951eb59794e32788834b945da857c47a8", - "sha256:4790c9d5dd565ddb3e9f656092f57268951398cef52e364c405ed3112dc7c7c1", - "sha256:4bc262ace5a1a7dc3e2eac2fa97b8257ae795389f688b5adf22c5db1e2431c43", - "sha256:4c3f8a0d4802df34fcdbeb3dfe3a4d8c9a530baea8fafdf80816fcaac5379d83", - "sha256:5355527adaa713ab693cbce7c1e0ec71682f599f61b128cf19d07e5c13c9b1f1", - "sha256:555ed147cbe8c8f76e72a4c6cd3b7b761cbf9987891b9448808148204aed74a5", - "sha256:55d42a0ef2bdf6bc81e1cc2d49d12460f63c6ae1423c4f4851b828e454ccf6f1", - "sha256:59195dc244fc183209cf8a93406889cadde47dfd2f0a6b137783aa9c56d67c85", - "sha256:59714ab0a5af25d723d8e9816638faf7f4254234decb7d212715c1aa71eee7be", - "sha256:5b3a5c8089eed498a3af23ce87a80805ff98f6ef8f7bdb70bd1b7dae5105f6ac", - "sha256:5d6790ff400254137b81b8053b34417e2c46921e302d655181d55ea46df58cf7", - "sha256:5df559e9e7644d9042f626f2c3997b555f347d7a855a15f170b253f6c5bfe358", - "sha256:5fa01b3d5e3b7d97efab65bd3d88f164e289ec323a8c033c5c38e53ee25c007e", - "sha256:61490d57e82e23b45c66f96184237994bfafa914433b8cd1a9bb57fecfced59d", - "sha256:6168af0be75bba990a39f9431cdfae5f0ad501f4af32ae62e8856307200517b8", - "sha256:64a0fe3f334a40b989812de70160de6b0ec7e3c9e4a04c0bbc48d97c5d3600ae", - "sha256:64f689ab822f9b5eb6dfc69893b4b9366db1d2420f7db1f6a2adf2a9ca15ad64", - "sha256:699c346abc73993962cac7bb4f02f58e438840fa5458a048d3a178a7a670ba86", - "sha256:6b96b0b784fe5fd03beffff2b1533dc0d85e92bab8d1b2c24ef3a5dc8fac5669", - "sha256:6bde37765564cd22a676dd8101b657839a1854cfaa9c382c5abf6ff7accfd4ae", - "sha256:6c135708e987f46053e0a1246a206f53717f9fadfba27174a9769ad4befba5c3", - "sha256:6c27a7054b5224710fcfb1a626ec3ff4f28bcb89b899148c72873b18210e446b", - "sha256:6de6a7f622860af0146cb9ee148682ff4d0cea0b8fd3ad51ce4d40efb2f061d0", - "sha256:737005088449ddd3b3df5a95476ee1c2c5c669f5c30eed909548a92939c0e12d", - "sha256:7451ede3560086abe1aa27dcdcf55cd15c96b56f543fb12e5826eee6f721f858", - "sha256:7873b65686a6471c0037139aa000d23fe94628e0daaa27b6e40607c90e3f5ec4", - "sha256:79af163a4b40bbd8cfd7ca86ec8b54b81121d3b213b4435ea27d6568bcba3e9d", - "sha256:7aed8118ae20515974650d08eb724150dc2e20c2814bcc307089569995e88a14", - "sha256:7cf9bc4508efb18d8dff6934b602324eb9f8c6644749627ce001d6f38a490889", - "sha256:7e57906e38583a2cba67046a09c2637e23297618dc1f3caddbc493f2be97c93f", - "sha256:7ec85994f96a58cf7ed288caa344b7fe31fd1d503bdf13d7331ead5f70ab60d5", - "sha256:81f81bbd7cdb4bdc418c09a73809abeda8f263a6bf8f9c7f93ed98b5597af39d", - "sha256:86aca1616922b40d8ac1b3073a1ead4255a2f13405e5700c01f7c8d29a03972d", - "sha256:88051c3b7d5325409f433c5a40328fcb0685fc04e5db49ff936e910901d10114", - "sha256:887ab1f12b0d227e9260558a4a2320024b20102207ada65c43e1ffc4546df72e", - "sha256:8a06aa1197ec0281eb1d7daf6073e199eb832fe591ffa329b88bae28f25f5fe5", - "sha256:8a1dca5507fa1337f75dcd5070218b20bc68cf8844271c923c1b79dfcbc20391", - "sha256:8b23cf252f180cda89220b378d917180f29d313cd6a07b2431c0d3b776aae86f", - "sha256:8d0e09cf4863c74106b5265c2c310f36146e2b445ff7b3018a56799f28f39f6f", - "sha256:8de567dec6d451649a781633d36f5c7501711adee329d76c095be2178855b042", - "sha256:90fb790138c1a89a2e58c9282fe1089638401f2f3b8dddd758499041bc6e0774", - "sha256:92f3b3ec3e6008a1fe00b7c0946a170f161ac00645cde35e3c9a68c2475e8156", - "sha256:935afcdea4751b0ac918047a2df3f720212892347767aea28f5b3bf7be4f27c0", - "sha256:9a0ff7ee28583ab30a52f371b40f54e7138c52ca67f8ca17ccb7ccf0b383cb5f", - "sha256:9ad08547995a57e74fea6abaf5940d399447935faebbd2612b3b0ca6f987946b", - "sha256:9b2a4e17bfd68536c3b801800941c95a1d4a06e3cada11c146093ba939d9638d", - "sha256:9b78430703cfcf5f5e86eb74027a1ed03a93509273d7c705babb547f03e60016", - "sha256:9d0f92b78cfc3b74a42239fdd8c1266f4715b573204c234d2f9fc3fc7a24f185", - "sha256:9da162b718b12c4219eeeeb68a5b7552fbc7aadedf2efee440f88b9c0e54b45d", - "sha256:a00c91104c173c9043bc46f7b30ee5e6d2f6b1149f11f545580f5d6fdff42c0b", - "sha256:a029be818059870664157194e46ce0e995082ac49926f1423c1f058534d2aaa9", - "sha256:a1b3db5fae5cbce2131b7420a3f83553d4d89514c03d67804ced36161fe8b6b2", - "sha256:a4cf32a26fa744101b67bfd28c55d992cd19438aff611a46cac7f066afca8fd4", - "sha256:aa0bf113d15e8abdfee92aa4db86761b709a09954083afcb5bf0f952d6065fdb", - "sha256:ab47fe727c13c09d0e6f508e3a49e545008e23bf762a245b020391b621f5b726", - "sha256:af22763a0a1eff106426a6e1f13c4582e0d0ad89c1493ab6c058236174cd6c6a", - "sha256:af9d4fd79ee1cc8e7caf693ee02737daabfc0fcf2773ca0a4735b356c8ad6f7c", - "sha256:b1fef1f13c842a39a03409e30ca0bf87b39a1e2a305a9924deadb75a43105d23", - "sha256:b2eff8ee57c5996b0d2a07c3601fb4ce5fbc37547344a26945dd9e5cbd1ed27a", - "sha256:b4c4fbbcff474e1e5f38be1bf04511c03d492d42eec0babda5d03af3b5589374", - "sha256:b8a4131698b6992b2a56015f51646711ec5d893a0b314a4b985477868e240c87", - "sha256:b8a7acf04fda1f30f1007f3cc96d29d8cf0a53e626e4e1655fdf4eabc082d367", - "sha256:ba783541be46f27c8faea5a6645e193943c17ea2f0ffe593639d906a327a9bcc", - "sha256:be0744661afbc4099fef7f4e604e7f1ea1be1dd7284f357924af12a705cc7d5c", - "sha256:be3964f7312ea05ed283b20f87cb533fdc555b2e428cc7be64612c0b2124f08c", - "sha256:be806e2961cd390a89d6c3ce8c2ae34271cfcd05660f716257838bb560f1c3b6", - "sha256:bec77545d188f8bdd29d42bccb9191682a46fb2e655e3d1fb446d47c55ac3b8d", - "sha256:c10d92fb6d7fd827e44055fcd932ad93dac6a11e832d51534d77b97d1d85400f", - "sha256:c3782fb753aa825b4ccabc04292e07897e2fd941448eabf666856c5530277626", - "sha256:c9ce7a9e967afc0a2af7caa0d15a3e9c1054815f73d6a8cb9225b61921b419bd", - "sha256:cb0702c12983be3b2fab98ead349ac63a98216d28dda6f518f52da5498a27a1b", - "sha256:cbc619e84a5e3ab2d452de831c88bdcad824414e9c2d28cd101f94dbdf26329c", - "sha256:ce4ed8e0c7dbc5b19352b9c2c6131dd23b95fa8698b5cdd076307a33626b72dc", - "sha256:ce96ab0bdfcef1b8c371ada2100767ace6804ea35aacce0aef3aeb4f3f499ca8", - "sha256:cf824aceaeffff029ccfba0da637d432ca71ab21f13e7f6f5179cd88ebc77a8a", - "sha256:d2a81bdcfde4245468f7030a75a37d50400ac2455c3a4819d9d550c937f90ab5", - "sha256:d2cc2b34f9e1d31ce255174da82902ad75bd7c0d88a33df54a77a22f2ef421ee", - "sha256:d2f184336bc1d6abfaaa1262ed42739c3789b1e3a65a29916a615307d22ffd2e", - "sha256:d3c622c39f04d5751408f5b801ecb527e6e0a471b367f420a877f7a660d583f6", - "sha256:d7cf5e726b6fa977e428a61880fb108a62f28b6d0c7ef675b117eaff7076df49", - "sha256:d85d784c619370d9329bbd670f41ff5f2ae62ea4519761b679d0f57f0f0ee267", - "sha256:d93ebdb82363d2e7bec64eecdc3632b59e84bd270d74fe5be1659f7787052f9b", - "sha256:db8a6313dbac934193fc17fe7610f70cd8181c542a91382531bef5ed785e5615", - "sha256:dbc2ab5d10544eb485baa76c63c501303b716a5c405ff2469a1d8ceffaabf622", - "sha256:dbd749cff1defbde270ca346b69b3baf5f1297213ef322254bf2a28537f0b046", - "sha256:dc662bc9375a6a394b62dfd331874c434819f10ee3902123200dbcf116963f89", - "sha256:dc6b0d5a1ea0318ef2def2b6a55dccf1dcaf77d605672347271ed7b829860765", - "sha256:dc79d192fb76fc0c84f2c58672c17bbbc383fd26c3cdc29daae16ce3d927e8b2", - "sha256:dd2c1d27ebfe6a015cfa2005b7fe8c52d5019f7bbdd801bc6f7499aab9ae739e", - "sha256:dea0808153f1fbbad772669d906cddd92100277533a03845de6893cadeffc8be", - "sha256:e0d7151a1bd5d0a203a5008fc4ae51a159a610cb82ab0a9b2c4d80241745582e", - "sha256:e14aab02258cb776a108107bd15f5b5e4a1bbaa61ef33b36693dfab6f89d54f9", - "sha256:e24d8031a2c62f34853756d9208eeafa6b940a1efcbfe36e8f57d99d52bb7261", - "sha256:e36c80c49853b3ffda7aa1831bf175c13356b210c73128c861f3aa93c3cc4015", - "sha256:e377e4cf8795cdbdff75b8f0223d7b6c68ff4fef36799d88ccf3a995a91c0112", - "sha256:e3acb9c16530362aeaef4e84d57db357002dc5cbfac9a23414c3e73c08301ab2", - "sha256:e3dc8d4ede2dbae6c0fc2b6c958bf51ce9fd7e9b40c0f5b8835c3fde44f5807d", - "sha256:e6491658dd2569f05860bad645569145c8626ac231877b0fb2d5f9bcb7054089", - "sha256:eb91d252b35004a84670dfeafadb042528b19842a0080d8b53e5ec1128e8f433", - "sha256:f0396e894bd1e66c74ecbc08b4f6a03dc331140942c4b1d345dd131b68574a60", - "sha256:f09c9d4c26fa79c1bad927efb05aca2391350b8e61c38cbc0d7d3c814e463124", - "sha256:f3cd110e02c5bf17d8fb562f6c9df5c20e73029d587cf8602a2da6c5ef1e32cb", - "sha256:f7a37dd208f0d658e0487522078b1ed68cd6bce20ef4b5a915d2809b9094b410", - "sha256:fae4a01ef8c4cb2bbe92ef2063149596907dc4a881a8d26743b3f6b304713171", - "sha256:fc327f4497b7087d06204235199daf208fd01c82d80465dc5efa4ec9df1c5b4e", - "sha256:fcc01c57ce6e70b728af02b2401c5bc853a9e14eb07deda30624374f0aebfe42", - "sha256:fde355b02934cc6b07200cc3b27ab0c15870a757d1a72fd401aa92e2ea3c6bfe" + "sha256:03065002fd2e287725d95fbc69688e0c6daf6c6314ba38bdbaa3895418e09296", + "sha256:04c1b207ab8b581108801528d59ad80aa83bb170b35b0ddffb29c20e411acdc1", + "sha256:05cf1e74900e8da73fa08cc76c74a03345e5a3e37691d07cfe2092d7d8e27b04", + "sha256:0a403460c9dd91a7f23fc3188de6d8977f1d9603a351d5db6cf20aaea95b538d", + "sha256:0cb7203c7bc69d7c1585ebb33a2e6074492d2fc21ad28a7b9d40457ac2a51ab7", + "sha256:0d3259ea9ad8743a75a43eb7819324cdab393263c91be86e2d1901ee65c314e0", + "sha256:1571ae4292649100d743b26d5f9c63503bb1fedf538a8f29a98dce2d5ba6b4e6", + "sha256:1a4c6b05c685c0c03f80dabaeb73e74218c49deea965ca63f76a752807397207", + "sha256:1e8ee6413cfc677ce8898d9cde18cc3a60fc2ba756b0dec5b71eb6eb21c49fa1", + "sha256:1f0cfd1c69e2d14f8c892b893997fa9a60d890a0c8a603e88dca4955f26d1edd", + "sha256:23690b5827e643150cf7b49569679ec13fe9a610a15949ed48b85eb7f98f34ec", + "sha256:2374e16cc9131022e7d9a8f8d65d261d9ba55048c78f3b6e017971a4f5e6353c", + "sha256:24743a7b372e9a76171f6b69c01aedf927e8ac3e16c474d9fe20d552a8cb45c7", + "sha256:25dbade8fbf30bcc551cb352376c0ad64b067e4fc56f90e22ba70c3ce205988c", + "sha256:28ea02215f262b6d078daec0b45344c89e161eab9526b0d898221d96fdda5f27", + "sha256:2e42456917b6687215b3e606ab46aa6bca040c77af7df9a08a6dcfe8a4d10ca5", + "sha256:2e8456b6ee5527112ff2354dd9087b030e3429e43a74f480d4a5ca79d269fd85", + "sha256:3114f4db69ac5a1f32e7e4d1cbbe7c8f9cf8217f78e6e002cedf2d54c2a548ed", + "sha256:31eb671150b9c62409a888850aaa8e6533635704fe2b78335f9aaf7ff81eec4d", + "sha256:389c29045ee8bbb1627ea190b4976a310a295559eaf9f1464a1a6f2bf84dde78", + "sha256:3aa4dc0fdab4a7029ac63959a3ccf4ed605fee048ba67ce89ca3168da34a1342", + "sha256:3c03002f54cc855860bfdc3442928ffdca9081e73b5b382ed0b9e8efe6e5e205", + "sha256:46959ef2e64f9e4a41fc89aa20dbca2b85531f9a72c21099a3360f35d10b0d5a", + "sha256:48b55c1f64482f7d8bd39942f376bfdf2f6aec637ee8c805b5041e14eeb771db", + "sha256:4b0cb8a906b1a0196b863d460c0222fb8ad0f34041568da5620f9799b83ccf0b", + "sha256:4c6c4db5d73d179746951486df97fd25e92396be07fc29ee8ff9a8f5afbdfb27", + "sha256:4e27d3a5709cc2b3e013bf93679a849213c79ae0573f9b894b284b55e729e120", + "sha256:4fe0438ac4a29a520ea94c8c7f1754cdd8feb1bc490dfda1bfd990072363d527", + "sha256:5338742f6ba7a51012ea470bd4dc600a8c713c0c72adaa0977a1b1f4327d6592", + "sha256:5a7306c19b19005ad98468fcefeb7100b19c79fc23a5f24a12e06d91181193fa", + "sha256:5ae8ee156d6b586e4292491e885d41483136ab994e719a13458055bec14cf370", + "sha256:5b43c6a3726efd50f18d8120ec0551241c38785b68952d240c45ea553912ac41", + "sha256:5cfa9af45e7c1140af7321fa0bef25b386ee9faa8928c80dc3a5360971a29e8c", + "sha256:5d0145edba8abd3db0ab22b5300c99dc152f5c9021fab861be0f0544dc3cbc5f", + "sha256:5d3fd16b6dc89c73a4da0b4ac8b12a7ecc75b2864b95c9e5afed8003cb50a728", + "sha256:5ee514e0f0523db5d3fb171f397c54875dbbd69760a414dccf9d4d7ad628b5bd", + "sha256:5f3fa06d27fdcee47f07a39e02862da0100cb4982508f5ead53ec533cd5fe55e", + "sha256:66e6fa8e075b58946e76a78e69e1a124a21d9a48a5b4766d15ba5b06869d1fa1", + "sha256:6796079e5d24fdaba6d49bda28e2c47347e89834678f2bc2c1b4fc1489c0fb01", + "sha256:6897bebb118c44b38c9cb62a178e09f1593c949391b9a1a6fe777ccab5934ee7", + "sha256:6aa1bfce3f83baf00d9c5fcdbba93a3ab79958b4c7d7d1f55e7fe68c20e63912", + "sha256:6b4f28583a4f247ff60cd7bdda83db8c3f5b05a7a82ff20dd4b078571747708f", + "sha256:6e32dd207e2c4f8475257a3540ab8a93eff997abfa0a3fdb287cae0d6cd874b8", + "sha256:6f0c9266c26580e7243ad0d72fc3e01d6b33866cfab5084a6da7576bcf1c4f72", + "sha256:735f8495a13159ce6a0d533f01e8674cec0c57038c920495f87dcb20b3ddb48a", + "sha256:76500820c2af232435cbe215e3324c75b950a027134e044423f59f5b9a1ba515", + "sha256:7a4e59c90d9c27c561eb3160323634a9ff50b04e4f7820600a2beb0ac90db578", + "sha256:7a52a5169c664dfb495882adc75c304ae1d50df552fbd68e100fdc719dee4ff9", + "sha256:7a69df082db13c7070f7b8b1f155fa9e687f1d6aefb7b0e3f7231653b79a067b", + "sha256:7b0f9dceb221792b3ee6acb5438eb1f02b0cb2c247796a72b016dcc92c6de829", + "sha256:7b14b0c680286958817c22d76fcbca4800ddacef6f678f3a7c79a1fe7067fe37", + "sha256:7b6013db815417eeb56b2d9d7324e64fcd4fa289caeee6e7a78b2e11fc9b438a", + "sha256:7b7d9d83c942855e4fdcfa75d4f96f6b9e272d42fffcb72cd4bb2577db2e2907", + "sha256:8014045a15b4d2b3476f0a287fcc93d4f823472d7d1308d47884ecac9e612be3", + "sha256:8455933b4bcd6e83fde3fefc987a023389c4b13f9a58c8d23e4b3f6d13f78c84", + "sha256:85beb8b3f45e4e32f6802fb6cd6b17f615ef6c6a52f265371fb916fae02814aa", + "sha256:8a358a32dd3ae50e933347889b6af9a1bdf207ba5d1a3f34e1a38cd3540e6733", + "sha256:8aa23b6f0fc59b85b4c7d89ba2965af274346f738e8d9fc2455763602e62fd5f", + "sha256:8d252db6b1a78d0a3928b6190156042d54c93660ce4d98290d7b16b5296fb7cc", + "sha256:8f60c7ea34e78c199acd0d3cda37a99be2c861dd2b8cf67399784f70c9f8e57d", + "sha256:961ca621ff10d198bbe6ba4957decca61aa2a0c56695384c1d6b79bf61436df5", + "sha256:9a5690671cd672a45aa8616d7374fdf334a1b9c04a0cac3c854b1136e92374fe", + "sha256:9a7548b345f66f6695943b4ef6afe33ccd3f1b638bd9afd0f730dd255c249c9e", + "sha256:9f1d92ecea4fa12f978a367c32a5375a1982834649cdb96539dcdc12e609ab1a", + "sha256:a2036d09b363aa36695d1cc1a97b36865597f4478470b0697b5ee9403f4fe399", + "sha256:a3b695a8fa799dd2cfdb4804b37096c5f6dba1ac7f48a7fbf6d0485bcd060316", + "sha256:a410542d61fc54710f750d3764380b53bf09e8c4edbf2f9141a82aa774a04f7c", + "sha256:a6fe887c2c5c59413353b7c0caff25d0e566623501ccfff88957fa438a69377d", + "sha256:a805e9b3973f7e27f7cab63a6b4f61d90f2e5557cff73b6e97cd5b8540276d3d", + "sha256:abd4df20485a0983e2ca334a216249b6186d6e3c1627e106651943dbdb791aea", + "sha256:ac9f83e7b326a3f9ec3ef84cda98fb0a74c7159f33e692032233046e7fd15da2", + "sha256:acbe5e8b1026c0c580d0321c8aae4b0a1e1676861d48d6e8c6586625055b606a", + "sha256:ad50614a02c8c2962feebe6012b52f9802deec4263946cddea37aaf28dd25a66", + "sha256:ada7754a10faacd4f26067e62de52d6af93b6d9542f0df73c57b9771eb3ba9c4", + "sha256:adc8aa88486857d2b35d75f0640b949759f79dc105f50aa2c27816b2e0dd749f", + "sha256:b1b553dd06e875249fd43efd727785efb57a53180e0fde321468222eabbeaafa", + "sha256:b1cde22f2c30ebb049a9e74c5374994157b9b70a16147d332f89c99c5960737a", + "sha256:b3072b16904d0b5572a15eb9d31c1954e0d3227a585fc1351aa9878729099d6c", + "sha256:b670c30fd87a6aec281c3c9896d3bae4b205fd75d79d06dc87c2503717e46092", + "sha256:b8e1e9be4fa6305a16be628959188e4fd5cd6f1b0e724d63c6d8b2a8adf74ea6", + "sha256:b9699fa7990368b22032baf2b2dce1f634388e4ffc03dfefaaac79f4695edc95", + "sha256:b9b06fe1a75e05e0713f06ea0c89ecb6452210fd60e2f1b6ddc1067b990e08d9", + "sha256:bbdc5640900a7dbf9dd707fe6388972f5bbd883633eb68b76591044cfe346f7e", + "sha256:bcf1d210dfee61a6c86551d67ee1031899c0fdbae88b2d44a569995d43797712", + "sha256:bd3bbba5def70b16cd1c1d7255666aad3b290fbf8d0fe7f9f91abafb73611a91", + "sha256:beb880a9ca0a117415f241f66d56025c02037f7c4efc6fe59b5b8454f1eaa50d", + "sha256:c2a34fd26588949e1e7977cfcbb17a9a42c948c100cab890c6d8d823f0586457", + "sha256:c9a40040aa388b037eb39416710fbcce9443498d2eaab0b9b45ae988b53f5c67", + "sha256:cf128350d384b777da0e68796afdcebc2e9f63f0e9f242217754e647f6d32491", + "sha256:cf681ac76a60b667106141e11a92a3330890257e6f559ca995fbb5265160b56e", + "sha256:d15431e334fba488b081d47f30f091e5d03c18527c325386091f31718952fe08", + "sha256:d2412be8d00a1b895f8ad827cc2116455196e20ed994bb704bf138fe91a42724", + "sha256:d61b355c3275acb825f8777d6c4505f42b5007e357af500939d4a35b19177259", + "sha256:d678e91b610c29c4b3d52a2c148b641df2b4676ffe47c59f6388d58b99cdc424", + "sha256:d7366b6553cdc805abcc512b849a519167db8f5e5c3472010cd1228b224265cb", + "sha256:dcdcb890b3ada98a03f9f2bb108489cdc7580176cb73b4f2d789e9a1dac1d472", + "sha256:dd8d86b5d29d1b74100982424ba53e56033dc47720a6de9ba0259cf81d7cecaa", + "sha256:e0a0311caedc8069d68fc2bf4c9019b58a2d5ce3cd7cb656c845f1615b577e1e", + "sha256:e1460ebde1bcf6d496d80b191d854adedcc619f84ff17dc1c6d550f58c9efbba", + "sha256:e3eb248f2feba84c692579257a043a7699e28a77d86c77b032c1d9fbb3f0219c", + "sha256:e5bbc701eff140ba0e872691d573b3d5d30059ea26e5785acba9132d10c8c31d", + "sha256:e5d9b86aa501fed9862a443c5c3116f6ead8bc9296185f369277c42542bd646b", + "sha256:e5deca01b271492553fdb6c7fd974659dce736a15bae5dad7ab8b93555bceb28", + "sha256:e80848a71c78aa328fefaba9c244d588a342c8e03bda518447b624ea64d1ff56", + "sha256:e819e0e37a44a78e1383bf1970076e2ccc4dc8c2bbaa2f9bd1dc987e9afff628", + "sha256:e9e184408a0297086f880556b6168fa927d677716f83d3472ea333b42171ee3b", + "sha256:edd267266a9b0448f33dc465a97cfc5d467594b600fe28e7fa2f36450e03053a", + "sha256:efd489fec7c311dae25e94fe7eeda4b3d06be71c68f2cf2e8ef990ffcd2cd7e8", + "sha256:f0b2044fdddeea5b05df832e50d2a06fe61023acb44d76978e1b060206a8a476", + "sha256:f274f56a926ba2dc02976ca5b11c32855cbd5925534e57cfe1fda64e04d1add2", + "sha256:f296ea3054e11fc58ad42e850e8b75c62d9a93a9f981ad04b2e5ae7d2186ff9c", + "sha256:f4794c6c3fbe8f9ac87699b131a1f26e7b4abcf6d828da46a3a52648c7930eba", + "sha256:f586db2e209d54fe177e58e0bc4946bea5fb0102f150b1b2f13de03e1f0976f8", + "sha256:f5e7101145427087e493b9c9b959da68d357c28c562792300dd21a095118ed16", + "sha256:f9174471d6920cbc5e82a7822de8dfd4dcea86eb828b04fc8c6519a77b0ee51e" ], - "markers": "python_version >= '3.9'", - "version": "==0.27.0" + "markers": "python_version >= '3.10'", + "version": "==0.28.0" }, "safe-pysha3": { "hashes": [ @@ -2728,66 +2999,66 @@ }, "sqlalchemy": { "hashes": [ - "sha256:022e436a1cb39b13756cf93b48ecce7aa95382b9cfacceb80a7d263129dfd019", - "sha256:03d73ab2a37d9e40dec4984d1813d7878e01dbdc742448d44a7341b7a9f408c7", - "sha256:07097c0a1886c150ef2adba2ff7437e84d40c0f7dcb44a2c2b9c905ccfc6361c", - "sha256:11b9503fa6f8721bef9b8567730f664c5a5153d25e247aadc69247c4bc605227", - "sha256:11f43c39b4b2ec755573952bbcc58d976779d482f6f832d7f33a8d869ae891bf", - "sha256:13194276e69bb2af56198fef7909d48fd34820de01d9c92711a5fa45497cc7ed", - "sha256:136063a68644eca9339d02e6693932116f6a8591ac013b0014479a1de664e40a", - "sha256:14111d22c29efad445cd5021a70a8b42f7d9152d8ba7f73304c4d82460946aaa", - "sha256:1681c21dd2ccee222c2fe0bef671d1aef7c504087c9c4e800371cfcc8ac966fc", - "sha256:1a113da919c25f7f641ffbd07fbc9077abd4b3b75097c888ab818f962707eb48", - "sha256:1c6d85327ca688dbae7e2b06d7d84cfe4f3fffa5b5f9e21bb6ce9d0e1a0e0e0a", - "sha256:20d81fc2736509d7a2bd33292e489b056cbae543661bb7de7ce9f1c0cd6e7f24", - "sha256:21b27b56eb2f82653168cefe6cb8e970cdaf4f3a6cb2c5e3c3c1cf3158968ff9", - "sha256:21ba7a08a4253c5825d1db389d4299f64a100ef9800e4624c8bf70d8f136e6ed", - "sha256:227119ce0a89e762ecd882dc661e0aa677a690c914e358f0dd8932a2e8b2765b", - "sha256:25b9fc27650ff5a2c9d490c13c14906b918b0de1f8fcbb4c992712d8caf40e83", - "sha256:334f41fa28de9f9be4b78445e68530da3c5fa054c907176460c81494f4ae1f5e", - "sha256:413391b2239db55be14fa4223034d7e13325a1812c8396ecd4f2c08696d5ccad", - "sha256:4286a1139f14b7d70141c67a8ae1582fc2b69105f1b09d9573494eb4bb4b2687", - "sha256:44337823462291f17f994d64282a71c51d738fc9ef561bf265f1d0fd9116a782", - "sha256:46293c39252f93ea0910aababa8752ad628bcce3a10d3f260648dd472256983f", - "sha256:4bf0edb24c128b7be0c61cd17eef432e4bef507013292415f3fb7023f02b7d4b", - "sha256:4d3d9b904ad4a6b175a2de0738248822f5ac410f52c2fd389ada0b5262d6a1e3", - "sha256:4e6aeb2e0932f32950cf56a8b4813cb15ff792fc0c9b3752eaf067cfe298496a", - "sha256:4fb1a8c5438e0c5ea51afe9c6564f951525795cf432bed0c028c1cb081276685", - "sha256:529064085be2f4d8a6e5fab12d36ad44f1909a18848fcfbdb59cc6d4bbe48efe", - "sha256:52d9b73b8fb3e9da34c2b31e6d99d60f5f99fd8c1225c9dad24aeb74a91e1d29", - "sha256:5cda6b51faff2639296e276591808c1726c4a77929cfaa0f514f30a5f6156921", - "sha256:5d79f9fdc9584ec83d1b3c75e9f4595c49017f5594fee1a2217117647225d738", - "sha256:61f964a05356f4bca4112e6334ed7c208174511bd56e6b8fc86dad4d024d4185", - "sha256:6772e3ca8a43a65a37c88e2f3e2adfd511b0b1da37ef11ed78dea16aeae85bd9", - "sha256:6e2bf13d9256398d037fef09fd8bf9b0bf77876e22647d10761d35593b9ac547", - "sha256:70322986c0c699dca241418fcf18e637a4369e0ec50540a2b907b184c8bca069", - "sha256:788bfcef6787a7764169cfe9859fe425bf44559619e1d9f56f5bddf2ebf6f417", - "sha256:7f1ac7828857fcedb0361b48b9ac4821469f7694089d15550bbcf9ab22564a1d", - "sha256:87accdbba88f33efa7b592dc2e8b2a9c2cdbca73db2f9d5c510790428c09c154", - "sha256:8cee08f15d9e238ede42e9bbc1d6e7158d0ca4f176e4eab21f88ac819ae3bd7b", - "sha256:971ba928fcde01869361f504fcff3b7143b47d30de188b11c6357c0505824197", - "sha256:9c2e02f06c68092b875d5cbe4824238ab93a7fa35d9c38052c033f7ca45daa18", - "sha256:9c5a9da957c56e43d72126a3f5845603da00e0293720b03bde0aacffcf2dc04f", - "sha256:9df7126fd9db49e3a5a3999442cc67e9ee8971f3cb9644250107d7296cb2a164", - "sha256:b3edaec7e8b6dc5cd94523c6df4f294014df67097c8217a89929c99975811414", - "sha256:b535d35dea8bbb8195e7e2b40059e2253acb2b7579b73c1b432a35363694641d", - "sha256:bcf0724a62a5670e5718957e05c56ec2d6850267ea859f8ad2481838f889b42c", - "sha256:c00e7845d2f692ebfc7d5e4ec1a3fd87698e4337d09e58d6749a16aedfdf8612", - "sha256:c379e37b08c6c527181a397212346be39319fb64323741d23e46abd97a400d34", - "sha256:c5d1730b25d9a07727d20ad74bc1039bbbb0a6ca24e6769861c1aa5bf2c4c4a8", - "sha256:c5e73ba0d76eefc82ec0219d2301cb33bfe5205ed7a2602523111e2e56ccbd20", - "sha256:c697575d0e2b0a5f0433f679bda22f63873821d991e95a90e9e52aae517b2e32", - "sha256:cdeff998cb294896a34e5b2f00e383e7c5c4ef3b4bfa375d9104723f15186443", - "sha256:ceb5c832cc30663aeaf5e39657712f4c4241ad1f638d487ef7216258f6d41fe7", - "sha256:d34c0f6dbefd2e816e8f341d0df7d4763d382e3f452423e752ffd1e213da2512", - "sha256:db691fa174e8f7036afefe3061bc40ac2b770718be2862bfb03aabae09051aca", - "sha256:e7a903b5b45b0d9fa03ac6a331e1c1d6b7e0ab41c63b6217b3d10357b83c8b00", - "sha256:e7c08f57f75a2bb62d7ee80a89686a5e5669f199235c6d1dac75cd59374091c3", - "sha256:f42f23e152e4545157fa367b2435a1ace7571cab016ca26038867eb7df2c3631", - "sha256:fe2b3b4927d0bc03d02ad883f402d5de201dbc8894ac87d2e981e7d87430e60d" + "sha256:0765e318ee9179b3718c4fd7ba35c434f4dd20332fbc6857a5e8df17719c24d7", + "sha256:0ae7454e1ab1d780aee69fd2aae7d6b8670a581d8847f2d1e0f7ddfbf47e5a22", + "sha256:0b1af8392eb27b372ddb783b317dea0f650241cea5bd29199b22235299ca2e45", + "sha256:0fe3917059c7ab2ee3f35e77757062b1bea10a0b6ca633c58391e3f3c6c488dd", + "sha256:119dc41e7a7defcefc57189cfa0e61b1bf9c228211aba432b53fb71ef367fda1", + "sha256:11bac86b0deada30b6b5f93382712ff0e911fe8d31cb9bf46e6b149ae175eff0", + "sha256:15f3326f7f0b2bfe406ee562e17f43f36e16167af99c4c0df61db668de20002d", + "sha256:17835885016b9e4d0135720160db3095dc78c583e7b902b6be799fb21035e749", + "sha256:19de7ca1246fbef9f9d1bff8f1ab25641569df226364a0e40457dc5457c54b05", + "sha256:1df4763760d1de0dfc8192cc96d8aa293eb1a44f8f7a5fbe74caf1b551905c5e", + "sha256:1e77faf6ff919aa8cd63f1c4e561cac1d9a454a191bb864d5dd5e545935e5a40", + "sha256:22be14009339b8bc16d6b9dc8780bacaba3402aa7581658e246114abbd2236e3", + "sha256:253e2f29843fb303eca6b2fc645aca91fa7aa0aa70b38b6950da92d44ff267f3", + "sha256:2b61188657e3a2b9ac4e8f04d6cf8e51046e28175f79464c67f2fd35bceb0976", + "sha256:2bf4bb6b3d6228fcf3a71b50231199fb94d2dd2611b66d33be0578ea3e6c2726", + "sha256:2e7b5b079055e02d06a4308d0481658e4f06bc7ef211567edc8f7d5dce52018d", + "sha256:2f19644f27c76f07e10603580a47278abb2a70311136a7f8fd27dc2e096b9013", + "sha256:2fc44e5965ea46909a416fff0af48a219faefd5773ab79e5f8a5fcd5d62b2667", + "sha256:2fcc4901a86ed81dc76703f3b93ff881e08761c63263c46991081fd7f034b165", + "sha256:3255d821ee91bdf824795e936642bbf43a4c7cedf5d1aed8d24524e66843aa74", + "sha256:329aa42d1be9929603f406186630135be1e7a42569540577ba2c69952b7cf399", + "sha256:357bade0e46064f88f2c3a99808233e67b0051cdddf82992379559322dfeb183", + "sha256:3caef1ff89b1caefc28f0368b3bde21a7e3e630c2eddac16abd9e47bd27cc36a", + "sha256:3cf6872a23601672d61a68f390e44703442639a12ee9dd5a88bbce52a695e46e", + "sha256:3fe166c7d00912e8c10d3a9a0ce105569a31a3d0db1a6e82c4e0f4bf16d5eca9", + "sha256:471733aabb2e4848d609141a9e9d56a427c0a038f4abf65dd19d7a21fd563632", + "sha256:4848395d932e93c1595e59a8672aa7400e8922c39bb9b0668ed99ac6fa867822", + "sha256:48bf7d383a35e668b984c805470518b635d48b95a3c57cb03f37eaa3551b5f9f", + "sha256:4c26ef74ba842d61635b0152763d057c8d48215d5be9bb8b7604116a059e9985", + "sha256:4d18cd0e9a0f37c9f4088e50e3839fcb69a380a0ec957408e0b57cff08ee0a26", + "sha256:585c0c852a891450edbb1eaca8648408a3cc125f18cf433941fa6babcc359e29", + "sha256:70e03833faca7166e6a9927fbee7c27e6ecde436774cd0b24bbcc96353bce06b", + "sha256:72fea91746b5890f9e5e0997f16cbf3d53550580d76355ba2d998311b17b2250", + "sha256:78e6c137ba35476adb5432103ae1534f2f5295605201d946a4198a0dea4b38e7", + "sha256:7a8694107eb4308a13b425ca8c0e67112f8134c846b6e1f722698708741215d5", + "sha256:7c77f3080674fc529b1bd99489378c7f63fcb4ba7f8322b79732e0258f0ea3ce", + "sha256:7cbcb47fd66ab294703e1644f78971f6f2f1126424d2b300678f419aa73c7b6e", + "sha256:846541e58b9a81cce7dee8329f352c318de25aa2f2bbe1e31587eb1f057448b4", + "sha256:8e0e4e66fd80f277a8c3de016a81a554e76ccf6b8d881ee0b53200305a8433f6", + "sha256:9919e77403a483ab81e3423151e8ffc9dd992c20d2603bf17e4a8161111e55f5", + "sha256:9b94843a102efa9ac68a7a30cd46df3ff1ed9c658100d30a725d10d9c60a2f44", + "sha256:9e9018544ab07614d591a26c1bd4293ddf40752cc435caf69196740516af7100", + "sha256:b87e7b91a5d5973dda5f00cd61ef72ad75a1db73a386b62877d4875a8840959c", + "sha256:c1c80faaee1a6c3428cecf40d16a2365bcf56c424c92c2b6f0f9ad204b899e9e", + "sha256:c3678a0fb72c8a6a29422b2732fe423db3ce119c34421b5f9955873eb9b62c1e", + "sha256:cbe4f85f50c656d753890f39468fcd8190c5f08282caf19219f684225bfd5fd2", + "sha256:cc2856d24afa44295735e72f3c75d6ee7fdd4336d8d3a8f3d44de7aa6b766df2", + "sha256:d733dec0614bb8f4bcb7c8af88172b974f685a31dc3a65cca0527e3120de5606", + "sha256:dc8b3850d2a601ca2320d081874033684e246d28e1c5e89db0864077cfc8f5a9", + "sha256:de4387a354ff230bc979b46b2207af841dc8bf29847b6c7dbe60af186d97aefa", + "sha256:e998cf7c29473bd077704cea3577d23123094311f59bdc4af551923b168332b1", + "sha256:ebac3f0b5732014a126b43c2b7567f2f0e0afea7d9119a3378bde46d3dcad88e", + "sha256:ee51625c2d51f8baadf2829fae817ad0b66b140573939dd69284d2ba3553ae73", + "sha256:f4a172b31785e2f00780eccab00bc240ccdbfdb8345f1e6063175b3ff12ad1b0", + "sha256:f7027414f2b88992877573ab780c19ecb54d3a536bef3397933573d6b5068be4", + "sha256:f9480c0740aabd8cb29c329b422fb65358049840b34aba0adf63162371d2a96e", + "sha256:ff486e183d151e51b1d694c7aa1695747599bb00b9f5f604092b54b74c64a8e1" ], "markers": "python_version >= '3.7'", - "version": "==2.0.43" + "version": "==2.0.44" }, "stack-data": { "hashes": [ @@ -2798,11 +3069,11 @@ }, "toolz": { "hashes": [ - "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236", - "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02" + "sha256:15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8", + "sha256:27a5c770d068c110d9ed9323f24f1543e83b2f300a687b7891c1a6d56b697b5b" ], - "markers": "python_version >= '3.8'", - "version": "==1.0.0" + "markers": "python_version >= '3.9'", + "version": "==1.1.0" }, "tox": { "hashes": [ @@ -2839,27 +3110,27 @@ }, "types-requests": { "hashes": [ - "sha256:d8060de1c8ee599311f56ff58010fb4902f462a1470802cf9f6ed27bc46c4df3", - "sha256:f73d1832fb519ece02c85b1f09d5f0dd3108938e7d47e7f94bbfa18a6782b163" + "sha256:78c9c1fffebbe0fa487a418e0fa5252017e9c60d1a2da394077f1780f655d7e1", + "sha256:abd6d4f9ce3a9383f269775a9835a4c24e5cd6b9f647d64f88aa4613c33def5d" ], "markers": "python_version >= '3.9'", - "version": "==2.32.4.20250809" + "version": "==2.32.4.20250913" }, "typing-extensions": { "hashes": [ - "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", - "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" + "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", + "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548" ], "markers": "python_version >= '3.9'", - "version": "==4.14.1" + "version": "==4.15.0" }, "typing-inspection": { "hashes": [ - "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", - "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28" + "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", + "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464" ], "markers": "python_version >= '3.9'", - "version": "==0.4.1" + "version": "==0.4.2" }, "tzdata": { "hashes": [ @@ -2885,11 +3156,11 @@ }, "virtualenv": { "hashes": [ - "sha256:341f5afa7eee943e4984a9207c025feedd768baff6753cd660c857ceb3e36026", - "sha256:44815b2c9dee7ed86e387b842a84f20b93f7f417f95886ca1996a72a4138eb1a" + "sha256:643d3914d73d3eeb0c552cbb12d7e82adf0e504dbf86a3182f8771a153a1971c", + "sha256:c21c9cede36c9753eeade68ba7d523529f228a403463376cf821eaae2b650f1b" ], "markers": "python_version >= '3.8'", - "version": "==20.34.0" + "version": "==20.35.4" }, "watchdog": { "hashes": [ @@ -2926,10 +3197,11 @@ }, "wcwidth": { "hashes": [ - "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", - "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5" + "sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605", + "sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1" ], - "version": "==0.2.13" + "markers": "python_version >= '3.6'", + "version": "==0.2.14" }, "web3": { "extras": [ @@ -3020,113 +3292,139 @@ }, "yarl": { "hashes": [ - "sha256:03aa1e041727cb438ca762628109ef1333498b122e4c76dd858d186a37cec845", - "sha256:041eaa14f73ff5a8986b4388ac6bb43a77f2ea09bf1913df7a35d4646db69e53", - "sha256:0b5ff0fbb7c9f1b1b5ab53330acbfc5247893069e7716840c8e7d5bb7355038a", - "sha256:0c869f2651cc77465f6cd01d938d91a11d9ea5d798738c1dc077f3de0b5e5fed", - "sha256:1112ae8154186dfe2de4732197f59c05a83dc814849a5ced892b708033f40dc2", - "sha256:11a62c839c3a8eac2410e951301309426f368388ff2f33799052787035793b02", - "sha256:12e768f966538e81e6e7550f9086a6236b16e26cd964cf4df35349970f3551cf", - "sha256:14a85f3bd2d7bb255be7183e5d7d6e70add151a98edf56a770d6140f5d5f4010", - "sha256:14f326acd845c2b2e2eb38fb1346c94f7f3b01a4f5c788f8144f9b630bfff9a3", - "sha256:1c48912653e63aef91ff988c5432832692ac5a1d8f0fb8a33091520b5bbe19ef", - "sha256:1c92f4390e407513f619d49319023664643d3339bd5e5a56a3bebe01bc67ec04", - "sha256:1f8a891e4a22a89f5dde7862994485e19db246b70bb288d3ce73a34422e55b23", - "sha256:21242b4288a6d56f04ea193adde174b7e347ac46ce6bc84989ff7c1b1ecea84e", - "sha256:255b468adf57b4a7b65d8aad5b5138dce6a0752c139965711bdcb81bc370e1b6", - "sha256:26ef53a9e726e61e9cd1cda6b478f17e350fb5800b4bd1cd9fe81c4d91cfeb2e", - "sha256:2c26b0c49220d5799f7b22c6838409ee9bc58ee5c95361a4d7831f03cc225b5a", - "sha256:2c7b34d804b8cf9b214f05015c4fee2ebe7ed05cf581e7192c06555c71f4446a", - "sha256:2c89b5c792685dd9cd3fa9761c1b9f46fc240c2a3265483acc1565769996a3f8", - "sha256:30c41ad5d717b3961b2dd785593b67d386b73feca30522048d37298fee981805", - "sha256:33f29ecfe0330c570d997bcf1afd304377f2e48f61447f37e846a6058a4d33b2", - "sha256:344d1103e9c1523f32a5ed704d576172d2cabed3122ea90b1d4e11fe17c66458", - "sha256:377fae2fef158e8fd9d60b4c8751387b8d1fb121d3d0b8e9b0be07d1b41e83dc", - "sha256:3cf34efa60eb81dd2645a2e13e00bb98b76c35ab5061a3989c7a70f78c85006d", - "sha256:41493b9b7c312ac448b7f0a42a089dffe1d6e6e981a2d76205801a023ed26a2b", - "sha256:41ebd28167bc6af8abb97fec1a399f412eec5fd61a3ccbe2305a18b84fb4ca73", - "sha256:468f6e40285de5a5b3c44981ca3a319a4b208ccc07d526b20b12aeedcfa654b7", - "sha256:46b5e0ccf1943a9a6e766b2c2b8c732c55b34e28be57d8daa2b3c1d1d4009309", - "sha256:47ee6188fea634bdfaeb2cc420f5b3b17332e6225ce88149a17c413c77ff269e", - "sha256:48ea7d7f9be0487339828a4de0360d7ce0efc06524a48e1810f945c45b813698", - "sha256:495b4ef2fea40596bfc0affe3837411d6aa3371abcf31aac0ccc4bdd64d4ef5c", - "sha256:49bdd1b8e00ce57e68ba51916e4bb04461746e794e7c4d4bbc42ba2f18297691", - "sha256:4a979218c1fdb4246a05efc2cc23859d47c89af463a90b99b7c56094daf25a16", - "sha256:4c3ae28f3ae1563c50f3d37f064ddb1511ecc1d5584e88c6b7c63cf7702a6d5f", - "sha256:541d050a355bbbc27e55d906bc91cb6fe42f96c01413dd0f4ed5a5240513874f", - "sha256:564ab3d517e3d01c408c67f2e5247aad4019dcf1969982aba3974b4093279004", - "sha256:56dac5f452ed25eef0f6e3c6a066c6ab68971d96a9fb441791cad0efba6140d3", - "sha256:57edc88517d7fc62b174fcfb2e939fbc486a68315d648d7e74d07fac42cec240", - "sha256:59174e7332f5d153d8f7452a102b103e2e74035ad085f404df2e40e663a22b28", - "sha256:595c07bc79af2494365cc96ddeb772f76272364ef7c80fb892ef9d0649586513", - "sha256:597f40615b8d25812f14562699e287f0dcc035d25eb74da72cae043bb884d773", - "sha256:59febc3969b0781682b469d4aca1a5cab7505a4f7b85acf6db01fa500fa3f6ba", - "sha256:6032e6da6abd41e4acda34d75a816012717000fa6839f37124a47fcefc49bec4", - "sha256:62915e6688eb4d180d93840cda4110995ad50c459bf931b8b3775b37c264af1e", - "sha256:642980ef5e0fa1de5fa96d905c7e00cb2c47cb468bfcac5a18c58e27dbf8d8d1", - "sha256:66252d780b45189975abfed839616e8fd2dbacbdc262105ad7742c6ae58f3e31", - "sha256:67e708dfb8e78d8a19169818eeb5c7a80717562de9051bf2413aca8e3696bf16", - "sha256:680e19c7ce3710ac4cd964e90dad99bf9b5029372ba0c7cbfcd55e54d90ea819", - "sha256:69e9b141de5511021942a6866990aea6d111c9042235de90e08f94cf972ca03d", - "sha256:69ff8439d8ba832d6bed88af2c2b3445977eba9a4588b787b32945871c2444e3", - "sha256:6c4fbf6b02d70e512d7ade4b1f998f237137f1417ab07ec06358ea04f69134f8", - "sha256:6f3eff4cc3f03d650d8755c6eefc844edde99d641d0dcf4da3ab27141a5f8ddf", - "sha256:749d73611db8d26a6281086f859ea7ec08f9c4c56cec864e52028c8b328db723", - "sha256:76d12524d05841276b0e22573f28d5fbcb67589836772ae9244d90dd7d66aa13", - "sha256:793fd0580cb9664548c6b83c63b43c477212c0260891ddf86809e1c06c8b08f1", - "sha256:7a8900a42fcdaad568de58887c7b2f602962356908eedb7628eaf6021a6e435b", - "sha256:7bdd2f80f4a7df852ab9ab49484a4dee8030023aa536df41f2d922fd57bf023f", - "sha256:812303eb4aa98e302886ccda58d6b099e3576b1b9276161469c25803a8db277d", - "sha256:835ab2cfc74d5eb4a6a528c57f05688099da41cf4957cf08cad38647e4a83b30", - "sha256:83b8eb083fe4683c6115795d9fc1cfaf2cbbefb19b3a1cb68f6527460f483a77", - "sha256:8570d998db4ddbfb9a590b185a0a33dbf8aafb831d07a5257b4ec9948df9cb0a", - "sha256:8601bc010d1d7780592f3fc1bdc6c72e2b6466ea34569778422943e1a1f3c389", - "sha256:86971e2795584fe8c002356d3b97ef6c61862720eeff03db2a7c86b678d85b3e", - "sha256:88cab98aa4e13e1ade8c141daeedd300a4603b7132819c484841bb7af3edce9e", - "sha256:8e0fe9364ad0fddab2688ce72cb7a8e61ea42eff3c7caeeb83874a5d479c896c", - "sha256:8f64fbf81878ba914562c672024089e3401974a39767747691c65080a67b18c1", - "sha256:8f969afbb0a9b63c18d0feecf0db09d164b7a44a053e78a7d05f5df163e43833", - "sha256:909313577e9619dcff8c31a0ea2aa0a2a828341d92673015456b3ae492e7317b", - "sha256:90bbd29c4fe234233f7fa2b9b121fb63c321830e5d05b45153a2ca68f7d310ee", - "sha256:9427925776096e664c39e131447aa20ec738bdd77c049c48ea5200db2237e000", - "sha256:97c75596019baae7c71ccf1d8cc4738bc08134060d0adfcbe5642f778d1dca38", - "sha256:98c4a7d166635147924aa0bf9bfe8d8abad6fffa6102de9c99ea04a1376f91e8", - "sha256:a97d67108e79cfe22e2b430d80d7571ae57d19f17cda8bb967057ca8a7bf5bfd", - "sha256:aef6c4d69554d44b7f9d923245f8ad9a707d971e6209d51279196d8e8fe1ae16", - "sha256:b121ff6a7cbd4abc28985b6028235491941b9fe8fe226e6fdc539c977ea1739d", - "sha256:b29a2c385a5f5b9c7d9347e5812b6f7ab267193c62d282a540b4fc528c8a9d2a", - "sha256:b5f307337819cdfdbb40193cad84978a029f847b0a357fbe49f712063cfc4f06", - "sha256:b982fa7f74c80d5c0c7b5b38f908971e513380a10fecea528091405f519b9ebb", - "sha256:bad6d131fda8ef508b36be3ece16d0902e80b88ea7200f030a0f6c11d9e508d4", - "sha256:bdcc4cd244e58593a4379fe60fdee5ac0331f8eb70320a24d591a3be197b94a9", - "sha256:bea21cdae6c7eb02ba02a475f37463abfe0a01f5d7200121b03e605d6a0439f8", - "sha256:c03bfebc4ae8d862f853a9757199677ab74ec25424d0ebd68a0027e9c639a390", - "sha256:c5e9642f27036283550f5f57dc6156c51084b458570b9d0d96100c8bebb186a8", - "sha256:c7d7f497126d65e2cad8dc5f97d34c27b19199b6414a40cb36b52f41b79014be", - "sha256:c7ddf7a09f38667aea38801da8b8d6bfe81df767d9dfc8c88eb45827b195cd1c", - "sha256:d017a4997ee50c91fd5466cef416231bb82177b93b029906cefc542ce14c35ac", - "sha256:d0f6500f69e8402d513e5eedb77a4e1818691e8f45e6b687147963514d84b44b", - "sha256:d1a4fbb50e14396ba3d375f68bfe02215d8e7bc3ec49da8341fe3157f59d2ff5", - "sha256:d25ddcf954df1754ab0f86bb696af765c5bfaba39b74095f27eececa049ef9a4", - "sha256:d2b6fb3622b7e5bf7a6e5b679a69326b4279e805ed1699d749739a61d242449e", - "sha256:daadbdc1f2a9033a2399c42646fbd46da7992e868a5fe9513860122d7fe7a73f", - "sha256:dab096ce479d5894d62c26ff4f699ec9072269d514b4edd630a393223f45a0ee", - "sha256:daea0d313868da1cf2fac6b2d3a25c6e3a9e879483244be38c8e6a41f1d876a5", - "sha256:dd803820d44c8853a109a34e3660e5a61beae12970da479cf44aa2954019bf70", - "sha256:df018d92fe22aaebb679a7f89fe0c0f368ec497e3dda6cb81a567610f04501f1", - "sha256:df47c55f7d74127d1b11251fe6397d84afdde0d53b90bedb46a23c0e534f9d24", - "sha256:e3968ec7d92a0c0f9ac34d5ecfd03869ec0cab0697c91a45db3fbbd95fe1b653", - "sha256:e42ba79e2efb6845ebab49c7bf20306c4edf74a0b20fc6b2ccdd1a219d12fad3", - "sha256:eae7bfe2069f9c1c5b05fc7fe5d612e5bbc089a39309904ee8b829e322dcad00", - "sha256:f5a5928ff5eb13408c62a968ac90d43f8322fd56d87008b8f9dabf3c0f6ee983", - "sha256:f60233b98423aab21d249a30eb27c389c14929f47be8430efa7dbd91493a729d", - "sha256:f60e4ad5db23f0b96e49c018596707c3ae89f5d0bd97f0ad3684bcbad899f1e7", - "sha256:f6342d643bf9a1de97e512e45e4b9560a043347e779a173250824f8b254bd5ce", - "sha256:fe41919b9d899661c5c28a8b4b0acf704510b88f27f0934ac7a7bebdd8938d5e", - "sha256:ff70f32aa316393eaf8222d518ce9118148eddb8a53073c2403863b41033eed5" + "sha256:01e73b85a5434f89fc4fe27dcda2aff08ddf35e4d47bbbea3bdcd25321af538a", + "sha256:029866bde8d7b0878b9c160e72305bbf0a7342bcd20b9999381704ae03308dc8", + "sha256:078278b9b0b11568937d9509b589ee83ef98ed6d561dfe2020e24a9fd08eaa2b", + "sha256:078a8aefd263f4d4f923a9677b942b445a2be970ca24548a8102689a3a8ab8da", + "sha256:07a524d84df0c10f41e3ee918846e1974aba4ec017f990dc735aad487a0bdfdf", + "sha256:088e4e08f033db4be2ccd1f34cf29fe994772fb54cfe004bbf54db320af56890", + "sha256:0b5bcc1a9c4839e7e30b7b30dd47fe5e7e44fb7054ec29b5bb8d526aa1041093", + "sha256:0cf71bf877efeac18b38d3930594c0948c82b64547c1cf420ba48722fe5509f6", + "sha256:0d6e6885777af0f110b0e5d7e5dda8b704efed3894da26220b7f3d887b839a79", + "sha256:0dd9a702591ca2e543631c2a017e4a547e38a5c0f29eece37d9097e04a7ac683", + "sha256:10619d9fdee46d20edc49d3479e2f8269d0779f1b031e6f7c2aa1c76be04b7ed", + "sha256:131a085a53bfe839a477c0845acf21efc77457ba2bcf5899618136d64f3303a2", + "sha256:1380560bdba02b6b6c90de54133c81c9f2a453dee9912fe58c1dcced1edb7cff", + "sha256:139718f35149ff544caba20fce6e8a2f71f1e39b92c700d8438a0b1d2a631a02", + "sha256:14291620375b1060613f4aab9ebf21850058b6b1b438f386cc814813d901c60b", + "sha256:1834bb90991cc2999f10f97f5f01317f99b143284766d197e43cd5b45eb18d03", + "sha256:1ab72135b1f2db3fed3997d7e7dc1b80573c67138023852b6efb336a5eae6511", + "sha256:1e7ce67c34138a058fd092f67d07a72b8e31ff0c9236e751957465a24b28910c", + "sha256:1e8fbaa7cec507aa24ea27a01456e8dd4b6fab829059b69844bd348f2d467124", + "sha256:22965c2af250d20c873cdbee8ff958fb809940aeb2e74ba5f20aaf6b7ac8c70c", + "sha256:22b029f2881599e2f1b06f8f1db2ee63bd309e2293ba2d566e008ba12778b8da", + "sha256:243dda95d901c733f5b59214d28b0120893d91777cb8aa043e6ef059d3cddfe2", + "sha256:2ca6fd72a8cd803be290d42f2dec5cdcd5299eeb93c2d929bf060ad9efaf5de0", + "sha256:2e4e1f6f0b4da23e61188676e3ed027ef0baa833a2e633c29ff8530800edccba", + "sha256:31f0b53913220599446872d757257be5898019c85e7971599065bc55065dc99d", + "sha256:334b8721303e61b00019474cc103bdac3d7b1f65e91f0bfedeec2d56dfe74b53", + "sha256:33e32a0dd0c8205efa8e83d04fc9f19313772b78522d1bdc7d9aed706bfd6138", + "sha256:34b36c2c57124530884d89d50ed2c1478697ad7473efd59cfd479945c95650e4", + "sha256:3aa27acb6de7a23785d81557577491f6c38a5209a254d1191519d07d8fe51748", + "sha256:3b06bcadaac49c70f4c88af4ffcfbe3dc155aab3163e75777818092478bcbbe7", + "sha256:3b7c88eeef021579d600e50363e0b6ee4f7f6f728cd3486b9d0f3ee7b946398d", + "sha256:3e2daa88dc91870215961e96a039ec73e4937da13cf77ce17f9cad0c18df3503", + "sha256:3ea66b1c11c9150f1372f69afb6b8116f2dd7286f38e14ea71a44eee9ec51b9d", + "sha256:42188e6a615c1a75bcaa6e150c3fe8f3e8680471a6b10150c5f7e83f47cc34d2", + "sha256:433885ab5431bc3d3d4f2f9bd15bfa1614c522b0f1405d62c4f926ccd69d04fa", + "sha256:437840083abe022c978470b942ff832c3940b2ad3734d424b7eaffcd07f76737", + "sha256:4398557cbf484207df000309235979c79c4356518fd5c99158c7d38203c4da4f", + "sha256:45c2842ff0e0d1b35a6bf1cd6c690939dacb617a70827f715232b2e0494d55d1", + "sha256:47743b82b76d89a1d20b83e60d5c20314cbd5ba2befc9cda8f28300c4a08ed4d", + "sha256:4792b262d585ff0dff6bcb787f8492e40698443ec982a3568c2096433660c694", + "sha256:47d8a5c446df1c4db9d21b49619ffdba90e77c89ec6e283f453856c74b50b9e3", + "sha256:47fdb18187e2a4e18fda2c25c05d8251a9e4a521edaed757fef033e7d8498d9a", + "sha256:4c52a6e78aef5cf47a98ef8e934755abf53953379b7d53e68b15ff4420e6683d", + "sha256:4dcc74149ccc8bba31ce1944acee24813e93cfdee2acda3c172df844948ddf7b", + "sha256:50678a3b71c751d58d7908edc96d332af328839eea883bb554a43f539101277a", + "sha256:51af598701f5299012b8416486b40fceef8c26fc87dc6d7d1f6fc30609ea0aa6", + "sha256:594fcab1032e2d2cc3321bb2e51271e7cd2b516c7d9aee780ece81b07ff8244b", + "sha256:595697f68bd1f0c1c159fcb97b661fc9c3f5db46498043555d04805430e79bea", + "sha256:59c189e3e99a59cf8d83cbb31d4db02d66cda5a1a4374e8a012b51255341abf5", + "sha256:5a3bf7f62a289fa90f1990422dc8dff5a458469ea71d1624585ec3a4c8d6960f", + "sha256:5c401e05ad47a75869c3ab3e35137f8468b846770587e70d71e11de797d113df", + "sha256:5cdac20da754f3a723cceea5b3448e1a2074866406adeb4ef35b469d089adb8f", + "sha256:5d0fcda9608875f7d052eff120c7a5da474a6796fe4d83e152e0e4d42f6d1a9b", + "sha256:5dbeefd6ca588b33576a01b0ad58aa934bc1b41ef89dee505bf2932b22ddffba", + "sha256:62441e55958977b8167b2709c164c91a6363e25da322d87ae6dd9c6019ceecf9", + "sha256:663e1cadaddae26be034a6ab6072449a8426ddb03d500f43daf952b74553bba0", + "sha256:669930400e375570189492dc8d8341301578e8493aec04aebc20d4717f899dd6", + "sha256:68986a61557d37bb90d3051a45b91fa3d5c516d177dfc6dd6f2f436a07ff2b6b", + "sha256:6944b2dc72c4d7f7052683487e3677456050ff77fcf5e6204e98caf785ad1967", + "sha256:6a635ea45ba4ea8238463b4f7d0e721bad669f80878b7bfd1f89266e2ae63da2", + "sha256:6c5010a52015e7c70f86eb967db0f37f3c8bd503a695a49f8d45700144667708", + "sha256:6dcbb0829c671f305be48a7227918cfcd11276c2d637a8033a99a02b67bf9eda", + "sha256:70dfd4f241c04bd9239d53b17f11e6ab672b9f1420364af63e8531198e3f5fe8", + "sha256:719ae08b6972befcba4310e49edb1161a88cdd331e3a694b84466bd938a6ab10", + "sha256:75976c6945d85dbb9ee6308cd7ff7b1fb9409380c82d6119bd778d8fcfe2931c", + "sha256:7861058d0582b847bc4e3a4a4c46828a410bca738673f35a29ba3ca5db0b473b", + "sha256:792a2af6d58177ef7c19cbf0097aba92ca1b9cb3ffdd9c7470e156c8f9b5e028", + "sha256:8009b3173bcd637be650922ac455946197d858b3630b6d8787aa9e5c4564533e", + "sha256:80ddf7a5f8c86cb3eb4bc9028b07bbbf1f08a96c5c0bc1244be5e8fefcb94147", + "sha256:8218f4e98d3c10d683584cb40f0424f4b9fd6e95610232dd75e13743b070ee33", + "sha256:84fc3ec96fce86ce5aa305eb4aa9358279d1aa644b71fab7b8ed33fe3ba1a7ca", + "sha256:852863707010316c973162e703bddabec35e8757e67fcb8ad58829de1ebc8590", + "sha256:8884d8b332a5e9b88e23f60bb166890009429391864c685e17bd73a9eda9105c", + "sha256:8dee9c25c74997f6a750cd317b8ca63545169c098faee42c84aa5e506c819b53", + "sha256:939fe60db294c786f6b7c2d2e121576628468f65453d86b0fe36cb52f987bd74", + "sha256:99b6fc1d55782461b78221e95fc357b47ad98b041e8e20f47c1411d0aacddc60", + "sha256:9d7672ecf7557476642c88497c2f8d8542f8e36596e928e9bcba0e42e1e7d71f", + "sha256:9f6d73c1436b934e3f01df1e1b21ff765cd1d28c77dfb9ace207f746d4610ee1", + "sha256:9fb17ea16e972c63d25d4a97f016d235c78dd2344820eb35bc034bc32012ee27", + "sha256:a49370e8f711daec68d09b821a34e1167792ee2d24d405cbc2387be4f158b520", + "sha256:a4fcfc8eb2c34148c118dfa02e6427ca278bfd0f3df7c5f99e33d2c0e81eae3e", + "sha256:a899cbd98dce6f5d8de1aad31cb712ec0a530abc0a86bd6edaa47c1090138467", + "sha256:a9b1ba5610a4e20f655258d5a1fdc7ebe3d837bb0e45b581398b99eb98b1f5ca", + "sha256:af74f05666a5e531289cb1cc9c883d1de2088b8e5b4de48004e5ca8a830ac859", + "sha256:b0748275abb8c1e1e09301ee3cf90c8a99678a4e92e4373705f2a2570d581273", + "sha256:b266bd01fedeffeeac01a79ae181719ff848a5a13ce10075adbefc8f1daee70e", + "sha256:b4f15793aa49793ec8d1c708ab7f9eded1aa72edc5174cae703651555ed1b601", + "sha256:b580e71cac3f8113d3135888770903eaf2f507e9421e5697d6ee6d8cd1c7f054", + "sha256:b6a6f620cfe13ccec221fa312139135166e47ae169f8253f72a0abc0dae94376", + "sha256:b790b39c7e9a4192dc2e201a282109ed2985a1ddbd5ac08dc56d0e121400a8f7", + "sha256:b85b982afde6df99ecc996990d4ad7ccbdbb70e2a4ba4de0aecde5922ba98a0b", + "sha256:b8a0588521a26bf92a57a1705b77b8b59044cdceccac7151bd8d229e66b8dedb", + "sha256:ba440ae430c00eee41509353628600212112cd5018d5def7e9b05ea7ac34eb65", + "sha256:bca03b91c323036913993ff5c738d0842fc9c60c4648e5c8d98331526df89784", + "sha256:bebf8557577d4401ba8bd9ff33906f1376c877aa78d1fe216ad01b4d6745af71", + "sha256:bec03d0d388060058f5d291a813f21c011041938a441c593374da6077fe21b1b", + "sha256:bf4a21e58b9cde0e401e683ebd00f6ed30a06d14e93f7c8fd059f8b6e8f87b6a", + "sha256:c0232bce2170103ec23c454e54a57008a9a72b5d1c3105dc2496750da8cfa47c", + "sha256:c4647674b6150d2cae088fc07de2738a84b8bcedebef29802cf0b0a82ab6face", + "sha256:c7044802eec4524fde550afc28edda0dd5784c4c45f0be151a2d3ba017daca7d", + "sha256:c7bd6683587567e5a49ee6e336e0612bec8329be1b7d4c8af5687dcdeb67ee1e", + "sha256:ca1f59c4e1ab6e72f0a23c13fca5430f889634166be85dbf1013683e49e3278e", + "sha256:cb95a9b1adaa48e41815a55ae740cfda005758104049a640a398120bf02515ca", + "sha256:cfebc0ac8333520d2d0423cbbe43ae43c8838862ddb898f5ca68565e395516e9", + "sha256:d332fc2e3c94dad927f2112395772a4e4fedbcf8f80efc21ed7cdfae4d574fdb", + "sha256:d3e32536234a95f513bd374e93d717cf6b2231a791758de6c509e3653f234c95", + "sha256:d5372ca1df0f91a86b047d1277c2aaf1edb32d78bbcefffc81b40ffd18f027ed", + "sha256:d77e1b2c6d04711478cb1c4ab90db07f1609ccf06a287d5607fcd90dc9863acf", + "sha256:d947071e6ebcf2e2bee8fce76e10faca8f7a14808ca36a910263acaacef08eca", + "sha256:dd7afd3f8b0bfb4e0d9fc3c31bfe8a4ec7debe124cfd90619305def3c8ca8cd2", + "sha256:de6b9a04c606978fdfe72666fa216ffcf2d1a9f6a381058d4378f8d7b1e5de62", + "sha256:e1651bf8e0398574646744c1885a41198eba53dc8a9312b954073f845c90a8df", + "sha256:e1b329cb8146d7b736677a2440e422eadd775d1806a81db2d4cded80a48efc1a", + "sha256:e1b51bebd221006d3d2f95fbe124b22b247136647ae5dcc8c7acafba66e5ee67", + "sha256:e340382d1afa5d32b892b3ff062436d592ec3d692aeea3bef3a5cfe11bbf8c6f", + "sha256:e4b582bab49ac33c8deb97e058cd67c2c50dac0dd134874106d9c774fd272529", + "sha256:e51ac5435758ba97ad69617e13233da53908beccc6cfcd6c34bbed8dcbede486", + "sha256:e5542339dcf2747135c5c85f68680353d5cb9ffd741c0f2e8d832d054d41f35a", + "sha256:e6438cc8f23a9c1478633d216b16104a586b9761db62bfacb6425bac0a36679e", + "sha256:e81fda2fb4a07eda1a2252b216aa0df23ebcd4d584894e9612e80999a78fd95b", + "sha256:ea70f61a47f3cc93bdf8b2f368ed359ef02a01ca6393916bc8ff877427181e74", + "sha256:ebd4549b108d732dba1d4ace67614b9545b21ece30937a63a65dd34efa19732d", + "sha256:efb07073be061c8f79d03d04139a80ba33cbd390ca8f0297aae9cce6411e4c6b", + "sha256:f0d97c18dfd9a9af4490631905a3f131a8e4c9e80a39353919e2cfed8f00aedc", + "sha256:f1e09112a2c31ffe8d80be1b0988fa6a18c5d5cad92a9ffbb1c04c91bfe52ad2", + "sha256:f3d7a87a78d46a2e3d5b72587ac14b4c16952dd0887dbb051451eceac774411e", + "sha256:f4afb5c34f2c6fecdcc182dfcfc6af6cccf1aa923eed4d6a12e9d96904e1a0d8", + "sha256:f6d2cb59377d99718913ad9a151030d6f83ef420a2b8f521d94609ecc106ee82", + "sha256:f87ac53513d22240c7d59203f25cc3beac1e574c6cd681bbfd321987b69f95fd", + "sha256:ff86011bd159a9d2dfc89c34cfd8aff12875980e3bd6a39ff097887520e60249" ], "markers": "python_version >= '3.9'", - "version": "==1.20.1" + "version": "==1.22.0" } }, "develop": {} diff --git a/ape-config.yaml b/ape-config.yaml index 0f70fdd58..70cb953fc 100644 --- a/ape-config.yaml +++ b/ape-config.yaml @@ -38,7 +38,7 @@ polygon: mainnet: transaction_acceptance_timeout: 600 # 10 minutes amoy: - gas_limit: auto # because we are cutting it close with Coordinator + gas_limit: auto # because we are cutting it close with Coordinator foundry: host: auto @@ -65,5 +65,7 @@ etherscan: rate_limit: 5 test: + provider: + chain_id: 131277322940537 # ensure ape doesn't change chain id to 1337 mnemonic: test test test test test test test test test test test junk - number_of_accounts: 40 + number_of_accounts: 70 diff --git a/contracts/contracts/coordination/Coordinator.sol b/contracts/contracts/coordination/Coordinator.sol index e3d3e9218..89ac6a92c 100644 --- a/contracts/contracts/coordination/Coordinator.sol +++ b/contracts/contracts/coordination/Coordinator.sol @@ -131,6 +131,7 @@ contract Coordinator is Initializable, AccessControlDefaultAdminRulesUpgradeable bytes32 public constant FEE_MODEL_MANAGER_ROLE = keccak256("FEE_MODEL_MANAGER_ROLE"); bytes32 public constant HANDOVER_SUPERVISOR_ROLE = keccak256("HANDOVER_SUPERVISOR_ROLE"); + uint256 public constant DECRYPTION_REQUEST_KEY_LENGTH = 42; ITACoChildApplication public immutable application; uint96 private immutable minAuthorization; // TODO use child app for checking eligibility @@ -495,7 +496,7 @@ contract Coordinator is Initializable, AccessControlDefaultAdminRulesUpgradeable ); require( - decryptionRequestStaticKey.length == 42, + decryptionRequestStaticKey.length == DECRYPTION_REQUEST_KEY_LENGTH, "Invalid length for decryption request static key" ); @@ -584,7 +585,7 @@ contract Coordinator is Initializable, AccessControlDefaultAdminRulesUpgradeable require(isRitualActive(ritualId), "Ritual is not active"); require(transcript.length > 0, "Parameters can't be empty"); require( - decryptionRequestStaticKey.length == 42, + decryptionRequestStaticKey.length == DECRYPTION_REQUEST_KEY_LENGTH, "Invalid length for decryption request static key" ); diff --git a/contracts/contracts/coordination/IL1Sender.sol b/contracts/contracts/coordination/IL1Sender.sol new file mode 100644 index 000000000..a0e36543a --- /dev/null +++ b/contracts/contracts/coordination/IL1Sender.sol @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.0; + +/** + * @title IL1Sender + * @notice Interface for sending data to the L2 receiver contract. + */ +interface IL1Sender { + /** + * @notice Sends data to the L2 receiver contract. + * @param target The address of the target contract on L2. + * @param data The data to be sent to the target contract. + */ + function sendData(address target, bytes calldata data) external; +} diff --git a/contracts/contracts/coordination/IL2Receiver.sol b/contracts/contracts/coordination/IL2Receiver.sol new file mode 100644 index 000000000..8d567a814 --- /dev/null +++ b/contracts/contracts/coordination/IL2Receiver.sol @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.0; + +/** + * @title IL2Receiver + * @notice Interface for receiving data from the L1 sender contract. + */ +interface IL2Receiver { + /** + * @notice Receives data from the L1 sender contract. + * @param data The data sent from the L1 sender contract. + */ + function recvData(bytes calldata data) external; +} diff --git a/contracts/contracts/coordination/ISigningCoordinatorChild.sol b/contracts/contracts/coordination/ISigningCoordinatorChild.sol new file mode 100644 index 000000000..3c1a20b98 --- /dev/null +++ b/contracts/contracts/coordination/ISigningCoordinatorChild.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.0; + +/** + * @title ISigningCoordinatorChild + * @notice Interface for x-chain interactions from SigningCoordinator to Child + */ +interface ISigningCoordinatorChild { + event CohortMultisigDeployed(uint32 indexed cohortId, address multisig); + event CohortMultisigUpdated( + uint32 indexed cohortId, + address multisig, + address[] signers, + uint16 threshold, + bool clearSigners + ); + + function deployCohortMultiSig( + uint32 cohortId, + address[] calldata signers, + uint16 threshold + ) external; + + function updateMultiSigParameters( + uint32 cohortId, + address[] calldata signers, + uint16 threshold, + bool clearSigners + ) external; +} diff --git a/contracts/contracts/coordination/IThresholdSigningMultisig.sol b/contracts/contracts/coordination/IThresholdSigningMultisig.sol new file mode 100644 index 000000000..c7e73d7f2 --- /dev/null +++ b/contracts/contracts/coordination/IThresholdSigningMultisig.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.0; + +interface IThresholdSigningMultisig { + function initialize(address[] memory, uint16, address) external; + + function updateMultiSigParameters( + address[] calldata signers, + uint16 threshold, + bool clearSigners + ) external; +} diff --git a/contracts/contracts/coordination/OpL1Sender.sol b/contracts/contracts/coordination/OpL1Sender.sol new file mode 100644 index 000000000..178eadc90 --- /dev/null +++ b/contracts/contracts/coordination/OpL1Sender.sol @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.0; + +import "@openzeppelin-upgradeable/contracts/proxy/utils/Initializable.sol"; +import "./IL1Sender.sol"; +import "./IL2Receiver.sol"; + +interface ICrossDomainMessenger { + function sendMessage(address target, bytes calldata message, uint32 gasLimit) external; +} + +/** + * @title OpL1Sender + * @notice Optimism-based contract responsible for sending data + * to the L2 receiver contract via the bridge messenger. + */ +contract OpL1Sender is IL1Sender, Initializable { + ICrossDomainMessenger public immutable messenger; + address public immutable dispatcher; + uint32 public immutable gasLimit; + IL2Receiver public l2Receiver; + + /** + * @param _dispatcher The address of the dispatcher contract. + * @param _messenger The address of the CrossDomainMessenger contract. + * @param _gasLimit The gas limit for the message. + */ + constructor(address _dispatcher, ICrossDomainMessenger _messenger, uint32 _gasLimit) { + dispatcher = _dispatcher; + messenger = _messenger; + gasLimit = _gasLimit; + } + + function initialize(IL2Receiver _l2Receiver) external initializer { + l2Receiver = _l2Receiver; + } + + /** + * @notice Sends data to the L2 receiver contract via the messenger. + * @param target The address of the target contract on L2. + * @param data The data to be sent to the target contract. + */ + function sendData(address target, bytes calldata data) external { + require(dispatcher == msg.sender, "Unauthorized caller"); + bytes memory payload = abi.encode(target, data); + bytes memory callData = abi.encodeWithSelector(l2Receiver.recvData.selector, payload); + messenger.sendMessage(address(l2Receiver), callData, gasLimit); + } +} diff --git a/contracts/contracts/coordination/OpL2Receiver.sol b/contracts/contracts/coordination/OpL2Receiver.sol new file mode 100644 index 000000000..98eb61a89 --- /dev/null +++ b/contracts/contracts/coordination/OpL2Receiver.sol @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.0; + +import "@openzeppelin-upgradeable/contracts/proxy/utils/Initializable.sol"; +import "./IL2Receiver.sol"; + +interface ICrossDomainMessenger { + function xDomainMessageSender() external view returns (address); +} + +/** + * @title OpL2Receiver + * @notice Contract is used to receive data from the L1 sender contract via the bridge messenger. + */ +contract OpL2Receiver is IL2Receiver, Initializable { + address public immutable messenger; + address public l1Sender; + + event Executed(address target, bytes result); + + /** + * @param _messenger The address of the CrossDomainMessenger contract. + */ + constructor(address _messenger) { + messenger = _messenger; + } + + function initialize(address _l1Sender) external initializer { + l1Sender = _l1Sender; + } + + /** + * @notice Receives data from the L1 sender contract via the messenger. + * @param data The data sent from the L1 sender contract. + */ + function recvData(bytes calldata data) external { + require(messenger == msg.sender, "Not from messenger"); + require( + l1Sender == ICrossDomainMessenger(messenger).xDomainMessageSender(), + "Invalid sender" + ); + (address target, bytes memory callData) = abi.decode(data, (address, bytes)); + // solhint-disable-next-line avoid-low-level-calls + (bool success, bytes memory result) = target.call(callData); + require(success, "L2 Receiver Execution failed"); + + emit Executed(target, result); + } +} diff --git a/contracts/contracts/coordination/SigningCoordinator.sol b/contracts/contracts/coordination/SigningCoordinator.sol new file mode 100644 index 000000000..4dd88a381 --- /dev/null +++ b/contracts/contracts/coordination/SigningCoordinator.sol @@ -0,0 +1,519 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; +import "@openzeppelin-upgradeable/contracts/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol"; +import "@openzeppelin-upgradeable/contracts/proxy/utils/Initializable.sol"; +import "./ISigningCoordinatorChild.sol"; +import "./SigningCoordinatorChild.sol"; +import "./SigningCoordinatorDispatcher.sol"; +import "./ThresholdSigningMultisig.sol"; +import "../TACoApplication.sol"; + +// SigningCoordinator ----> Dispatcher ----> (Relevant) L1Sender ---------[BRIDGE]---------- L2Receiver ----> SigningCoordinatorChild (1. deploys multisig OR 2. updates multisig) + +contract SigningCoordinator is Initializable, AccessControlDefaultAdminRulesUpgradeable { + using MessageHashUtils for bytes32; + using ECDSA for bytes32; + + // Signing protocol + event InitiateSigningCohort( + uint32 indexed cohortId, + uint256 chainId, + address indexed authority, + address[] participants + ); + event SigningCohortSignaturePosted( + uint32 indexed cohortId, + address indexed provider, + address indexed signer, + bytes signature + ); + event SigningCohortDeployed(uint32 indexed cohortId, uint256 chainId); + + // Cohort Administration + event SigningCohortConditionsSet( + uint32 indexed cohortId, + address indexed admin, + uint256 chainId, + bytes conditions + ); + + // Protocol Administration + event TimeoutChanged(uint32 oldTimeout, uint32 newTimeout); + event MaxCohortSizeChanged(uint16 oldSize, uint16 newSize); + event DispatcherChanged(address oldDispatcher, address newDispatcher); + + struct SigningCohortParticipant { + address provider; + address signerAddress; + bytes signingRequestStaticKey; + uint256[20] gap; + } + + struct Domain { + address[] domainAdmins; + mapping(address domainAdmin => bool active) activeDomainAdmins; + mapping(uint256 chainId => bytes conditions) conditions; + } + + struct SigningCohort { + address initiator; + uint32 initTimestamp; + uint32 endTimestamp; + // TODO: what's the point of authority if we have a single global cohort? + address authority; + uint16 totalSignatures; + uint16 numSigners; + uint16 threshold; + SigningCohortParticipant[] signers; + uint256[] chains; + mapping(uint256 chainId => bytes conditions) conditions; // TODO: chainId -> condition itself or hash(condition) + mapping(uint256 domainId => Domain) domainConditions; + } + + bytes32 public constant INITIATOR_ROLE = keccak256("INITIATOR_ROLE"); + uint256 public constant SIGNING_REQUEST_KEY_LENGTH = 42; + + mapping(uint32 => SigningCohort) public signingCohorts; + uint256 public numberOfSigningCohorts; + + enum SigningCohortState { + NON_INITIATED, + AWAITING_SIGNATURES, + TIMEOUT, + ACTIVE, + EXPIRED + } + + TACoApplication public immutable application; + SigningCoordinatorDispatcher public signingCoordinatorDispatcher; + + uint96 private immutable minAuthorization; + + uint32 public timeout; + uint16 public maxCohortSize; + + uint256[20] internal __preSentinelGap; + SigningCohortParticipant internal __sentinelSigner; + uint256[20] internal __postSentinelGap; + + constructor(TACoApplication _application) { + application = _application; + minAuthorization = _application.minimumAuthorization(); + _disableInitializers(); + } + + function initialize( + uint32 _timeout, + uint16 _maxDkgSize, + SigningCoordinatorDispatcher _signingCoordinatorDispatcher, + address _admin + ) external initializer { + timeout = _timeout; + maxCohortSize = _maxDkgSize; + signingCoordinatorDispatcher = _signingCoordinatorDispatcher; + __AccessControlDefaultAdminRules_init(0, _admin); + } + + function setTimeout(uint32 newTimeout) external onlyRole(DEFAULT_ADMIN_ROLE) { + emit TimeoutChanged(timeout, newTimeout); + timeout = newTimeout; + } + + function setMaxDkgSize(uint16 newSize) external onlyRole(DEFAULT_ADMIN_ROLE) { + emit MaxCohortSizeChanged(maxCohortSize, newSize); + maxCohortSize = newSize; + } + + // TODO: this should be removed post-testing + function setDispatcher( + SigningCoordinatorDispatcher dispatcher + ) external onlyRole(DEFAULT_ADMIN_ROLE) { + require(address(dispatcher).code.length > 0, "Dispatcher must be contract"); + emit DispatcherChanged(address(signingCoordinatorDispatcher), address(dispatcher)); + signingCoordinatorDispatcher = dispatcher; + } + + function isCohortActive(SigningCohort storage cohort) internal view returns (bool) { + return getSigningCohortState(cohort) == SigningCohortState.ACTIVE; + } + + function isCohortActive(uint32 cohortId) external view returns (bool) { + SigningCohort storage cohort = signingCohorts[cohortId]; + return isCohortActive(cohort); + } + + function findSigner( + SigningCohort storage cohort, + address provider + ) internal view returns (bool, SigningCohortParticipant storage) { + uint256 length = cohort.signers.length; + if (length == 0) { + return (false, __sentinelSigner); + } + uint256 low = 0; + uint256 high = length - 1; + while (low <= high) { + uint256 mid = (low + high) / 2; + SigningCohortParticipant storage middleParticipant = cohort.signers[mid]; + if (middleParticipant.provider == provider) { + return (true, middleParticipant); + } else if (middleParticipant.provider < provider) { + low = mid + 1; + } else { + if (mid == 0) { + // prevent underflow of unsigned int + break; + } + high = mid - 1; + } + } + return (false, __sentinelSigner); + } + + function isSigner(uint32 cohortId, address provider) external view returns (bool) { + SigningCohort storage cohort = signingCohorts[cohortId]; + (bool found, ) = findSigner(cohort, provider); + return found; + } + + function getSigner( + SigningCohort storage cohort, + address provider + ) internal view returns (SigningCohortParticipant storage) { + (bool found, SigningCohortParticipant storage participant) = findSigner(cohort, provider); + require(found, "Participant not part of ritual"); + return participant; + } + + function getSigner( + uint32 cohortId, + address provider + ) external view returns (SigningCohortParticipant memory) { + SigningCohort storage cohort = signingCohorts[cohortId]; + SigningCohortParticipant memory participant = getSigner(cohort, provider); + return participant; + } + + function getSigners(uint32 cohortId) external view returns (SigningCohortParticipant[] memory) { + SigningCohort storage cohort = signingCohorts[cohortId]; + return cohort.signers; + } + + function getThreshold(uint32 cohortId) external view returns (uint16) { + SigningCohort storage cohort = signingCohorts[cohortId]; + return cohort.threshold; + } + + function getChains(uint32 cohortId) external view returns (uint256[] memory) { + SigningCohort storage cohort = signingCohorts[cohortId]; + return cohort.chains; + } + + function initiateSigningCohort( + uint256 chainId, + address authority, + address[] calldata providers, + uint16 threshold, + uint32 duration + ) + external + // TODO initiator role needed for now + onlyRole(INITIATOR_ROLE) + returns (uint32) + { + require(authority != address(0), "Invalid authority"); + uint16 length = uint16(providers.length); + require(2 <= length && length <= maxCohortSize, "Invalid number of nodes"); + require(threshold > 0 && threshold <= length, "Invalid threshold"); + require(duration >= 24 hours, "Invalid ritual duration"); + + uint32 id = uint32(numberOfSigningCohorts); + SigningCohort storage signingCohort = signingCohorts[id]; + numberOfSigningCohorts += 1; + + signingCohort.initiator = msg.sender; + signingCohort.authority = authority; + signingCohort.numSigners = length; + signingCohort.threshold = threshold; + signingCohort.initTimestamp = uint32(block.timestamp); + signingCohort.endTimestamp = signingCohort.initTimestamp + duration; + signingCohort.chains.push(chainId); + + address previous = address(0); + for (uint256 i = 0; i < length; i++) { + address current = providers[i]; + require( + application.authorizedStake(current) >= minAuthorization, + "Not enough authorization" + ); + require(previous < current, "Providers must be sorted"); + SigningCohortParticipant storage newParticipant = signingCohort.signers.push(); + newParticipant.provider = current; + previous = current; + } + emit InitiateSigningCohort(id, chainId, authority, providers); + return id; + } + + function setDomainAdmins( + uint32 cohortId, + uint256 domainId, + address[] memory domainAdmins + ) external { + SigningCohort storage signingCohort = signingCohorts[cohortId]; + require(isCohortActive(signingCohort), "Cohort not active"); + require( + signingCohort.authority == msg.sender, + "Only the cohort authority can set domain admin" + ); + require(domainId > 0, "Domain id can't be zero"); + Domain storage domain = signingCohort.domainConditions[domainId]; + for (uint256 i = 0; i < domain.domainAdmins.length; i++) { + address domainAdmin = domain.domainAdmins[i]; + domain.activeDomainAdmins[domainAdmin] = false; + } + domain.domainAdmins = domainAdmins; + for (uint256 i = 0; i < domain.domainAdmins.length; i++) { + address domainAdmin = domain.domainAdmins[i]; + domain.activeDomainAdmins[domainAdmin] = true; + } + // TODO emit event + } + + function conditionsCheck(SigningCohort storage signingCohort, uint256 chainId) internal view { + require(isCohortActive(signingCohort), "Cohort not active"); + // chainId must already be deployed for the cohort + bool chainDeployed = false; + for (uint256 i = 0; i < signingCohort.chains.length; i++) { + if (signingCohort.chains[i] == chainId) { + chainDeployed = true; + break; + } + } + require(chainDeployed, "Not already deployed"); + } + + function setSigningCohortConditions( + uint32 cohortId, + uint256 chainId, + bytes calldata conditions + ) external { + SigningCohort storage signingCohort = signingCohorts[cohortId]; + conditionsCheck(signingCohort, chainId); + require( + signingCohort.authority == msg.sender, + "Only the cohort authority can set conditions" + ); + signingCohort.conditions[chainId] = conditions; + emit SigningCohortConditionsSet(cohortId, msg.sender, chainId, conditions); + } + + function getUnsignedTransactionHash( + uint32 cohortId, + uint256 chainId, + bytes memory conditions, + uint256 domainId + ) public view returns (bytes32 dataHash) { + bytes memory data = abi.encodePacked(cohortId, domainId, chainId, conditions); + dataHash = keccak256(data); + } + + function setSigningCohortConditions( + uint32 cohortId, + uint256 chainId, + bytes calldata conditions, + uint256 domainId, + bytes calldata signature + ) external { + SigningCohort storage signingCohort = signingCohorts[cohortId]; + conditionsCheck(signingCohort, chainId); + require(domainId > 0, "Domain id can't be zero"); + Domain storage domain = signingCohort.domainConditions[domainId]; + + require( + domain.activeDomainAdmins[msg.sender], + "Only the cohort authority or a domain admin can set conditions" + ); + + SigningCoordinatorChild child = SigningCoordinatorChild( + getSigningCoordinatorChild(block.chainid) + ); + ThresholdSigningMultisig multisig = ThresholdSigningMultisig( + child.cohortMultisigs(cohortId) + ); + + bytes32 hash = getUnsignedTransactionHash(cohortId, chainId, conditions, domainId); + require( + multisig.isValidSignature(hash, signature) == multisig.MAGICVALUE(), + "Invalid Signature" + ); + domain.conditions[chainId] = conditions; + emit SigningCohortConditionsSet(cohortId, msg.sender, chainId, conditions); // TODO log domainId + } + + function getSigningCohortConditions( + uint32 cohortId, + uint256 chainId + ) external view returns (bytes[] memory) { + return getSigningCohortConditions(cohortId, chainId, 0); + } + + function getSigningCohortConditions( + uint32 cohortId, + uint256 chainId, + uint256 domainId + ) public view returns (bytes[] memory conditions) { + SigningCohort storage signingCohort = signingCohorts[cohortId]; + bytes memory coreConditions = signingCohort.conditions[chainId]; + bytes memory domainConditions = signingCohort.domainConditions[domainId].conditions[ + chainId + ]; + if (domainConditions.length > 0) { + conditions = new bytes[](2); + conditions[1] = domainConditions; + } else { + conditions = new bytes[](1); + } + conditions[0] = coreConditions; + return conditions; + } + + function getSigningCohortDataHash( + uint32 cohortId, + address operator + ) public view returns (bytes32) { + SigningCohort storage signingCohort = signingCohorts[cohortId]; + require(signingCohort.initiator != address(0), "Signing cohort not set"); + bytes32 dataHash = keccak256(abi.encode(cohortId, signingCohort.authority, operator)); + return dataHash; + } + + function postSigningCohortData( + uint32 cohortId, + bytes calldata signature, + bytes calldata signingRequestStaticKey + ) external { + SigningCohort storage signingCohort = signingCohorts[cohortId]; + require( + getSigningCohortState(signingCohort) == SigningCohortState.AWAITING_SIGNATURES, + "Not waiting for signatures" + ); + address provider = application.operatorToStakingProvider(msg.sender); + require(provider != address(0), "Operator has no bond with staking provider"); + + SigningCohortParticipant storage participant = getSigner(signingCohort, provider); + require(participant.provider != address(0), "Participant not part of signing ritual"); + require(participant.signerAddress == address(0), "Node already posted signature"); + require(application.authorizedStake(provider) > 0, "Not enough authorization"); + + bytes32 dataHash = getSigningCohortDataHash(cohortId, msg.sender); + address signerAddress = dataHash.toEthSignedMessageHash().recover(signature); + + participant.signerAddress = signerAddress; + signingCohort.totalSignatures++; + + require( + participant.signingRequestStaticKey.length == 0, + "Node already provided signing request static key" + ); + require( + signingRequestStaticKey.length == SIGNING_REQUEST_KEY_LENGTH, + "Invalid length for signing request static key" + ); + participant.signingRequestStaticKey = signingRequestStaticKey; + + emit SigningCohortSignaturePosted(cohortId, provider, signerAddress, signature); + + if (signingCohort.totalSignatures == signingCohort.numSigners) { + deploySigningMultisig(signingCohort.chains[0], cohortId); + } + } + + // TODO: not yet sure about this + function deployAdditionalChainForSigningMultisig( + uint256 chainId, + uint32 cohortId + ) external onlyRole(INITIATOR_ROLE) { + SigningCohort storage signingCohort = signingCohorts[cohortId]; + require(signingCohort.chains.length > 0, "Initial chain not yet deployed"); + for (uint256 i = 0; i < signingCohort.chains.length; i++) { + require(signingCohort.chains[i] != chainId, "Already deployed"); + } + deploySigningMultisig(chainId, cohortId); + signingCohort.chains.push(chainId); + } + + function deploySigningMultisig(uint256 chainId, uint32 cohortId) internal { + SigningCohort storage signingCohort = signingCohorts[cohortId]; + require(isCohortActive(signingCohort), "Cohort not active"); + + address[] memory _signers = new address[](signingCohort.numSigners); + for (uint256 i = 0; i < signingCohort.signers.length; i++) { + // ursula operator address does signing; not staking provider + _signers[i] = signingCohort.signers[i].signerAddress; + } + + signingCoordinatorDispatcher.dispatch( + chainId, + abi.encodeWithSelector( + ISigningCoordinatorChild.deployCohortMultiSig.selector, + cohortId, + _signers, + signingCohort.threshold + ) + ); + emit SigningCohortDeployed(cohortId, chainId); + } + + function getSigningCohortState(uint32 cohortId) public view returns (SigningCohortState) { + return getSigningCohortState(signingCohorts[cohortId]); + } + + function getSigningCohortState( + SigningCohort storage signingCohort + ) internal view returns (SigningCohortState) { + uint32 t0 = signingCohort.initTimestamp; + uint32 deadline = t0 + timeout; + if (t0 == 0) { + return SigningCohortState.NON_INITIATED; + } else if (signingCohort.totalSignatures == signingCohort.numSigners) { + // Cohort formation was successful + if (block.timestamp <= signingCohort.endTimestamp) { + return SigningCohortState.ACTIVE; + } + return SigningCohortState.EXPIRED; + } else if (block.timestamp > deadline) { + // DKG failed due to timeout + return SigningCohortState.TIMEOUT; + } else if (signingCohort.totalSignatures < signingCohort.numSigners) { + return SigningCohortState.AWAITING_SIGNATURES; + } else { + /** + * It shouldn't be possible to reach this state + */ + revert("Ambiguous signing ritual state"); + } + } + + function getSigningCoordinatorChild(uint256 chainId) public view returns (address) { + address child = signingCoordinatorDispatcher.getSigningCoordinatorChild(chainId); + return child; + } + + function extendSigningCohortDuration( + uint32 cohortId, + uint32 additionalDuration + ) external onlyRole(DEFAULT_ADMIN_ROLE) { + SigningCohort storage signingCohort = signingCohorts[cohortId]; + // TODO: while it's good to check if the cohort is active, it is + // not necessary at the moment + // require(isCohortActive(signingCohort), "Cohort not active"); + require(additionalDuration > 0, "Invalid duration"); + uint32 newEndTimestamp = signingCohort.endTimestamp + additionalDuration; + signingCohort.endTimestamp = newEndTimestamp; + } +} diff --git a/contracts/contracts/coordination/SigningCoordinatorChild.sol b/contracts/contracts/coordination/SigningCoordinatorChild.sol new file mode 100644 index 000000000..acc1e5b00 --- /dev/null +++ b/contracts/contracts/coordination/SigningCoordinatorChild.sol @@ -0,0 +1,79 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.0; + +import "@openzeppelin-upgradeable/contracts/access/OwnableUpgradeable.sol"; +import "@openzeppelin-upgradeable/contracts/proxy/utils/Initializable.sol"; +import "./ISigningCoordinatorChild.sol"; +import "./IThresholdSigningMultisig.sol"; +import "./ThresholdSigningMultisigCloneFactory.sol"; + +contract SigningCoordinatorChild is ISigningCoordinatorChild, Initializable, OwnableUpgradeable { + mapping(uint32 => address) public cohortMultisigs; + ThresholdSigningMultisigCloneFactory public signingMultisigFactory; + address public allowedCaller; + + event MultisigFactoryUpdated(address oldFactory, address newFactory); + event AllowedCallerUpdated(address oldCaller, address newCaller); + + constructor() { + _disableInitializers(); + } + + function initialize( + ThresholdSigningMultisigCloneFactory _signingMultisigFactory, + address _allowedCaller + ) public initializer { + require(address(_signingMultisigFactory).code.length > 0, "Factory must be contract"); + signingMultisigFactory = _signingMultisigFactory; + // L2 receiver on L2; Dispatcher on L1 + allowedCaller = _allowedCaller; + __Ownable_init(msg.sender); + } + + function setMultisigFactory( + ThresholdSigningMultisigCloneFactory multisigFactory + ) external onlyOwner { + require(address(multisigFactory).code.length > 0, "Factory must be contract"); + emit MultisigFactoryUpdated(address(signingMultisigFactory), address(multisigFactory)); + signingMultisigFactory = multisigFactory; + } + + function setAllowedCaller(address _allowedCaller) external onlyOwner { + require(_allowedCaller != address(0), "Invalid address"); + emit AllowedCallerUpdated(allowedCaller, _allowedCaller); + // L2 receiver on L2; Dispatcher on L1 + allowedCaller = _allowedCaller; + } + + function deployCohortMultiSig( + uint32 cohortId, + address[] calldata signers, + uint16 threshold + ) external { + require(allowedCaller == msg.sender, "Unauthorized caller"); + require(cohortMultisigs[cohortId] == address(0), "Multisig already deployed"); + address multisig = signingMultisigFactory.deploySigningMultisig( + signers, + threshold, + address(this), + cohortId + ); + cohortMultisigs[cohortId] = multisig; + emit CohortMultisigDeployed(cohortId, multisig); + } + + function updateMultiSigParameters( + uint32 cohortId, + address[] calldata signers, + uint16 threshold, + bool clearSigners + ) external { + require(allowedCaller == msg.sender, "Unauthorized caller"); + address multisig = cohortMultisigs[cohortId]; + require(multisig != address(0), "Multisig not deployed"); + IThresholdSigningMultisig multisigContract = IThresholdSigningMultisig(multisig); + multisigContract.updateMultiSigParameters(signers, threshold, clearSigners); + emit CohortMultisigUpdated(cohortId, multisig, signers, threshold, clearSigners); + } +} diff --git a/contracts/contracts/coordination/SigningCoordinatorDispatcher.sol b/contracts/contracts/coordination/SigningCoordinatorDispatcher.sol new file mode 100644 index 000000000..372876c49 --- /dev/null +++ b/contracts/contracts/coordination/SigningCoordinatorDispatcher.sol @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.0; + +import "@openzeppelin-upgradeable/contracts/access/OwnableUpgradeable.sol"; +import "@openzeppelin-upgradeable/contracts/proxy/utils/Initializable.sol"; +import "./ISigningCoordinatorChild.sol"; +import "./IL1Sender.sol"; + +contract SigningCoordinatorDispatcher is Initializable, OwnableUpgradeable { + struct DispatchTarget { + address l1Sender; + address signingCoordinatorChild; + } + + address public immutable signingCoordinator; + mapping(uint256 => DispatchTarget) public dispatchMap; + + constructor(address _signingCoordinator) { + require(_signingCoordinator.code.length > 0, "Signing app must be contract"); + signingCoordinator = _signingCoordinator; + _disableInitializers(); + } + + function initialize() external initializer { + __Ownable_init(msg.sender); + } + + function register( + uint256 chainId, + address l1Sender, + address signingCoordinatorChild + ) external onlyOwner { + require(chainId != 0, "Invalid chain ID"); + if (chainId != block.chainid) { + require(l1Sender != address(0), "Invalid L1 sender"); + } else { + // same chain so no L1 sender needed + require(l1Sender == address(0), "L1 sender not needed for same chain"); + } + require(signingCoordinatorChild != address(0), "Invalid target"); + dispatchMap[chainId] = DispatchTarget(l1Sender, signingCoordinatorChild); + } + + function unregister(uint256 chainId) external onlyOwner { + require(chainId > 0, "Invalid chain ID"); + delete dispatchMap[chainId]; + } + + function dispatch(uint256 chainId, bytes calldata callData) external { + require(signingCoordinator == msg.sender, "Unauthorized caller"); + DispatchTarget memory target = dispatchMap[chainId]; + require(target.signingCoordinatorChild != address(0), "Unknown target"); + if (chainId == block.chainid) { + // Same chain → direct call + // solhint-disable-next-line avoid-low-level-calls + (bool success, ) = target.signingCoordinatorChild.call(callData); + require(success, "Local call failed"); + } else { + // Cross-chain (e.g., L1 → L2) + require(target.l1Sender != address(0), "Unknown L1 sender"); + IL1Sender(target.l1Sender).sendData(target.signingCoordinatorChild, callData); + } + } + + function getSigningCoordinatorChild(uint256 chainId) external view returns (address) { + require(chainId != 0, "Invalid chain ID"); + return dispatchMap[chainId].signingCoordinatorChild; + } +} diff --git a/contracts/contracts/coordination/ThresholdSigningMultisig.sol b/contracts/contracts/coordination/ThresholdSigningMultisig.sol new file mode 100644 index 000000000..055daddf9 --- /dev/null +++ b/contracts/contracts/coordination/ThresholdSigningMultisig.sol @@ -0,0 +1,300 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts/interfaces/IERC1271.sol"; +import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; +import "@openzeppelin-upgradeable/contracts/proxy/utils/Initializable.sol"; +import "@openzeppelin-upgradeable/contracts/access/OwnableUpgradeable.sol"; +import "./IThresholdSigningMultisig.sol"; + +contract ThresholdSigningMultisig is + IThresholdSigningMultisig, + Initializable, + IERC1271, + OwnableUpgradeable +{ + using ECDSA for bytes32; + + // events + event Executed( + address indexed sender, + uint256 indexed nonce, + address indexed destination, + uint256 value + ); + event SignerAdded(address indexed signer); + event SignerRemoved(address indexed signer); + event SignerReplaced(address indexed signer, address newSigner); + event SignedMessageCached(bytes32 indexed hash); + event ThresholdUpdated(uint16 threshold); + + uint256 public constant MAX_SIGNER_COUNT = 40; + + uint256 public nonce; + mapping(address => bool) public isSigner; + address[] public signers; + uint16 public threshold; + + bytes4 public constant MAGICVALUE = 0x1626ba7e; + bytes4 public constant INVALID_SIGNATURE = 0xffffffff; + mapping(bytes32 => bytes32) public validSignatures; + + /** + * @param _signers List of signers. + * @param _threshold Threshold number of required signings + * @param _initialOwner Initial owner of the contract + **/ + function initialize( + address[] memory _signers, + uint16 _threshold, + address _initialOwner + ) public initializer { + require(owner() == address(0), "Already initialized"); + __Ownable_init(_initialOwner); + require( + _signers.length <= MAX_SIGNER_COUNT && _threshold <= _signers.length && _threshold > 0, + "Invalid arguments" + ); + + for (uint256 i = 0; i < _signers.length; i++) { + address signer = _signers[i]; + require(!isSigner[signer] && signer != address(0), "Already a signer"); + isSigner[signer] = true; + } + nonce = 1; + signers = _signers; + threshold = _threshold; + } + + /** + * @notice Get unsigned hash for transaction parameters + * @dev Follows ERC191 signature scheme: https://github.com/ethereum/EIPs/issues/191 + * @param sender Trustee who will execute the transaction + * @param destination Destination address + * @param value Amount of ETH to transfer + * @param data Call data + * @param nonce Nonce + **/ + function getUnsignedTransactionHash( + address sender, + address destination, + uint256 value, + bytes memory data, + uint256 nonce + ) public view returns (bytes32) { + bytes memory encodedData = abi.encodePacked( + address(this), + sender, + destination, + value, + data, + nonce + ); + return MessageHashUtils.toEthSignedMessageHash(encodedData); + } + + /** + * @dev Note that address recovered from signatures must be strictly increasing + * @param destination Destination address + * @param value Amount of ETH to transfer + * @param data Call data + * @param signature The aggregated signatures for signers + **/ + function execute( + address destination, + uint256 value, + bytes memory data, + bytes memory signature + ) external { + bytes32 _hash = getUnsignedTransactionHash(msg.sender, destination, value, data, nonce); + require(isValidSignature(_hash, signature) == MAGICVALUE, "Invalid Signature"); + emit Executed(msg.sender, nonce, destination, value); + nonce++; + (bool success, ) = destination.call{value: value}(data); + require(success, "Transaction failed"); + } + + /** + * @notice Check if the signatures are valid. + * @param hash Hash of the transaction + * @param signature The signatures for signers + **/ + function isValidSignature( + bytes32 hash, + bytes memory signature + ) public view override returns (bytes4) { + // split up signature bytes into array + require(signature.length >= (threshold * 65), "Invalid threshold of signatures"); + if (validSignatures[hash] == keccak256(signature)) { + // TODO is this sufficient? + // - in this case the message hash was previously signed and cached + return MAGICVALUE; + } + + address lastSigner = address(0); + for (uint16 i = 0; i < threshold; i++) { + (uint8 v, bytes32 r, bytes32 s) = signatureSplit(signature, i); + address recovered = ecrecover(hash, v, r, s); + if (!isSigner[recovered]) { + return INVALID_SIGNATURE; + } + // ensure signatures are for different signers + if (recovered <= lastSigner) { + return INVALID_SIGNATURE; + } + lastSigner = recovered; + } + + return MAGICVALUE; + } + + /** + * @notice Splits signature bytes into `uint8 v, bytes32 r, bytes32 s`. + * @dev Make sure to perform a bounds check for @param pos, to avoid out of bounds access on @param signatures + * The signature format is a compact form of {bytes32 r}{bytes32 s}{uint8 v} + * Compact means uint8 is not padded to 32 bytes. + * @param _signatures Concatenated {r, s, v} signatures. + * @param _pos Which signature to read. + * A prior bounds check of this parameter should be performed, to avoid out of bounds access. + * @return v Recovery ID or Safe signature type. + * @return r Output value r of the signature. + * @return s Output value s of the signature. + */ + function signatureSplit( + bytes memory _signatures, + uint256 _pos + ) internal pure returns (uint8 v, bytes32 r, bytes32 s) { + /* solhint-disable no-inline-assembly */ + /// @solidity memory-safe-assembly + assembly { + let signaturePos := mul(0x41, _pos) + r := mload(add(_signatures, add(signaturePos, 0x20))) + s := mload(add(_signatures, add(signaturePos, 0x40))) + v := byte(0, mload(add(_signatures, add(signaturePos, 0x60)))) + } + /* solhint-enable no-inline-assembly */ + } + + /** + * @notice Allows to add a new signer + * @dev Transaction has to be sent by `execute` method. + * @param newSigner Address of new signer + **/ + function addSigner(address newSigner) public onlyOwner { + require(signers.length < MAX_SIGNER_COUNT, "At max signers"); + require(newSigner != address(0) && !isSigner[newSigner], "Invalid signer"); + signers.push(newSigner); + isSigner[newSigner] = true; + emit SignerAdded(newSigner); + } + + /** + * @notice Allows to remove an signer + * @dev Transaction has to be sent by `execute` method. + * @param signerToRemove Address of signer + **/ + function removeSigner(address signerToRemove) public onlyOwner { + require(signers.length > threshold && isSigner[signerToRemove], "Invalid signer"); + isSigner[signerToRemove] = false; + + uint256 index = signers.length; + for (uint256 i = 0; i < signers.length; i++) { + if (signers[i] == signerToRemove) { + index = i; + break; + } + } + require(index < signers.length && signers[index] == signerToRemove, "Signer not found"); + signers[index] = signers[signers.length - 1]; + signers.pop(); // Remove last element + emit SignerRemoved(signerToRemove); + } + + /** + * @notice Allows to replace an signer with a new signer. + * @dev Transaction has to be sent by `execute` method. + * @param oldSigner Address of signer to be replaced. + * @param newSigner Address of new signer. + */ + function replaceSigner(address oldSigner, address newSigner) public onlyOwner { + require(isSigner[oldSigner] && !isSigner[newSigner], "Invalid Signer"); + + removeSigner(oldSigner); + addSigner(newSigner); + emit SignerReplaced(oldSigner, newSigner); + } + + function getSigners() public view returns (address[] memory) { + return signers; + } + + /** + * @notice Allows to change the threshold number of signatures + * @dev Transaction has to be sent by `execute` method + * @param newThreshold Threshold number of required signatures + **/ + function changeThreshold(uint16 newThreshold) public onlyOwner { + require(newThreshold <= signers.length && newThreshold > 0, "Invalid threshold"); + threshold = newThreshold; + emit ThresholdUpdated(newThreshold); + } + + /** + * @notice Bulk update of multisig + * @param newSigners List of signers. + * @param newThreshold Threshold number of required signatures (0 = no change) + * @param clearSigners Whether to clear existing signers or not + **/ + function updateMultiSigParameters( + address[] calldata newSigners, + uint16 newThreshold, + bool clearSigners + ) external onlyOwner { + uint256 signersLength_ = newSigners.length; + uint256 storedSignersLength_ = signers.length; + + uint256 signersCount_ = clearSigners + ? signersLength_ + : signersLength_ + storedSignersLength_; + require(newThreshold <= signersCount_, "Invalid threshold"); + require(signersCount_ <= MAX_SIGNER_COUNT, "Too Many Signers"); + + if (clearSigners) { + removeAllSigners(); + } + + for (uint256 i = 0; i < signersLength_; ++i) { + address newSigner_ = newSigners[i]; + require(newSigner_ != address(0), "Invalid signer"); + addSigner(newSigner_); + } + + if (newThreshold != 0) { + changeThreshold(newThreshold); + } + } + + function removeAllSigners() internal { + for (uint256 i = 0; i < signers.length; ++i) { + address oldSigner = signers[i]; + delete isSigner[oldSigner]; + emit SignerRemoved(oldSigner); + } + delete signers; + } + + // + // Cached signatures (in case of cohort rotation/handover) + // + + function saveSignature(bytes32 hash, bytes memory signature) public { + // Save signature + require(isValidSignature(hash, signature) == MAGICVALUE, "Invalid Signature"); + + // TODO: is this sufficient? + validSignatures[hash] = keccak256(signature); + emit SignedMessageCached(hash); + } +} diff --git a/contracts/contracts/coordination/ThresholdSigningMultisigCloneFactory.sol b/contracts/contracts/coordination/ThresholdSigningMultisigCloneFactory.sol new file mode 100644 index 000000000..b4f04f413 --- /dev/null +++ b/contracts/contracts/coordination/ThresholdSigningMultisigCloneFactory.sol @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts/proxy/Clones.sol"; +import "./IThresholdSigningMultisig.sol"; + +contract ThresholdSigningMultisigCloneFactory { + address public immutable implementation; + address public immutable signingCoordinatorChild; + + event ThresholdMultisigCloneDeployed(address cloneAddress, uint256 cohortId); + + constructor(address _implementation, address _signingCoordinatorChild) { + implementation = _implementation; + require(_signingCoordinatorChild.code.length > 0, "Child app must be contract"); + signingCoordinatorChild = _signingCoordinatorChild; + } + + function deploySigningMultisig( + address[] memory signers, + uint16 threshold, + address initialOwner, + uint256 cohortId + ) external returns (address) { + require(signingCoordinatorChild == msg.sender, "Unauthorized caller"); + bytes32 saltBytes = bytes32(cohortId); + address clone = Clones.cloneDeterministic(implementation, saltBytes); + IThresholdSigningMultisig(clone).initialize(signers, threshold, initialOwner); + emit ThresholdMultisigCloneDeployed(clone, cohortId); + return clone; + } + + function getCloneAddress(uint256 cohortId) external view returns (address) { + return Clones.predictDeterministicAddress(implementation, bytes32(cohortId), address(this)); + } +} diff --git a/contracts/test/MockOpBridgeMessenger.sol b/contracts/test/MockOpBridgeMessenger.sol new file mode 100644 index 000000000..09f236b97 --- /dev/null +++ b/contracts/test/MockOpBridgeMessenger.sol @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.0; + +import "@openzeppelin-upgradeable/contracts/proxy/utils/Initializable.sol"; +import "../contracts/coordination/IL2Receiver.sol"; + +contract MockOpBridgeMessenger is Initializable { + address public l1Sender; + + function initialize(address _l1Sender) external initializer { + l1Sender = _l1Sender; + } + + function xDomainMessageSender() external view returns (address) { + return l1Sender; + } + + // solhint-disable-next-line no-unused-vars + function sendMessage(address target, bytes calldata data, uint32 gasLimit) external { + require(msg.sender == l1Sender, "Not from L1 sender"); + // solhint-disable-next-line avoid-low-level-calls + (bool success, ) = target.call(data); + require(success, "Bridge Execution failed"); + } +} diff --git a/contracts/test/SigningCoordinatorTestSet.sol b/contracts/test/SigningCoordinatorTestSet.sol new file mode 100644 index 000000000..09ce113fe --- /dev/null +++ b/contracts/test/SigningCoordinatorTestSet.sol @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.0; + +import "@openzeppelin-upgradeable/contracts/proxy/utils/Initializable.sol"; +import "../contracts/coordination/SigningCoordinatorDispatcher.sol"; +import "../contracts/coordination/ISigningCoordinatorChild.sol"; + +/** + * @notice Mock contract for testing SigningCoordinatorDispatcher + */ +contract SigningCoordinatorMock is Initializable { + SigningCoordinatorDispatcher public signingCoordinatorDispatcher; + + function setDispatcher(SigningCoordinatorDispatcher dispatcher) external { + require(address(dispatcher).code.length > 0, "Dispatcher must be contract"); + signingCoordinatorDispatcher = dispatcher; + } + + function callDispatch(uint256 chainId, bytes calldata callData) external { + signingCoordinatorDispatcher.dispatch(chainId, callData); + } +} + +contract SigningCoordinatorChildMock is ISigningCoordinatorChild { + function deployCohortMultiSig(uint32 cohortId, address[] calldata, uint16) external { + emit CohortMultisigDeployed(cohortId, address(0)); + } + + function updateMultiSigParameters( + uint32 cohortId, + address[] calldata signers, + uint16 threshold, + bool clearSigners + ) external { + emit CohortMultisigUpdated(cohortId, address(0), signers, threshold, clearSigners); + } +} + +contract L1SenderMock { + function sendData(address target, bytes calldata data) external { + // solhint-disable-next-line avoid-low-level-calls + (bool success, ) = target.call(data); + require(success, "Execution failed"); + } +} diff --git a/contracts/xchain/PolygonChild.sol b/contracts/xchain/PolygonChild.sol index a890613d5..f532168a3 100644 --- a/contracts/xchain/PolygonChild.sol +++ b/contracts/xchain/PolygonChild.sol @@ -35,7 +35,7 @@ contract PolygonChild is FxBaseChildTunnel, Ownable { } } - fallback() external { + fallback() external payable { require(msg.sender == childApplication, "Only child app can call this method"); _sendMessageToRoot(msg.data); } diff --git a/deployment/artifacts/lynx.json b/deployment/artifacts/lynx.json index e2cc98be7..0b3453cee 100644 --- a/deployment/artifacts/lynx.json +++ b/deployment/artifacts/lynx.json @@ -552,113 +552,182 @@ "block_number": 4886826, "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" }, - "TACoApplication": { - "address": "0x329bc9Df0e45f360583374726ccaFF003264a136", + "OpL1Sender": { + "address": "0xF429C1f2d42765FE2b04CC62ab037564C2C66e5E", "abi": [ { "type": "constructor", "stateMutability": "nonpayable", "inputs": [ { - "name": "_token", + "name": "_dispatcher", "type": "address", - "internalType": "contract IERC20" + "internalType": "address" }, { - "name": "_tStaking", + "name": "_messenger", "type": "address", - "internalType": "contract IStaking" - }, - { - "name": "_minimumAuthorization", - "type": "uint96", - "internalType": "uint96" - }, - { - "name": "_minOperatorSeconds", - "type": "uint256", - "internalType": "uint256" + "internalType": "contract ICrossDomainMessenger" }, { - "name": "_rewardDuration", - "type": "uint256", - "internalType": "uint256" - }, + "name": "_gasLimit", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "type": "error", + "name": "InvalidInitialization", + "inputs": [] + }, + { + "type": "error", + "name": "NotInitializing", + "inputs": [] + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ { - "name": "_deauthorizationDuration", - "type": "uint256", - "internalType": "uint256" - }, + "name": "version", + "type": "uint64", + "internalType": "uint64", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "dispatcher", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "_commitmentDurationOptions", - "type": "uint64[]", - "internalType": "uint64[]" - }, + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "gasLimit", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "_commitmentDeadline", - "type": "uint64", - "internalType": "uint64" - }, + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "type": "function", + "name": "initialize", + "stateMutability": "nonpayable", + "inputs": [ { - "name": "_penaltyDefault", - "type": "uint192", - "internalType": "uint192" - }, + "name": "_l2Receiver", + "type": "address", + "internalType": "contract IL2Receiver" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "l2Receiver", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "_penaltyDuration", - "type": "uint256", - "internalType": "uint256" - }, + "name": "", + "type": "address", + "internalType": "contract IL2Receiver" + } + ] + }, + { + "type": "function", + "name": "messenger", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "_penaltyIncrement", - "type": "uint192", - "internalType": "uint192" + "name": "", + "type": "address", + "internalType": "contract ICrossDomainMessenger" } ] }, { - "type": "error", - "name": "AddressEmptyCode", + "type": "function", + "name": "sendData", + "stateMutability": "nonpayable", "inputs": [ { "name": "target", "type": "address", "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" } - ] - }, + ], + "outputs": [] + } + ], + "tx_hash": "0x9903c3be4d7e7e0b7638bb52850292adb780039b9ea1ab2d299e8a9b1136dcec", + "block_number": 9595247, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "SigningCoordinator": { + "address": "0x4A0cdd9f96D980A898C34efdD7F17431572a8EEe", + "abi": [ { - "type": "error", - "name": "AddressInsufficientBalance", + "type": "constructor", + "stateMutability": "nonpayable", "inputs": [ { - "name": "account", + "name": "_application", "type": "address", - "internalType": "address" + "internalType": "contract TACoApplication" } ] }, { "type": "error", - "name": "FailedInnerCall", + "name": "AccessControlBadConfirmation", "inputs": [] }, { "type": "error", - "name": "InvalidInitialization", - "inputs": [] + "name": "AccessControlEnforcedDefaultAdminDelay", + "inputs": [ + { + "name": "schedule", + "type": "uint48", + "internalType": "uint48" + } + ] }, { "type": "error", - "name": "NotInitializing", + "name": "AccessControlEnforcedDefaultAdminRules", "inputs": [] }, { "type": "error", - "name": "OwnableInvalidOwner", + "name": "AccessControlInvalidDefaultAdmin", "inputs": [ { - "name": "owner", + "name": "defaultAdmin", "type": "address", "internalType": "address" } @@ -666,15 +735,57 @@ }, { "type": "error", - "name": "OwnableUnauthorizedAccount", + "name": "AccessControlUnauthorizedAccount", "inputs": [ { "name": "account", "type": "address", "internalType": "address" + }, + { + "name": "neededRole", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "ECDSAInvalidSignature", + "inputs": [] + }, + { + "type": "error", + "name": "ECDSAInvalidSignatureLength", + "inputs": [ + { + "name": "length", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ECDSAInvalidSignatureS", + "inputs": [ + { + "name": "s", + "type": "bytes32", + "internalType": "bytes32" } ] }, + { + "type": "error", + "name": "InvalidInitialization", + "inputs": [] + }, + { + "type": "error", + "name": "NotInitializing", + "inputs": [] + }, { "type": "error", "name": "SafeCastOverflowedUintDowncast", @@ -692,36 +803,50 @@ ] }, { - "type": "error", - "name": "SafeERC20FailedOperation", + "type": "event", + "name": "DefaultAdminDelayChangeCanceled", + "inputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "DefaultAdminDelayChangeScheduled", "inputs": [ { - "name": "token", - "type": "address", - "internalType": "address" + "name": "newDelay", + "type": "uint48", + "internalType": "uint48", + "indexed": false + }, + { + "name": "effectSchedule", + "type": "uint48", + "internalType": "uint48", + "indexed": false } - ] + ], + "anonymous": false }, { "type": "event", - "name": "AuthorizationDecreaseApproved", + "name": "DefaultAdminTransferCanceled", + "inputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "DefaultAdminTransferScheduled", "inputs": [ { - "name": "stakingProvider", + "name": "newAdmin", "type": "address", "internalType": "address", "indexed": true }, { - "name": "fromAmount", - "type": "uint96", - "internalType": "uint96", - "indexed": false - }, - { - "name": "toAmount", - "type": "uint96", - "internalType": "uint96", + "name": "acceptSchedule", + "type": "uint48", + "internalType": "uint48", "indexed": false } ], @@ -729,49 +854,18 @@ }, { "type": "event", - "name": "AuthorizationDecreaseRequested", + "name": "DispatcherChanged", "inputs": [ { - "name": "stakingProvider", + "name": "oldDispatcher", "type": "address", "internalType": "address", - "indexed": true - }, - { - "name": "fromAmount", - "type": "uint96", - "internalType": "uint96", "indexed": false }, { - "name": "toAmount", - "type": "uint96", - "internalType": "uint96", - "indexed": false - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "AuthorizationIncreased", - "inputs": [ - { - "name": "stakingProvider", + "name": "newDispatcher", "type": "address", "internalType": "address", - "indexed": true - }, - { - "name": "fromAmount", - "type": "uint96", - "internalType": "uint96", - "indexed": false - }, - { - "name": "toAmount", - "type": "uint96", - "internalType": "uint96", "indexed": false } ], @@ -779,24 +873,12 @@ }, { "type": "event", - "name": "AuthorizationInvoluntaryDecreased", + "name": "Initialized", "inputs": [ { - "name": "stakingProvider", - "type": "address", - "internalType": "address", - "indexed": true - }, - { - "name": "fromAmount", - "type": "uint96", - "internalType": "uint96", - "indexed": false - }, - { - "name": "toAmount", - "type": "uint96", - "internalType": "uint96", + "name": "version", + "type": "uint64", + "internalType": "uint64", "indexed": false } ], @@ -804,43 +886,30 @@ }, { "type": "event", - "name": "AuthorizationReSynchronized", + "name": "InitiateSigningCohort", "inputs": [ { - "name": "stakingProvider", - "type": "address", - "internalType": "address", + "name": "cohortId", + "type": "uint32", + "internalType": "uint32", "indexed": true }, { - "name": "fromAmount", - "type": "uint96", - "internalType": "uint96", + "name": "chainId", + "type": "uint256", + "internalType": "uint256", "indexed": false }, { - "name": "toAmount", - "type": "uint96", - "internalType": "uint96", - "indexed": false - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "CommitmentMade", - "inputs": [ - { - "name": "stakingProvider", + "name": "authority", "type": "address", "internalType": "address", "indexed": true }, { - "name": "endCommitment", - "type": "uint256", - "internalType": "uint256", + "name": "participants", + "type": "address[]", + "internalType": "address[]", "indexed": false } ], @@ -848,12 +917,18 @@ }, { "type": "event", - "name": "Initialized", + "name": "MaxCohortSizeChanged", "inputs": [ { - "name": "version", - "type": "uint64", - "internalType": "uint64", + "name": "oldSize", + "type": "uint16", + "internalType": "uint16", + "indexed": false + }, + { + "name": "newSize", + "type": "uint16", + "internalType": "uint16", "indexed": false } ], @@ -861,103 +936,72 @@ }, { "type": "event", - "name": "ManualChildSynchronizationSent", + "name": "RoleAdminChanged", "inputs": [ { - "name": "stakingProvider", - "type": "address", - "internalType": "address", + "name": "role", + "type": "bytes32", + "internalType": "bytes32", "indexed": true }, { - "name": "authorized", - "type": "uint96", - "internalType": "uint96", - "indexed": false - }, - { - "name": "deauthorizing", - "type": "uint96", - "internalType": "uint96", - "indexed": false - }, - { - "name": "endDeauthorization", - "type": "uint64", - "internalType": "uint64", - "indexed": false + "name": "previousAdminRole", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true }, { - "name": "operator", - "type": "address", - "internalType": "address", - "indexed": false + "name": "newAdminRole", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true } ], "anonymous": false }, { "type": "event", - "name": "OperatorBonded", + "name": "RoleGranted", "inputs": [ { - "name": "stakingProvider", - "type": "address", - "internalType": "address", + "name": "role", + "type": "bytes32", + "internalType": "bytes32", "indexed": true }, { - "name": "operator", + "name": "account", "type": "address", "internalType": "address", "indexed": true }, { - "name": "previousOperator", + "name": "sender", "type": "address", "internalType": "address", "indexed": true - }, - { - "name": "startTimestamp", - "type": "uint256", - "internalType": "uint256", - "indexed": false } ], "anonymous": false }, { "type": "event", - "name": "OperatorConfirmed", + "name": "RoleRevoked", "inputs": [ { - "name": "stakingProvider", - "type": "address", - "internalType": "address", + "name": "role", + "type": "bytes32", + "internalType": "bytes32", "indexed": true }, { - "name": "operator", - "type": "address", - "internalType": "address", - "indexed": true - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "OwnershipTransferred", - "inputs": [ - { - "name": "previousOwner", + "name": "account", "type": "address", "internalType": "address", "indexed": true }, { - "name": "newOwner", + "name": "sender", "type": "address", "internalType": "address", "indexed": true @@ -967,24 +1011,24 @@ }, { "type": "event", - "name": "Penalized", + "name": "SigningCohortConditionsSet", "inputs": [ { - "name": "stakingProvider", - "type": "address", - "internalType": "address", + "name": "cohortId", + "type": "uint32", + "internalType": "uint32", "indexed": true }, { - "name": "penaltyPercent", + "name": "chainId", "type": "uint256", "internalType": "uint256", "indexed": false }, { - "name": "endPenalty", - "type": "uint64", - "internalType": "uint64", + "name": "conditions", + "type": "bytes", + "internalType": "bytes", "indexed": false } ], @@ -992,10 +1036,16 @@ }, { "type": "event", - "name": "RewardAdded", + "name": "SigningCohortDeployed", "inputs": [ { - "name": "reward", + "name": "cohortId", + "type": "uint32", + "internalType": "uint32", + "indexed": true + }, + { + "name": "chainId", "type": "uint256", "internalType": "uint256", "indexed": false @@ -1005,56 +1055,30 @@ }, { "type": "event", - "name": "RewardContractSet", - "inputs": [ - { - "name": "rewardContract", - "type": "address", - "internalType": "address", - "indexed": true - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "RewardDistributorSet", - "inputs": [ - { - "name": "distributor", - "type": "address", - "internalType": "address", - "indexed": true - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "RewardPaid", + "name": "SigningCohortSignaturePosted", "inputs": [ { - "name": "sender", - "type": "address", - "internalType": "address", + "name": "cohortId", + "type": "uint32", + "internalType": "uint32", "indexed": true }, { - "name": "stakingProvider", + "name": "provider", "type": "address", "internalType": "address", "indexed": true }, { - "name": "beneficiary", + "name": "signer", "type": "address", "internalType": "address", "indexed": true }, { - "name": "reward", - "type": "uint256", - "internalType": "uint256", + "name": "signature", + "type": "bytes", + "internalType": "bytes", "indexed": false } ], @@ -1062,83 +1086,52 @@ }, { "type": "event", - "name": "RewardReset", + "name": "TimeoutChanged", "inputs": [ { - "name": "stakingProvider", - "type": "address", - "internalType": "address", - "indexed": true + "name": "oldTimeout", + "type": "uint32", + "internalType": "uint32", + "indexed": false + }, + { + "name": "newTimeout", + "type": "uint32", + "internalType": "uint32", + "indexed": false } ], "anonymous": false }, { - "type": "event", - "name": "RewardsWithdrawn", - "inputs": [ - { - "name": "stakingProvider", - "type": "address", - "internalType": "address", - "indexed": true - }, - { - "name": "amount", - "type": "uint96", - "internalType": "uint96", - "indexed": false - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Slashed", - "inputs": [ - { - "name": "stakingProvider", - "type": "address", - "internalType": "address", - "indexed": true - }, - { - "name": "penalty", - "type": "uint256", - "internalType": "uint256", - "indexed": false - }, - { - "name": "investigator", - "type": "address", - "internalType": "address", - "indexed": true - }, + "type": "function", + "name": "DEFAULT_ADMIN_ROLE", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "reward", - "type": "uint256", - "internalType": "uint256", - "indexed": false + "name": "", + "type": "bytes32", + "internalType": "bytes32" } - ], - "anonymous": false + ] }, { "type": "function", - "name": "PENALTY_BASE", + "name": "INITIATOR_ROLE", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "uint192", - "internalType": "uint192" + "type": "bytes32", + "internalType": "bytes32" } ] }, { "type": "function", - "name": "REWARD_PER_TOKEN_MULTIPLIER", + "name": "SIGNING_REQUEST_KEY_LENGTH", "stateMutability": "view", "inputs": [], "outputs": [ @@ -1151,24 +1144,31 @@ }, { "type": "function", - "name": "adjudicator", + "name": "acceptDefaultAdminTransfer", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "application", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", "type": "address", - "internalType": "address" + "internalType": "contract TACoApplication" } ] }, { "type": "function", - "name": "approveAuthorizationDecrease", + "name": "beginDefaultAdminTransfer", "stateMutability": "nonpayable", "inputs": [ { - "name": "_stakingProvider", + "name": "newAdmin", "type": "address", "internalType": "address" } @@ -1177,357 +1177,368 @@ }, { "type": "function", - "name": "authorizationDecreaseRequested", + "name": "cancelDefaultAdminTransfer", "stateMutability": "nonpayable", - "inputs": [ - { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" - }, - { - "name": "_fromAmount", - "type": "uint96", - "internalType": "uint96" - }, - { - "name": "_toAmount", - "type": "uint96", - "internalType": "uint96" - } - ], + "inputs": [], "outputs": [] }, { "type": "function", - "name": "authorizationIncreased", + "name": "changeDefaultAdminDelay", "stateMutability": "nonpayable", "inputs": [ { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" - }, - { - "name": "_fromAmount", - "type": "uint96", - "internalType": "uint96" - }, - { - "name": "_toAmount", - "type": "uint96", - "internalType": "uint96" + "name": "newDelay", + "type": "uint48", + "internalType": "uint48" } ], "outputs": [] }, { "type": "function", - "name": "authorizationParameters", + "name": "defaultAdmin", "stateMutability": "view", "inputs": [], "outputs": [ { - "name": "_minimumAuthorization", - "type": "uint96", - "internalType": "uint96" - }, - { - "name": "authorizationDecreaseDelay", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "authorizationDecreaseChangePeriod", - "type": "uint64", - "internalType": "uint64" + "name": "", + "type": "address", + "internalType": "address" } ] }, { "type": "function", - "name": "authorizedOverall", + "name": "defaultAdminDelay", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "uint96", - "internalType": "uint96" + "type": "uint48", + "internalType": "uint48" } ] }, { "type": "function", - "name": "authorizedStake", + "name": "defaultAdminDelayIncreaseWait", "stateMutability": "view", - "inputs": [ - { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" - } - ], + "inputs": [], "outputs": [ { "name": "", - "type": "uint96", - "internalType": "uint96" + "type": "uint48", + "internalType": "uint48" } ] }, { "type": "function", - "name": "availableRewards", - "stateMutability": "view", + "name": "deployAdditionalChainForSigningMultisig", + "stateMutability": "nonpayable", "inputs": [ { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ + "name": "chainId", + "type": "uint256", + "internalType": "uint256" + }, { - "name": "", - "type": "uint96", - "internalType": "uint96" + "name": "cohortId", + "type": "uint32", + "internalType": "uint32" } - ] + ], + "outputs": [] }, { "type": "function", - "name": "bondOperator", + "name": "extendSigningCohortDuration", "stateMutability": "nonpayable", "inputs": [ { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" + "name": "cohortId", + "type": "uint32", + "internalType": "uint32" }, { - "name": "_operator", - "type": "address", - "internalType": "address" + "name": "additionalDuration", + "type": "uint32", + "internalType": "uint32" } ], "outputs": [] }, { "type": "function", - "name": "childApplication", + "name": "getChains", "stateMutability": "view", - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "", - "type": "address", - "internalType": "contract ITACoRootToChild" + "name": "cohortId", + "type": "uint32", + "internalType": "uint32" } - ] - }, - { - "type": "function", - "name": "commitmentDeadline", - "stateMutability": "view", - "inputs": [], + ], "outputs": [ { "name": "", - "type": "uint64", - "internalType": "uint64" + "type": "uint256[]", + "internalType": "uint256[]" } ] }, { "type": "function", - "name": "commitmentDurationOption1", + "name": "getRoleAdmin", "stateMutability": "view", - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "", - "type": "uint64", - "internalType": "uint64" + "name": "role", + "type": "bytes32", + "internalType": "bytes32" } - ] - }, - { - "type": "function", - "name": "commitmentDurationOption2", - "stateMutability": "view", - "inputs": [], + ], "outputs": [ { "name": "", - "type": "uint64", - "internalType": "uint64" + "type": "bytes32", + "internalType": "bytes32" } ] }, { "type": "function", - "name": "commitmentDurationOption3", + "name": "getSigner", "stateMutability": "view", - "inputs": [], + "inputs": [ + { + "name": "cohortId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "provider", + "type": "address", + "internalType": "address" + } + ], "outputs": [ { "name": "", - "type": "uint64", - "internalType": "uint64" + "type": "tuple", + "components": [ + { + "name": "provider", + "type": "address", + "internalType": "address" + }, + { + "name": "signerAddress", + "type": "address", + "internalType": "address" + }, + { + "name": "signingRequestStaticKey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "gap", + "type": "uint256[20]", + "internalType": "uint256[20]" + } + ], + "internalType": "struct SigningCoordinator.SigningCohortParticipant" } ] }, { "type": "function", - "name": "commitmentDurationOption4", + "name": "getSigners", "stateMutability": "view", - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "", - "type": "uint64", - "internalType": "uint64" + "name": "cohortId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple[]", + "components": [ + { + "name": "provider", + "type": "address", + "internalType": "address" + }, + { + "name": "signerAddress", + "type": "address", + "internalType": "address" + }, + { + "name": "signingRequestStaticKey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "gap", + "type": "uint256[20]", + "internalType": "uint256[20]" + } + ], + "internalType": "struct SigningCoordinator.SigningCohortParticipant[]" } ] }, { "type": "function", - "name": "confirmOperatorAddress", - "stateMutability": "nonpayable", + "name": "getSigningCohortConditions", + "stateMutability": "view", "inputs": [ { - "name": "_operator", - "type": "address", - "internalType": "address" + "name": "cohortId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "chainId", + "type": "uint256", + "internalType": "uint256" } ], - "outputs": [] - }, - { - "type": "function", - "name": "deauthorizationDuration", - "stateMutability": "view", - "inputs": [], "outputs": [ { "name": "", - "type": "uint256", - "internalType": "uint256" + "type": "bytes", + "internalType": "bytes" } ] }, { "type": "function", - "name": "eligibleStake", + "name": "getSigningCohortDataHash", "stateMutability": "view", "inputs": [ { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" + "name": "cohortId", + "type": "uint32", + "internalType": "uint32" }, { - "name": "_endDate", - "type": "uint256", - "internalType": "uint256" + "name": "operator", + "type": "address", + "internalType": "address" } ], "outputs": [ { "name": "", - "type": "uint96", - "internalType": "uint96" + "type": "bytes32", + "internalType": "bytes32" } ] }, { "type": "function", - "name": "getActiveStakingProviders", + "name": "getSigningCohortState", "stateMutability": "view", "inputs": [ { - "name": "_startIndex", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_maxStakingProviders", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_cohortDuration", + "name": "cohortId", "type": "uint32", "internalType": "uint32" } ], "outputs": [ { - "name": "allAuthorizedTokens", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "activeStakingProviders", - "type": "bytes32[]", - "internalType": "bytes32[]" + "name": "", + "type": "uint8", + "internalType": "enum SigningCoordinator.SigningCohortState" } ] }, { "type": "function", - "name": "getBeneficiary", + "name": "getSigningCoordinatorChild", "stateMutability": "view", "inputs": [ { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" + "name": "chainId", + "type": "uint256", + "internalType": "uint256" } ], "outputs": [ { - "name": "beneficiary", + "name": "", "type": "address", - "internalType": "address payable" + "internalType": "address" } ] }, { "type": "function", - "name": "getPenalty", + "name": "getThreshold", "stateMutability": "view", "inputs": [ { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" + "name": "cohortId", + "type": "uint32", + "internalType": "uint32" } ], "outputs": [ { - "name": "penalty", - "type": "uint192", - "internalType": "uint192" + "name": "", + "type": "uint16", + "internalType": "uint16" + } + ] + }, + { + "type": "function", + "name": "grantRole", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" }, { - "name": "endPenalty", - "type": "uint64", - "internalType": "uint64" + "name": "account", + "type": "address", + "internalType": "address" } - ] + ], + "outputs": [] }, { "type": "function", - "name": "getStakingProvidersLength", + "name": "hasRole", "stateMutability": "view", - "inputs": [], + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], "outputs": [ { "name": "", - "type": "uint256", - "internalType": "uint256" + "type": "bool", + "internalType": "bool" } ] }, @@ -1535,41 +1546,78 @@ "type": "function", "name": "initialize", "stateMutability": "nonpayable", - "inputs": [], + "inputs": [ + { + "name": "_timeout", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "_maxDkgSize", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "_signingCoordinatorDispatcher", + "type": "address", + "internalType": "contract SigningCoordinatorDispatcher" + }, + { + "name": "_admin", + "type": "address", + "internalType": "address" + } + ], "outputs": [] }, { "type": "function", - "name": "involuntaryAuthorizationDecrease", + "name": "initiateSigningCohort", "stateMutability": "nonpayable", "inputs": [ { - "name": "_stakingProvider", + "name": "chainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "authority", "type": "address", "internalType": "address" }, { - "name": "_fromAmount", - "type": "uint96", - "internalType": "uint96" + "name": "providers", + "type": "address[]", + "internalType": "address[]" }, { - "name": "_toAmount", - "type": "uint96", - "internalType": "uint96" + "name": "threshold", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "duration", + "type": "uint32", + "internalType": "uint32" } ], - "outputs": [] + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ] }, { "type": "function", - "name": "isAuthorized", + "name": "isCohortActive", "stateMutability": "view", "inputs": [ { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" + "name": "cohortId", + "type": "uint32", + "internalType": "uint32" } ], "outputs": [ @@ -1582,11 +1630,16 @@ }, { "type": "function", - "name": "isOperatorConfirmed", + "name": "isSigner", "stateMutability": "view", "inputs": [ { - "name": "_operator", + "name": "cohortId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "provider", "type": "address", "internalType": "address" } @@ -1601,20 +1654,20 @@ }, { "type": "function", - "name": "lastTimeRewardApplicable", + "name": "maxCohortSize", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "uint256", - "internalType": "uint256" + "type": "uint16", + "internalType": "uint16" } ] }, { "type": "function", - "name": "lastUpdateTime", + "name": "numberOfSigningCohorts", "stateMutability": "view", "inputs": [], "outputs": [ @@ -1627,100 +1680,88 @@ }, { "type": "function", - "name": "makeCommitment", - "stateMutability": "nonpayable", - "inputs": [ + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "_stakingProvider", + "name": "", "type": "address", "internalType": "address" - }, - { - "name": "_commitmentDuration", - "type": "uint64", - "internalType": "uint64" } - ], - "outputs": [] + ] }, { "type": "function", - "name": "manualChildSynchronization", - "stateMutability": "nonpayable", - "inputs": [ + "name": "pendingDefaultAdmin", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "_stakingProvider", + "name": "newAdmin", "type": "address", "internalType": "address" + }, + { + "name": "schedule", + "type": "uint48", + "internalType": "uint48" } - ], - "outputs": [] + ] }, { "type": "function", - "name": "minOperatorSeconds", + "name": "pendingDefaultAdminDelay", "stateMutability": "view", "inputs": [], "outputs": [ { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "function", - "name": "minimumAuthorization", - "stateMutability": "view", - "inputs": [], - "outputs": [ + "name": "newDelay", + "type": "uint48", + "internalType": "uint48" + }, { - "name": "", - "type": "uint96", - "internalType": "uint96" + "name": "schedule", + "type": "uint48", + "internalType": "uint48" } ] }, { "type": "function", - "name": "operatorToStakingProvider", - "stateMutability": "view", + "name": "postSigningCohortData", + "stateMutability": "nonpayable", "inputs": [ { - "name": "_operator", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ + "name": "cohortId", + "type": "uint32", + "internalType": "uint32" + }, { - "name": "", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "function", - "name": "owner", - "stateMutability": "view", - "inputs": [], - "outputs": [ + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, { - "name": "", - "type": "address", - "internalType": "address" + "name": "signingRequestStaticKey", + "type": "bytes", + "internalType": "bytes" } - ] + ], + "outputs": [] }, { "type": "function", - "name": "penalize", + "name": "renounceRole", "stateMutability": "nonpayable", "inputs": [ { - "name": "_stakingProvider", + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", "type": "address", "internalType": "address" } @@ -1729,481 +1770,556 @@ }, { "type": "function", - "name": "penaltyDefault", - "stateMutability": "view", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint192", - "internalType": "uint192" - } - ] - }, - { - "type": "function", - "name": "penaltyDuration", - "stateMutability": "view", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "function", - "name": "penaltyIncrement", - "stateMutability": "view", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint192", - "internalType": "uint192" - } - ] - }, - { - "type": "function", - "name": "pendingAuthorizationDecrease", - "stateMutability": "view", + "name": "revokeRole", + "stateMutability": "nonpayable", "inputs": [ { - "name": "_stakingProvider", + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", "type": "address", "internalType": "address" } ], - "outputs": [ - { - "name": "", - "type": "uint96", - "internalType": "uint96" - } - ] + "outputs": [] }, { "type": "function", - "name": "periodFinish", - "stateMutability": "view", + "name": "rollbackDefaultAdminDelay", + "stateMutability": "nonpayable", "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ] + "outputs": [] }, { "type": "function", - "name": "pushReward", + "name": "setDispatcher", "stateMutability": "nonpayable", "inputs": [ { - "name": "_reward", - "type": "uint96", - "internalType": "uint96" + "name": "dispatcher", + "type": "address", + "internalType": "contract SigningCoordinatorDispatcher" } ], "outputs": [] }, { "type": "function", - "name": "registerOperator", + "name": "setMaxDkgSize", "stateMutability": "nonpayable", "inputs": [ { - "name": "_operator", - "type": "address", - "internalType": "address" + "name": "newSize", + "type": "uint16", + "internalType": "uint16" } ], "outputs": [] }, { "type": "function", - "name": "remainingAuthorizationDecreaseDelay", - "stateMutability": "view", + "name": "setSigningCohortConditions", + "stateMutability": "nonpayable", "inputs": [ { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ + "name": "cohortId", + "type": "uint32", + "internalType": "uint32" + }, { - "name": "", - "type": "uint64", - "internalType": "uint64" + "name": "chainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "conditions", + "type": "bytes", + "internalType": "bytes" } - ] - }, - { - "type": "function", - "name": "renounceOwnership", - "stateMutability": "nonpayable", - "inputs": [], + ], "outputs": [] }, { "type": "function", - "name": "resetReward", + "name": "setTimeout", "stateMutability": "nonpayable", "inputs": [ { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" + "name": "newTimeout", + "type": "uint32", + "internalType": "uint32" } ], "outputs": [] }, { "type": "function", - "name": "resynchronizeAuthorization", - "stateMutability": "nonpayable", + "name": "signingCohorts", + "stateMutability": "view", "inputs": [ { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" + "name": "", + "type": "uint32", + "internalType": "uint32" } ], - "outputs": [] - }, - { - "type": "function", - "name": "rewardContract", - "stateMutability": "view", - "inputs": [], "outputs": [ { - "name": "", + "name": "initiator", + "type": "address", + "internalType": "address" + }, + { + "name": "initTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "endTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "authority", "type": "address", "internalType": "address" + }, + { + "name": "totalSignatures", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "numSigners", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "threshold", + "type": "uint16", + "internalType": "uint16" } ] }, { "type": "function", - "name": "rewardDistributor", + "name": "signingCoordinatorDispatcher", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", "type": "address", - "internalType": "address" + "internalType": "contract SigningCoordinatorDispatcher" } ] }, { "type": "function", - "name": "rewardDuration", + "name": "supportsInterface", "stateMutability": "view", - "inputs": [], + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4", + "internalType": "bytes4" + } + ], "outputs": [ { "name": "", - "type": "uint256", - "internalType": "uint256" + "type": "bool", + "internalType": "bool" } ] }, { "type": "function", - "name": "rewardPerToken", + "name": "timeout", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "uint160", - "internalType": "uint160" + "type": "uint32", + "internalType": "uint32" } ] - }, - { - "type": "function", - "name": "rewardPerTokenStored", - "stateMutability": "view", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint160", - "internalType": "uint160" - } - ] - }, + } + ], + "tx_hash": "0x2c5f2a3f124b46338b9e97178ae821fe3f75256e7538b8bfac101e06a6d84d45", + "block_number": 9595153, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "SigningCoordinatorChild": { + "address": "0xC3085b0feB8C348D0BD7fabF4299c93dc2aE11d7", + "abi": [ { - "type": "function", - "name": "rewardRateDecimals", - "stateMutability": "view", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ] + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [] }, { - "type": "function", - "name": "setAdjudicator", - "stateMutability": "nonpayable", - "inputs": [ - { - "name": "_adjudicator", - "type": "address", - "internalType": "address" - } - ], - "outputs": [] + "type": "error", + "name": "InvalidInitialization", + "inputs": [] }, { - "type": "function", - "name": "setChildApplication", - "stateMutability": "nonpayable", - "inputs": [ - { - "name": "_childApplication", - "type": "address", - "internalType": "contract ITACoRootToChild" - } - ], - "outputs": [] + "type": "error", + "name": "NotInitializing", + "inputs": [] }, { - "type": "function", - "name": "setRewardContract", - "stateMutability": "nonpayable", + "type": "error", + "name": "OwnableInvalidOwner", "inputs": [ { - "name": "_rewardContract", + "name": "owner", "type": "address", "internalType": "address" } - ], - "outputs": [] + ] }, { - "type": "function", - "name": "setRewardDistributor", - "stateMutability": "nonpayable", + "type": "error", + "name": "OwnableUnauthorizedAccount", "inputs": [ { - "name": "_rewardDistributor", + "name": "account", "type": "address", "internalType": "address" } - ], - "outputs": [] + ] }, { - "type": "function", - "name": "slash", - "stateMutability": "nonpayable", + "type": "event", + "name": "AllowedCallerUpdated", "inputs": [ { - "name": "_stakingProvider", + "name": "oldCaller", "type": "address", - "internalType": "address" - }, - { - "name": "_penalty", - "type": "uint96", - "internalType": "uint96" + "internalType": "address", + "indexed": false }, { - "name": "_investigator", + "name": "newCaller", "type": "address", - "internalType": "address" + "internalType": "address", + "indexed": false } ], - "outputs": [] + "anonymous": false }, { - "type": "function", - "name": "stakingProviderInfo", - "stateMutability": "view", + "type": "event", + "name": "CohortMultisigDeployed", "inputs": [ { - "name": "", + "name": "cohortId", + "type": "uint32", + "internalType": "uint32", + "indexed": true + }, + { + "name": "multisig", "type": "address", - "internalType": "address" + "internalType": "address", + "indexed": false } ], - "outputs": [ - { - "name": "operator", - "type": "address", - "internalType": "address" - }, - { - "name": "operatorConfirmed", - "type": "bool", - "internalType": "bool" - }, - { - "name": "operatorStartTimestamp", - "type": "uint64", - "internalType": "uint64" - }, - { - "name": "authorized", - "type": "uint96", - "internalType": "uint96" - }, - { - "name": "deauthorizing", - "type": "uint96", - "internalType": "uint96" - }, - { - "name": "endDeauthorization", - "type": "uint64", - "internalType": "uint64" - }, + "anonymous": false + }, + { + "type": "event", + "name": "CohortMultisigUpdated", + "inputs": [ { - "name": "tReward", - "type": "uint96", - "internalType": "uint96" + "name": "cohortId", + "type": "uint32", + "internalType": "uint32", + "indexed": true }, { - "name": "rewardPerTokenPaid", - "type": "uint160", - "internalType": "uint160" + "name": "multisig", + "type": "address", + "internalType": "address", + "indexed": false }, { - "name": "endCommitment", - "type": "uint64", - "internalType": "uint64" + "name": "signers", + "type": "address[]", + "internalType": "address[]", + "indexed": false }, { - "name": "stub", - "type": "uint256", - "internalType": "uint256" + "name": "threshold", + "type": "uint16", + "internalType": "uint16", + "indexed": false }, { - "name": "penaltyPercent", - "type": "uint192", - "internalType": "uint192" - }, + "name": "clearSigners", + "type": "bool", + "internalType": "bool", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ { - "name": "endPenalty", + "name": "version", "type": "uint64", - "internalType": "uint64" + "internalType": "uint64", + "indexed": false } - ] + ], + "anonymous": false }, { - "type": "function", - "name": "stakingProviderToOperator", - "stateMutability": "view", + "type": "event", + "name": "MultisigFactoryUpdated", "inputs": [ { - "name": "_stakingProvider", + "name": "oldFactory", "type": "address", - "internalType": "address" - } - ], - "outputs": [ + "internalType": "address", + "indexed": false + }, { - "name": "", + "name": "newFactory", "type": "address", - "internalType": "address" + "internalType": "address", + "indexed": false } - ] + ], + "anonymous": false }, { - "type": "function", - "name": "stakingProviders", - "stateMutability": "view", + "type": "event", + "name": "OwnershipTransferred", "inputs": [ { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [ + "name": "previousOwner", + "type": "address", + "internalType": "address", + "indexed": true + }, { - "name": "", + "name": "newOwner", "type": "address", - "internalType": "address" + "internalType": "address", + "indexed": true } - ] + ], + "anonymous": false }, { "type": "function", - "name": "tStaking", + "name": "allowedCaller", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", "type": "address", - "internalType": "contract IStaking" + "internalType": "address" } ] }, { "type": "function", - "name": "token", + "name": "cohortMultisigs", "stateMutability": "view", - "inputs": [], + "inputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], "outputs": [ { "name": "", "type": "address", - "internalType": "contract IERC20" + "internalType": "address" } ] }, { "type": "function", - "name": "transferOwnership", + "name": "deployCohortMultiSig", "stateMutability": "nonpayable", "inputs": [ { - "name": "newOwner", - "type": "address", - "internalType": "address" + "name": "cohortId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "signers", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "threshold", + "type": "uint16", + "internalType": "uint16" } ], "outputs": [] }, { "type": "function", - "name": "withdrawRewards", + "name": "initialize", "stateMutability": "nonpayable", "inputs": [ { - "name": "_stakingProvider", + "name": "_signingMultisigFactory", + "type": "address", + "internalType": "contract ThresholdSigningMultisigCloneFactory" + }, + { + "name": "_allowedCaller", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "renounceOwnership", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "setAllowedCaller", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_allowedCaller", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "setMultisigFactory", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "multisigFactory", + "type": "address", + "internalType": "contract ThresholdSigningMultisigCloneFactory" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "signingMultisigFactory", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ThresholdSigningMultisigCloneFactory" + } + ] + }, + { + "type": "function", + "name": "transferOwnership", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newOwner", "type": "address", "internalType": "address" } ], "outputs": [] + }, + { + "type": "function", + "name": "updateMultiSigParameters", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "cohortId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "signers", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "threshold", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "clearSigners", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [] } ], - "tx_hash": "0xd5d4f1abe3e9eb2d92b02cd7f22ee7f6b514d9c15d578c94ecb1543afd6207c1", - "block_number": 4886820, + "tx_hash": "0xe32268eb5f109a5ef883604bae1d2e190cc68ad0c4daafa5665b4b7411980243", + "block_number": 9595176, "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" }, - "TestnetThresholdStaking": { - "address": "0x18006f9A84C0bAD4CD96Aa69C7cE17aD760cDaD2", + "SigningCoordinatorDispatcher": { + "address": "0xa99FF0056A98AA8800c769C4eCB4fA103e38E95E", "abi": [ { "type": "constructor", "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_signingCoordinator", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "InvalidInitialization", + "inputs": [] + }, + { + "type": "error", + "name": "NotInitializing", "inputs": [] }, { @@ -2228,6 +2344,19 @@ } ] }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint64", + "internalType": "uint64", + "indexed": false + } + ], + "anonymous": false + }, { "type": "event", "name": "OwnershipTransferred", @@ -2249,69 +2378,57 @@ }, { "type": "function", - "name": "application", - "stateMutability": "view", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "contract IApplication" - } - ] - }, - { - "type": "function", - "name": "authorizationIncreased", + "name": "dispatch", "stateMutability": "nonpayable", "inputs": [ { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" - }, - { - "name": "_fromAmount", - "type": "uint96", - "internalType": "uint96" + "name": "chainId", + "type": "uint256", + "internalType": "uint256" }, { - "name": "_toAmount", - "type": "uint96", - "internalType": "uint96" + "name": "callData", + "type": "bytes", + "internalType": "bytes" } ], "outputs": [] }, { "type": "function", - "name": "authorizedStake", + "name": "dispatchMap", "stateMutability": "view", "inputs": [ { "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "l1Sender", "type": "address", "internalType": "address" }, { - "name": "", + "name": "signingCoordinatorChild", "type": "address", "internalType": "address" } - ], - "outputs": [ - { - "name": "", - "type": "uint96", - "internalType": "uint96" - } ] }, { "type": "function", - "name": "owner", + "name": "getSigningCoordinatorChild", "stateMutability": "view", - "inputs": [], + "inputs": [ + { + "name": "chainId", + "type": "uint256", + "internalType": "uint256" + } + ], "outputs": [ { "name": "", @@ -2322,60 +2439,74 @@ }, { "type": "function", - "name": "renounceOwnership", + "name": "initialize", "stateMutability": "nonpayable", "inputs": [], "outputs": [] }, { "type": "function", - "name": "rolesOf", + "name": "owner", "stateMutability": "view", - "inputs": [ + "inputs": [], + "outputs": [ { - "name": "_stakingProvider", + "name": "", "type": "address", "internalType": "address" } - ], - "outputs": [ + ] + }, + { + "type": "function", + "name": "register", + "stateMutability": "nonpayable", + "inputs": [ { - "name": "owner", - "type": "address", - "internalType": "address" + "name": "chainId", + "type": "uint256", + "internalType": "uint256" }, { - "name": "beneficiary", + "name": "l1Sender", "type": "address", - "internalType": "address payable" + "internalType": "address" }, { - "name": "authorizer", + "name": "signingCoordinatorChild", "type": "address", "internalType": "address" } - ] + ], + "outputs": [] }, { "type": "function", - "name": "setApplication", + "name": "renounceOwnership", "stateMutability": "nonpayable", - "inputs": [ + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "signingCoordinator", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "_application", + "name": "", "type": "address", - "internalType": "contract IApplication" + "internalType": "address" } - ], - "outputs": [] + ] }, { "type": "function", - "name": "setRoles", + "name": "transferOwnership", "stateMutability": "nonpayable", "inputs": [ { - "name": "_stakingProvider", + "name": "newOwner", "type": "address", "internalType": "address" } @@ -2384,240 +2515,129 @@ }, { "type": "function", - "name": "setRoles", + "name": "unregister", "stateMutability": "nonpayable", "inputs": [ { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" - }, - { - "name": "_owner", - "type": "address", - "internalType": "address" - }, - { - "name": "_beneficiary", - "type": "address", - "internalType": "address payable" - }, - { - "name": "_authorizer", - "type": "address", - "internalType": "address" + "name": "chainId", + "type": "uint256", + "internalType": "uint256" } ], "outputs": [] - }, + } + ], + "tx_hash": "0xf559688736cd4247268b894636b9918d0fb40fc2b25e2287220710809ffc5e99", + "block_number": 9595161, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "TACoApplication": { + "address": "0x329bc9Df0e45f360583374726ccaFF003264a136", + "abi": [ { - "type": "function", - "name": "setStakes", + "type": "constructor", "stateMutability": "nonpayable", "inputs": [ { - "name": "_stakingProvider", + "name": "_token", "type": "address", - "internalType": "address" + "internalType": "contract IERC20" }, { - "name": "_tStake", - "type": "uint96", - "internalType": "uint96" + "name": "_tStaking", + "type": "address", + "internalType": "contract IStaking" }, { - "name": "_keepInTStake", + "name": "_minimumAuthorization", "type": "uint96", "internalType": "uint96" }, { - "name": "_nuInTStake", - "type": "uint96", - "internalType": "uint96" - } - ], - "outputs": [] - }, - { - "type": "function", - "name": "stakedNu", - "stateMutability": "view", - "inputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", + "name": "_minOperatorSeconds", "type": "uint256", "internalType": "uint256" - } - ] - }, - { - "type": "function", - "name": "stakes", - "stateMutability": "view", - "inputs": [ - { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "tStake", - "type": "uint96", - "internalType": "uint96" }, { - "name": "keepInTStake", - "type": "uint96", - "internalType": "uint96" + "name": "_rewardDuration", + "type": "uint256", + "internalType": "uint256" }, { - "name": "nuInTStake", - "type": "uint96", - "internalType": "uint96" - } - ] - }, - { - "type": "function", - "name": "stakingProviderInfo", - "stateMutability": "view", - "inputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "owner", - "type": "address", - "internalType": "address" + "name": "_deauthorizationDuration", + "type": "uint256", + "internalType": "uint256" }, { - "name": "beneficiary", - "type": "address", - "internalType": "address payable" + "name": "_commitmentDurationOptions", + "type": "uint64[]", + "internalType": "uint64[]" }, { - "name": "authorizer", - "type": "address", - "internalType": "address" + "name": "_commitmentDeadline", + "type": "uint64", + "internalType": "uint64" }, { - "name": "tStake", - "type": "uint96", - "internalType": "uint96" + "name": "_penaltyDefault", + "type": "uint192", + "internalType": "uint192" }, { - "name": "keepInTStake", - "type": "uint96", - "internalType": "uint96" + "name": "_penaltyDuration", + "type": "uint256", + "internalType": "uint256" }, { - "name": "nuInTStake", - "type": "uint96", - "internalType": "uint96" + "name": "_penaltyIncrement", + "type": "uint192", + "internalType": "uint192" } ] }, { - "type": "function", - "name": "transferOwnership", - "stateMutability": "nonpayable", + "type": "error", + "name": "AddressEmptyCode", "inputs": [ { - "name": "newOwner", + "name": "target", "type": "address", "internalType": "address" } - ], - "outputs": [] - } - ], - "tx_hash": "0xeb083a1906cd8825653e4077cccc9caae00007624f4ac0dba29f49d82ec41ea2", - "block_number": 4886812, - "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" - } - }, - "80002": { - "Coordinator": { - "address": "0xE9e94499bB0f67b9DBD75506ec1735486DE57770", - "abi": [ - { - "type": "constructor", - "stateMutability": "nonpayable", - "inputs": [ - { - "name": "_application", - "type": "address", - "internalType": "contract ITACoChildApplication" - } ] }, { "type": "error", - "name": "AccessControlBadConfirmation", - "inputs": [] - }, - { - "type": "error", - "name": "AccessControlEnforcedDefaultAdminDelay", + "name": "AddressInsufficientBalance", "inputs": [ { - "name": "schedule", - "type": "uint48", - "internalType": "uint48" + "name": "account", + "type": "address", + "internalType": "address" } ] }, { "type": "error", - "name": "AccessControlEnforcedDefaultAdminRules", + "name": "FailedInnerCall", "inputs": [] }, { "type": "error", - "name": "AccessControlInvalidDefaultAdmin", - "inputs": [ - { - "name": "defaultAdmin", - "type": "address", - "internalType": "address" - } - ] + "name": "InvalidInitialization", + "inputs": [] }, { "type": "error", - "name": "AccessControlUnauthorizedAccount", - "inputs": [ - { - "name": "account", - "type": "address", - "internalType": "address" - }, - { - "name": "neededRole", - "type": "bytes32", - "internalType": "bytes32" - } - ] + "name": "NotInitializing", + "inputs": [] }, { "type": "error", - "name": "AddressEmptyCode", + "name": "OwnableInvalidOwner", "inputs": [ { - "name": "target", + "name": "owner", "type": "address", "internalType": "address" } @@ -2625,7 +2645,7 @@ }, { "type": "error", - "name": "AddressInsufficientBalance", + "name": "OwnableUnauthorizedAccount", "inputs": [ { "name": "account", @@ -2634,21 +2654,6 @@ } ] }, - { - "type": "error", - "name": "FailedInnerCall", - "inputs": [] - }, - { - "type": "error", - "name": "InvalidInitialization", - "inputs": [] - }, - { - "type": "error", - "name": "NotInitializing", - "inputs": [] - }, { "type": "error", "name": "SafeCastOverflowedUintDowncast", @@ -2678,24 +2683,24 @@ }, { "type": "event", - "name": "AggregationPosted", + "name": "AuthorizationDecreaseApproved", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32", - "indexed": true - }, - { - "name": "node", + "name": "stakingProvider", "type": "address", "internalType": "address", "indexed": true }, { - "name": "aggregatedTranscriptDigest", - "type": "bytes32", - "internalType": "bytes32", + "name": "fromAmount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + }, + { + "name": "toAmount", + "type": "uint96", + "internalType": "uint96", "indexed": false } ], @@ -2703,43 +2708,49 @@ }, { "type": "event", - "name": "BlindedSharePosted", + "name": "AuthorizationDecreaseRequested", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32", - "indexed": true - }, - { - "name": "departingParticipant", + "name": "stakingProvider", "type": "address", "internalType": "address", "indexed": true - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "DefaultAdminDelayChangeCanceled", - "inputs": [], + }, + { + "name": "fromAmount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + }, + { + "name": "toAmount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + } + ], "anonymous": false }, { "type": "event", - "name": "DefaultAdminDelayChangeScheduled", + "name": "AuthorizationIncreased", "inputs": [ { - "name": "newDelay", - "type": "uint48", - "internalType": "uint48", + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "fromAmount", + "type": "uint96", + "internalType": "uint96", "indexed": false }, { - "name": "effectSchedule", - "type": "uint48", - "internalType": "uint48", + "name": "toAmount", + "type": "uint96", + "internalType": "uint96", "indexed": false } ], @@ -2747,24 +2758,49 @@ }, { "type": "event", - "name": "DefaultAdminTransferCanceled", - "inputs": [], + "name": "AuthorizationInvoluntaryDecreased", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "fromAmount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + }, + { + "name": "toAmount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + } + ], "anonymous": false }, { "type": "event", - "name": "DefaultAdminTransferScheduled", + "name": "AuthorizationReSynchronized", "inputs": [ { - "name": "newAdmin", + "name": "stakingProvider", "type": "address", "internalType": "address", "indexed": true }, { - "name": "acceptSchedule", - "type": "uint48", - "internalType": "uint48", + "name": "fromAmount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + }, + { + "name": "toAmount", + "type": "uint96", + "internalType": "uint96", "indexed": false } ], @@ -2772,18 +2808,18 @@ }, { "type": "event", - "name": "EndRitual", + "name": "CommitmentMade", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32", + "name": "stakingProvider", + "type": "address", + "internalType": "address", "indexed": true }, { - "name": "successful", - "type": "bool", - "internalType": "bool", + "name": "endCommitment", + "type": "uint256", + "internalType": "uint256", "indexed": false } ], @@ -2791,12 +2827,12 @@ }, { "type": "event", - "name": "FeeModelApproved", + "name": "Initialized", "inputs": [ { - "name": "feeModel", - "type": "address", - "internalType": "contract IFeeModel", + "name": "version", + "type": "uint64", + "internalType": "uint64", "indexed": false } ], @@ -2804,72 +2840,84 @@ }, { "type": "event", - "name": "HandoverCanceled", + "name": "ManualChildSynchronizationSent", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32", - "indexed": true - }, - { - "name": "departingParticipant", + "name": "stakingProvider", "type": "address", "internalType": "address", "indexed": true }, { - "name": "incomingParticipant", + "name": "authorized", + "type": "uint96", + "internalType": "uint96", + "indexed": false + }, + { + "name": "deauthorizing", + "type": "uint96", + "internalType": "uint96", + "indexed": false + }, + { + "name": "endDeauthorization", + "type": "uint64", + "internalType": "uint64", + "indexed": false + }, + { + "name": "operator", "type": "address", "internalType": "address", - "indexed": true + "indexed": false } ], "anonymous": false }, { "type": "event", - "name": "HandoverFinalized", + "name": "OperatorBonded", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32", + "name": "stakingProvider", + "type": "address", + "internalType": "address", "indexed": true }, { - "name": "departingParticipant", + "name": "operator", "type": "address", "internalType": "address", "indexed": true }, { - "name": "incomingParticipant", + "name": "previousOperator", "type": "address", "internalType": "address", "indexed": true + }, + { + "name": "startTimestamp", + "type": "uint256", + "internalType": "uint256", + "indexed": false } ], "anonymous": false }, { "type": "event", - "name": "HandoverRequest", + "name": "OperatorConfirmed", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32", - "indexed": true - }, - { - "name": "departingParticipant", + "name": "stakingProvider", "type": "address", "internalType": "address", "indexed": true }, { - "name": "incomingParticipant", + "name": "operator", "type": "address", "internalType": "address", "indexed": true @@ -2879,22 +2927,16 @@ }, { "type": "event", - "name": "HandoverTranscriptPosted", + "name": "OwnershipTransferred", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32", - "indexed": true - }, - { - "name": "departingParticipant", + "name": "previousOwner", "type": "address", "internalType": "address", "indexed": true }, { - "name": "incomingParticipant", + "name": "newOwner", "type": "address", "internalType": "address", "indexed": true @@ -2904,10 +2946,22 @@ }, { "type": "event", - "name": "Initialized", + "name": "Penalized", "inputs": [ { - "name": "version", + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "penaltyPercent", + "type": "uint256", + "internalType": "uint256", + "indexed": false + }, + { + "name": "endPenalty", "type": "uint64", "internalType": "uint64", "indexed": false @@ -2917,18 +2971,12 @@ }, { "type": "event", - "name": "MaxDkgSizeChanged", + "name": "RewardAdded", "inputs": [ { - "name": "oldSize", - "type": "uint16", - "internalType": "uint16", - "indexed": false - }, - { - "name": "newSize", - "type": "uint16", - "internalType": "uint16", + "name": "reward", + "type": "uint256", + "internalType": "uint256", "indexed": false } ], @@ -2936,52 +2984,23 @@ }, { "type": "event", - "name": "ParticipantPublicKeySet", + "name": "RewardContractSet", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32", - "indexed": true - }, - { - "name": "participant", + "name": "rewardContract", "type": "address", "internalType": "address", "indexed": true - }, - { - "name": "publicKey", - "type": "tuple", - "components": [ - { - "name": "word0", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "word1", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "word2", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "internalType": "struct BLS12381.G2Point", - "indexed": false } ], "anonymous": false }, { "type": "event", - "name": "ReimbursementPoolSet", + "name": "RewardDistributorSet", "inputs": [ { - "name": "pool", + "name": "distributor", "type": "address", "internalType": "address", "indexed": true @@ -2991,43 +3010,30 @@ }, { "type": "event", - "name": "RitualAuthorityTransferred", + "name": "RewardPaid", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32", + "name": "sender", + "type": "address", + "internalType": "address", "indexed": true }, { - "name": "previousAuthority", + "name": "stakingProvider", "type": "address", "internalType": "address", "indexed": true }, { - "name": "newAuthority", + "name": "beneficiary", "type": "address", "internalType": "address", "indexed": true - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "RitualExtended", - "inputs": [ - { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32", - "indexed": true }, { - "name": "endTimestamp", - "type": "uint32", - "internalType": "uint32", + "name": "reward", + "type": "uint256", + "internalType": "uint256", "indexed": false } ], @@ -3035,47 +3041,10 @@ }, { "type": "event", - "name": "RoleAdminChanged", - "inputs": [ - { - "name": "role", - "type": "bytes32", - "internalType": "bytes32", - "indexed": true - }, - { - "name": "previousAdminRole", - "type": "bytes32", - "internalType": "bytes32", - "indexed": true - }, - { - "name": "newAdminRole", - "type": "bytes32", - "internalType": "bytes32", - "indexed": true - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "RoleGranted", + "name": "RewardReset", "inputs": [ { - "name": "role", - "type": "bytes32", - "internalType": "bytes32", - "indexed": true - }, - { - "name": "account", - "type": "address", - "internalType": "address", - "indexed": true - }, - { - "name": "sender", + "name": "stakingProvider", "type": "address", "internalType": "address", "indexed": true @@ -3085,106 +3054,49 @@ }, { "type": "event", - "name": "RoleRevoked", + "name": "RewardsWithdrawn", "inputs": [ { - "name": "role", - "type": "bytes32", - "internalType": "bytes32", - "indexed": true - }, - { - "name": "account", + "name": "stakingProvider", "type": "address", "internalType": "address", "indexed": true }, { - "name": "sender", - "type": "address", - "internalType": "address", - "indexed": true - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "StartAggregationRound", - "inputs": [ - { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32", - "indexed": true + "name": "amount", + "type": "uint96", + "internalType": "uint96", + "indexed": false } ], "anonymous": false }, { "type": "event", - "name": "StartRitual", + "name": "Slashed", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32", - "indexed": true - }, - { - "name": "authority", + "name": "stakingProvider", "type": "address", "internalType": "address", "indexed": true }, { - "name": "participants", - "type": "address[]", - "internalType": "address[]", - "indexed": false - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "TimeoutChanged", - "inputs": [ - { - "name": "oldTimeout", - "type": "uint32", - "internalType": "uint32", - "indexed": false - }, - { - "name": "newTimeout", - "type": "uint32", - "internalType": "uint32", + "name": "penalty", + "type": "uint256", + "internalType": "uint256", "indexed": false - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "TranscriptPosted", - "inputs": [ - { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32", - "indexed": true }, { - "name": "node", + "name": "investigator", "type": "address", "internalType": "address", "indexed": true }, { - "name": "transcriptDigest", - "type": "bytes32", - "internalType": "bytes32", + "name": "reward", + "type": "uint256", + "internalType": "uint256", "indexed": false } ], @@ -3192,514 +3104,468 @@ }, { "type": "function", - "name": "DEFAULT_ADMIN_ROLE", - "stateMutability": "view", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "bytes32", - "internalType": "bytes32" - } - ] - }, - { - "type": "function", - "name": "FEE_MODEL_MANAGER_ROLE", + "name": "PENALTY_BASE", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "bytes32", - "internalType": "bytes32" + "type": "uint192", + "internalType": "uint192" } ] }, { "type": "function", - "name": "HANDOVER_SUPERVISOR_ROLE", + "name": "REWARD_PER_TOKEN_MULTIPLIER", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "bytes32", - "internalType": "bytes32" + "type": "uint256", + "internalType": "uint256" } ] }, { "type": "function", - "name": "TREASURY_ROLE", + "name": "adjudicator", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "bytes32", - "internalType": "bytes32" + "type": "address", + "internalType": "address" } ] }, { "type": "function", - "name": "acceptDefaultAdminTransfer", + "name": "approveAuthorizationDecrease", "stateMutability": "nonpayable", - "inputs": [], - "outputs": [] - }, - { - "type": "function", - "name": "application", - "stateMutability": "view", - "inputs": [], - "outputs": [ + "inputs": [ { - "name": "", + "name": "_stakingProvider", "type": "address", - "internalType": "contract ITACoChildApplication" + "internalType": "address" } - ] + ], + "outputs": [] }, { "type": "function", - "name": "approveFeeModel", + "name": "authorizationDecreaseRequested", "stateMutability": "nonpayable", "inputs": [ { - "name": "feeModel", + "name": "_stakingProvider", "type": "address", - "internalType": "contract IFeeModel" + "internalType": "address" + }, + { + "name": "_fromAmount", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "_toAmount", + "type": "uint96", + "internalType": "uint96" } ], "outputs": [] }, { "type": "function", - "name": "beginDefaultAdminTransfer", + "name": "authorizationIncreased", "stateMutability": "nonpayable", "inputs": [ { - "name": "newAdmin", + "name": "_stakingProvider", "type": "address", "internalType": "address" + }, + { + "name": "_fromAmount", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "_toAmount", + "type": "uint96", + "internalType": "uint96" } ], "outputs": [] }, { "type": "function", - "name": "blindedSharePosition", - "stateMutability": "pure", - "inputs": [ + "name": "authorizationParameters", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "index", - "type": "uint256", - "internalType": "uint256" + "name": "_minimumAuthorization", + "type": "uint96", + "internalType": "uint96" }, { - "name": "threshold", - "type": "uint16", - "internalType": "uint16" - } - ], - "outputs": [ + "name": "authorizationDecreaseDelay", + "type": "uint64", + "internalType": "uint64" + }, { - "name": "", - "type": "uint256", - "internalType": "uint256" + "name": "authorizationDecreaseChangePeriod", + "type": "uint64", + "internalType": "uint64" } ] }, { "type": "function", - "name": "cancelDefaultAdminTransfer", - "stateMutability": "nonpayable", - "inputs": [], - "outputs": [] + "name": "authorizedOverall", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ] }, { "type": "function", - "name": "cancelHandover", - "stateMutability": "nonpayable", + "name": "authorizedStake", + "stateMutability": "view", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "departingParticipant", + "name": "_stakingProvider", "type": "address", "internalType": "address" } ], - "outputs": [] - }, - { - "type": "function", - "name": "changeDefaultAdminDelay", - "stateMutability": "nonpayable", - "inputs": [ + "outputs": [ { - "name": "newDelay", - "type": "uint48", - "internalType": "uint48" + "name": "", + "type": "uint96", + "internalType": "uint96" } - ], - "outputs": [] + ] }, { "type": "function", - "name": "cohortFingerprint", - "stateMutability": "pure", + "name": "availableRewards", + "stateMutability": "view", "inputs": [ { - "name": "nodes", - "type": "address[]", - "internalType": "address[]" + "name": "_stakingProvider", + "type": "address", + "internalType": "address" } ], "outputs": [ { "name": "", - "type": "bytes32", - "internalType": "bytes32" + "type": "uint96", + "internalType": "uint96" } ] }, { "type": "function", - "name": "defaultAdmin", + "name": "bondOperator", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "childApplication", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", "type": "address", - "internalType": "address" + "internalType": "contract ITACoRootToChild" } ] }, { "type": "function", - "name": "defaultAdminDelay", + "name": "commitmentDeadline", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "uint48", - "internalType": "uint48" + "type": "uint64", + "internalType": "uint64" } ] }, { "type": "function", - "name": "defaultAdminDelayIncreaseWait", + "name": "commitmentDurationOption1", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "uint48", - "internalType": "uint48" + "type": "uint64", + "internalType": "uint64" } ] }, { "type": "function", - "name": "dkgTimeout", + "name": "commitmentDurationOption2", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "uint32", - "internalType": "uint32" + "type": "uint64", + "internalType": "uint64" } ] }, { "type": "function", - "name": "dkgTimeoutStub", + "name": "commitmentDurationOption3", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "uint32", - "internalType": "uint32" + "type": "uint64", + "internalType": "uint64" } ] }, { "type": "function", - "name": "expectedTranscriptSize", - "stateMutability": "pure", - "inputs": [ - { - "name": "dkgSize", - "type": "uint16", - "internalType": "uint16" - }, - { - "name": "threshold", - "type": "uint16", - "internalType": "uint16" - } - ], + "name": "commitmentDurationOption4", + "stateMutability": "view", + "inputs": [], "outputs": [ { "name": "", - "type": "uint256", - "internalType": "uint256" + "type": "uint64", + "internalType": "uint64" } ] }, { "type": "function", - "name": "extendRitual", + "name": "confirmOperatorAddress", "stateMutability": "nonpayable", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "duration", - "type": "uint32", - "internalType": "uint32" + "name": "_operator", + "type": "address", + "internalType": "address" } ], "outputs": [] }, { "type": "function", - "name": "feeModelsRegistry", + "name": "deauthorizationDuration", "stateMutability": "view", - "inputs": [ - { - "name": "", - "type": "address", - "internalType": "contract IFeeModel" - } - ], + "inputs": [], "outputs": [ { "name": "", - "type": "bool", - "internalType": "bool" + "type": "uint256", + "internalType": "uint256" } ] }, { "type": "function", - "name": "finalizeHandover", - "stateMutability": "nonpayable", + "name": "eligibleStake", + "stateMutability": "view", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "departingParticipant", + "name": "_stakingProvider", "type": "address", "internalType": "address" - } - ], - "outputs": [] - }, - { - "type": "function", - "name": "getAccessController", - "stateMutability": "view", - "inputs": [ + }, { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" + "name": "_endDate", + "type": "uint256", + "internalType": "uint256" } ], "outputs": [ { "name": "", - "type": "address", - "internalType": "contract IEncryptionAuthorizer" + "type": "uint96", + "internalType": "uint96" } ] }, { "type": "function", - "name": "getAuthority", + "name": "getActiveStakingProviders", "stateMutability": "view", "inputs": [ { - "name": "ritualId", + "name": "_startIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_maxStakingProviders", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_cohortDuration", "type": "uint32", "internalType": "uint32" } ], "outputs": [ { - "name": "", - "type": "address", - "internalType": "address" + "name": "allAuthorizedTokens", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "activeStakingProviders", + "type": "bytes32[]", + "internalType": "bytes32[]" } ] }, { "type": "function", - "name": "getFeeModel", + "name": "getBeneficiary", "stateMutability": "view", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" + "name": "_stakingProvider", + "type": "address", + "internalType": "address" } ], "outputs": [ { - "name": "", + "name": "beneficiary", "type": "address", - "internalType": "contract IFeeModel" + "internalType": "address payable" } ] }, { "type": "function", - "name": "getHandoverKey", + "name": "getPenalty", "stateMutability": "view", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "departingProvider", + "name": "_stakingProvider", "type": "address", "internalType": "address" } ], "outputs": [ { - "name": "", - "type": "bytes32", - "internalType": "bytes32" + "name": "penalty", + "type": "uint192", + "internalType": "uint192" + }, + { + "name": "endPenalty", + "type": "uint64", + "internalType": "uint64" } ] }, { "type": "function", - "name": "getHandoverState", + "name": "getStakingProvidersLength", "stateMutability": "view", - "inputs": [ - { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "departingParticipant", - "type": "address", - "internalType": "address" - } - ], + "inputs": [], "outputs": [ { "name": "", - "type": "uint8", - "internalType": "enum Coordinator.HandoverState" + "type": "uint256", + "internalType": "uint256" } ] }, { "type": "function", - "name": "getInitiator", - "stateMutability": "view", + "name": "initialize", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "involuntaryAuthorizationDecrease", + "stateMutability": "nonpayable", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - } - ], - "outputs": [ - { - "name": "", + "name": "_stakingProvider", "type": "address", "internalType": "address" + }, + { + "name": "_fromAmount", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "_toAmount", + "type": "uint96", + "internalType": "uint96" } - ] + ], + "outputs": [] }, { "type": "function", - "name": "getParticipant", + "name": "isAuthorized", "stateMutability": "view", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "provider", + "name": "_stakingProvider", "type": "address", "internalType": "address" - }, - { - "name": "transcript", - "type": "bool", - "internalType": "bool" } ], "outputs": [ { "name": "", - "type": "tuple", - "components": [ - { - "name": "provider", - "type": "address", - "internalType": "address" - }, - { - "name": "aggregated", - "type": "bool", - "internalType": "bool" - }, - { - "name": "transcript", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "decryptionRequestStaticKey", - "type": "bytes", - "internalType": "bytes" - } - ], - "internalType": "struct Coordinator.Participant" + "type": "bool", + "internalType": "bool" } ] }, { "type": "function", - "name": "getParticipantFromProvider", + "name": "isOperatorConfirmed", "stateMutability": "view", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "provider", + "name": "_operator", "type": "address", "internalType": "address" } @@ -3707,438 +3573,243 @@ "outputs": [ { "name": "", - "type": "tuple", - "components": [ - { - "name": "provider", - "type": "address", - "internalType": "address" - }, - { - "name": "aggregated", - "type": "bool", - "internalType": "bool" - }, - { - "name": "transcript", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "decryptionRequestStaticKey", - "type": "bytes", - "internalType": "bytes" - } - ], - "internalType": "struct Coordinator.Participant" + "type": "bool", + "internalType": "bool" } ] }, { "type": "function", - "name": "getParticipants", + "name": "lastTimeRewardApplicable", "stateMutability": "view", - "inputs": [ - { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - } - ], + "inputs": [], "outputs": [ { "name": "", - "type": "tuple[]", - "components": [ - { - "name": "provider", - "type": "address", - "internalType": "address" - }, - { - "name": "aggregated", - "type": "bool", - "internalType": "bool" - }, - { - "name": "transcript", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "decryptionRequestStaticKey", - "type": "bytes", - "internalType": "bytes" - } - ], - "internalType": "struct Coordinator.Participant[]" + "type": "uint256", + "internalType": "uint256" } ] }, { "type": "function", - "name": "getParticipants", + "name": "lastUpdateTime", "stateMutability": "view", - "inputs": [ - { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "startIndex", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "maxParticipants", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "includeTranscript", - "type": "bool", - "internalType": "bool" - } - ], + "inputs": [], "outputs": [ { "name": "", - "type": "tuple[]", - "components": [ - { - "name": "provider", - "type": "address", - "internalType": "address" - }, - { - "name": "aggregated", - "type": "bool", - "internalType": "bool" - }, - { - "name": "transcript", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "decryptionRequestStaticKey", - "type": "bytes", - "internalType": "bytes" - } - ], - "internalType": "struct Coordinator.Participant[]" + "type": "uint256", + "internalType": "uint256" } ] }, { "type": "function", - "name": "getProviderPublicKey", - "stateMutability": "view", + "name": "makeCommitment", + "stateMutability": "nonpayable", "inputs": [ { - "name": "provider", + "name": "_stakingProvider", "type": "address", "internalType": "address" }, { - "name": "ritualId", - "type": "uint256", - "internalType": "uint256" + "name": "_commitmentDuration", + "type": "uint64", + "internalType": "uint64" } ], - "outputs": [ - { - "name": "", - "type": "tuple", - "components": [ - { - "name": "word0", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "word1", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "word2", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "internalType": "struct BLS12381.G2Point" - } - ] + "outputs": [] }, { "type": "function", - "name": "getProviders", - "stateMutability": "view", + "name": "manualChildSynchronization", + "stateMutability": "nonpayable", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" + "name": "_stakingProvider", + "type": "address", + "internalType": "address" } ], + "outputs": [] + }, + { + "type": "function", + "name": "minOperatorSeconds", + "stateMutability": "view", + "inputs": [], "outputs": [ { "name": "", - "type": "address[]", - "internalType": "address[]" + "type": "uint256", + "internalType": "uint256" } ] }, { "type": "function", - "name": "getPublicKeyFromRitualId", + "name": "minimumAuthorization", "stateMutability": "view", - "inputs": [ - { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - } - ], - "outputs": [ + "inputs": [], + "outputs": [ { "name": "", - "type": "tuple", - "components": [ - { - "name": "word0", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "word1", - "type": "bytes16", - "internalType": "bytes16" - } - ], - "internalType": "struct BLS12381.G1Point" + "type": "uint96", + "internalType": "uint96" } ] }, { "type": "function", - "name": "getRitualIdFromPublicKey", + "name": "operatorToStakingProvider", "stateMutability": "view", "inputs": [ { - "name": "dkgPublicKey", - "type": "tuple", - "components": [ - { - "name": "word0", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "word1", - "type": "bytes16", - "internalType": "bytes16" - } - ], - "internalType": "struct BLS12381.G1Point" + "name": "_operator", + "type": "address", + "internalType": "address" } ], "outputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" + "name": "", + "type": "address", + "internalType": "address" } ] }, { "type": "function", - "name": "getRitualState", + "name": "owner", "stateMutability": "view", - "inputs": [ - { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - } - ], + "inputs": [], "outputs": [ { "name": "", - "type": "uint8", - "internalType": "enum Coordinator.RitualState" + "type": "address", + "internalType": "address" } ] }, { "type": "function", - "name": "getRoleAdmin", - "stateMutability": "view", + "name": "penalize", + "stateMutability": "nonpayable", "inputs": [ { - "name": "role", - "type": "bytes32", - "internalType": "bytes32" + "name": "_stakingProvider", + "type": "address", + "internalType": "address" } ], + "outputs": [] + }, + { + "type": "function", + "name": "penaltyDefault", + "stateMutability": "view", + "inputs": [], "outputs": [ { "name": "", - "type": "bytes32", - "internalType": "bytes32" + "type": "uint192", + "internalType": "uint192" } ] }, { "type": "function", - "name": "getThresholdForRitualSize", - "stateMutability": "pure", - "inputs": [ - { - "name": "size", - "type": "uint16", - "internalType": "uint16" - } - ], + "name": "penaltyDuration", + "stateMutability": "view", + "inputs": [], "outputs": [ { "name": "", - "type": "uint16", - "internalType": "uint16" + "type": "uint256", + "internalType": "uint256" } ] }, { "type": "function", - "name": "getTimestamps", + "name": "penaltyIncrement", "stateMutability": "view", - "inputs": [ - { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - } - ], + "inputs": [], "outputs": [ { - "name": "initTimestamp", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "endTimestamp", - "type": "uint32", - "internalType": "uint32" + "name": "", + "type": "uint192", + "internalType": "uint192" } ] }, { "type": "function", - "name": "grantRole", - "stateMutability": "nonpayable", + "name": "pendingAuthorizationDecrease", + "stateMutability": "view", "inputs": [ { - "name": "role", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "account", + "name": "_stakingProvider", "type": "address", "internalType": "address" } ], - "outputs": [] - }, - { - "type": "function", - "name": "handoverRequest", - "stateMutability": "nonpayable", - "inputs": [ - { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "departingParticipant", - "type": "address", - "internalType": "address" - }, + "outputs": [ { - "name": "incomingParticipant", - "type": "address", - "internalType": "address" + "name": "", + "type": "uint96", + "internalType": "uint96" } - ], - "outputs": [] + ] }, { "type": "function", - "name": "handoverTimeout", + "name": "periodFinish", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "uint32", - "internalType": "uint32" + "type": "uint256", + "internalType": "uint256" } ] }, { "type": "function", - "name": "handovers", - "stateMutability": "view", + "name": "pushReward", + "stateMutability": "nonpayable", "inputs": [ { - "name": "handoverKey", - "type": "bytes32", - "internalType": "bytes32" + "name": "_reward", + "type": "uint96", + "internalType": "uint96" } ], - "outputs": [ - { - "name": "requestTimestamp", - "type": "uint32", - "internalType": "uint32" - }, + "outputs": [] + }, + { + "type": "function", + "name": "registerOperator", + "stateMutability": "nonpayable", + "inputs": [ { - "name": "incomingProvider", + "name": "_operator", "type": "address", "internalType": "address" - }, - { - "name": "transcript", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "decryptionRequestStaticKey", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "blindedShare", - "type": "bytes", - "internalType": "bytes" } - ] + ], + "outputs": [] }, { "type": "function", - "name": "hasRole", + "name": "remainingAuthorizationDecreaseDelay", "stateMutability": "view", "inputs": [ { - "name": "role", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "account", + "name": "_stakingProvider", "type": "address", "internalType": "address" } @@ -4146,23 +3817,25 @@ "outputs": [ { "name": "", - "type": "bool", - "internalType": "bool" + "type": "uint64", + "internalType": "uint64" } ] }, { "type": "function", - "name": "initialize", + "name": "renounceOwnership", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "resetReward", "stateMutability": "nonpayable", "inputs": [ { - "name": "_maxDkgSize", - "type": "uint16", - "internalType": "uint16" - }, - { - "name": "_admin", + "name": "_stakingProvider", "type": "address", "internalType": "address" } @@ -4171,125 +3844,173 @@ }, { "type": "function", - "name": "initializeNumberOfRituals", + "name": "resynchronizeAuthorization", "stateMutability": "nonpayable", - "inputs": [], + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], "outputs": [] }, { "type": "function", - "name": "initiateRitual", - "stateMutability": "nonpayable", - "inputs": [ + "name": "rewardContract", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "feeModel", - "type": "address", - "internalType": "contract IFeeModel" - }, - { - "name": "providers", - "type": "address[]", - "internalType": "address[]" - }, - { - "name": "authority", + "name": "", "type": "address", "internalType": "address" - }, - { - "name": "duration", - "type": "uint32", - "internalType": "uint32" - }, + } + ] + }, + { + "type": "function", + "name": "rewardDistributor", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "accessController", + "name": "", "type": "address", - "internalType": "contract IEncryptionAuthorizer" + "internalType": "address" } - ], + ] + }, + { + "type": "function", + "name": "rewardDuration", + "stateMutability": "view", + "inputs": [], "outputs": [ { "name": "", - "type": "uint32", - "internalType": "uint32" + "type": "uint256", + "internalType": "uint256" } ] }, { "type": "function", - "name": "isEncryptionAuthorized", + "name": "rewardPerToken", "stateMutability": "view", - "inputs": [ - { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "evidence", - "type": "bytes", - "internalType": "bytes" - }, + "inputs": [], + "outputs": [ { - "name": "ciphertextHeader", - "type": "bytes", - "internalType": "bytes" + "name": "", + "type": "uint160", + "internalType": "uint160" } - ], + ] + }, + { + "type": "function", + "name": "rewardPerTokenStored", + "stateMutability": "view", + "inputs": [], "outputs": [ { "name": "", - "type": "bool", - "internalType": "bool" + "type": "uint160", + "internalType": "uint160" } ] }, { "type": "function", - "name": "isParticipant", + "name": "rewardRateDecimals", "stateMutability": "view", - "inputs": [ + "inputs": [], + "outputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "setAdjudicator", + "stateMutability": "nonpayable", + "inputs": [ { - "name": "provider", + "name": "_adjudicator", "type": "address", "internalType": "address" } ], - "outputs": [ + "outputs": [] + }, + { + "type": "function", + "name": "setChildApplication", + "stateMutability": "nonpayable", + "inputs": [ { - "name": "", - "type": "bool", - "internalType": "bool" + "name": "_childApplication", + "type": "address", + "internalType": "contract ITACoRootToChild" } - ] + ], + "outputs": [] }, { "type": "function", - "name": "isProviderKeySet", - "stateMutability": "view", + "name": "setRewardContract", + "stateMutability": "nonpayable", "inputs": [ { - "name": "provider", + "name": "_rewardContract", "type": "address", "internalType": "address" } ], - "outputs": [ + "outputs": [] + }, + { + "type": "function", + "name": "setRewardDistributor", + "stateMutability": "nonpayable", + "inputs": [ { - "name": "", - "type": "bool", - "internalType": "bool" + "name": "_rewardDistributor", + "type": "address", + "internalType": "address" } - ] + ], + "outputs": [] }, { "type": "function", - "name": "isProviderPublicKeySet", + "name": "slash", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "_penalty", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "_investigator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "stakingProviderInfo", "stateMutability": "view", "inputs": [ { @@ -4300,235 +4021,340 @@ ], "outputs": [ { - "name": "", + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorConfirmed", "type": "bool", "internalType": "bool" + }, + { + "name": "operatorStartTimestamp", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "authorized", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "deauthorizing", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "endDeauthorization", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "tReward", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "rewardPerTokenPaid", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "endCommitment", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "stub", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "penaltyPercent", + "type": "uint192", + "internalType": "uint192" + }, + { + "name": "endPenalty", + "type": "uint64", + "internalType": "uint64" } ] }, { "type": "function", - "name": "isRitualActive", + "name": "stakingProviderToOperator", "stateMutability": "view", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" + "name": "_stakingProvider", + "type": "address", + "internalType": "address" } ], "outputs": [ { "name": "", - "type": "bool", - "internalType": "bool" + "type": "address", + "internalType": "address" } ] }, { "type": "function", - "name": "maxDkgSize", + "name": "stakingProviders", "stateMutability": "view", - "inputs": [], + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], "outputs": [ { "name": "", - "type": "uint16", - "internalType": "uint16" + "type": "address", + "internalType": "address" } ] }, { "type": "function", - "name": "numberOfRituals", + "name": "tStaking", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "uint256", - "internalType": "uint256" + "type": "address", + "internalType": "contract IStaking" } ] }, { "type": "function", - "name": "owner", + "name": "token", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", "type": "address", - "internalType": "address" + "internalType": "contract IERC20" } ] }, { "type": "function", - "name": "pendingDefaultAdmin", - "stateMutability": "view", - "inputs": [], - "outputs": [ + "name": "transferOwnership", + "stateMutability": "nonpayable", + "inputs": [ { - "name": "newAdmin", + "name": "newOwner", "type": "address", "internalType": "address" - }, + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "withdrawRewards", + "stateMutability": "nonpayable", + "inputs": [ { - "name": "schedule", - "type": "uint48", - "internalType": "uint48" + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + } + ], + "tx_hash": "0xd5d4f1abe3e9eb2d92b02cd7f22ee7f6b514d9c15d578c94ecb1543afd6207c1", + "block_number": 4886820, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "TestnetThresholdStaking": { + "address": "0x18006f9A84C0bAD4CD96Aa69C7cE17aD760cDaD2", + "abi": [ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [] + }, + { + "type": "error", + "name": "OwnableInvalidOwner", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" } ] }, + { + "type": "error", + "name": "OwnableUnauthorizedAccount", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "newOwner", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, { "type": "function", - "name": "pendingDefaultAdminDelay", + "name": "application", "stateMutability": "view", "inputs": [], "outputs": [ { - "name": "newDelay", - "type": "uint48", - "internalType": "uint48" - }, - { - "name": "schedule", - "type": "uint48", - "internalType": "uint48" + "name": "", + "type": "address", + "internalType": "contract IApplication" } ] }, { "type": "function", - "name": "postAggregation", + "name": "authorizationIncreased", "stateMutability": "nonpayable", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "aggregatedTranscript", - "type": "bytes", - "internalType": "bytes" + "name": "_stakingProvider", + "type": "address", + "internalType": "address" }, { - "name": "dkgPublicKey", - "type": "tuple", - "components": [ - { - "name": "word0", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "word1", - "type": "bytes16", - "internalType": "bytes16" - } - ], - "internalType": "struct BLS12381.G1Point" + "name": "_fromAmount", + "type": "uint96", + "internalType": "uint96" }, { - "name": "decryptionRequestStaticKey", - "type": "bytes", - "internalType": "bytes" + "name": "_toAmount", + "type": "uint96", + "internalType": "uint96" } ], "outputs": [] }, { "type": "function", - "name": "postBlindedShare", - "stateMutability": "nonpayable", + "name": "authorizedStake", + "stateMutability": "view", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" + "name": "", + "type": "address", + "internalType": "address" }, { - "name": "blindedShare", - "type": "bytes", - "internalType": "bytes" + "name": "", + "type": "address", + "internalType": "address" } ], - "outputs": [] + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ] }, { "type": "function", - "name": "postHandoverTranscript", - "stateMutability": "nonpayable", - "inputs": [ - { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "departingParticipant", + "name": "", "type": "address", "internalType": "address" - }, - { - "name": "transcript", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "decryptionRequestStaticKey", - "type": "bytes", - "internalType": "bytes" } - ], - "outputs": [] + ] }, { "type": "function", - "name": "postTranscript", + "name": "renounceOwnership", "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "rolesOf", + "stateMutability": "view", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" }, { - "name": "transcript", - "type": "bytes", - "internalType": "bytes" + "name": "beneficiary", + "type": "address", + "internalType": "address payable" + }, + { + "name": "authorizer", + "type": "address", + "internalType": "address" } - ], - "outputs": [] + ] }, { "type": "function", - "name": "publishTranscript", + "name": "setApplication", "stateMutability": "nonpayable", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "transcript", - "type": "bytes", - "internalType": "bytes" + "name": "_application", + "type": "address", + "internalType": "contract IApplication" } ], "outputs": [] }, { "type": "function", - "name": "reinitializeDefaultAdmin", + "name": "setRoles", "stateMutability": "nonpayable", "inputs": [ { - "name": "newDefaultAdmin", + "name": "_stakingProvider", "type": "address", "internalType": "address" } @@ -4537,16 +4363,26 @@ }, { "type": "function", - "name": "renounceRole", + "name": "setRoles", "stateMutability": "nonpayable", "inputs": [ { - "name": "role", - "type": "bytes32", - "internalType": "bytes32" + "name": "_stakingProvider", + "type": "address", + "internalType": "address" }, { - "name": "account", + "name": "_owner", + "type": "address", + "internalType": "address" + }, + { + "name": "_beneficiary", + "type": "address", + "internalType": "address payable" + }, + { + "name": "_authorizer", "type": "address", "internalType": "address" } @@ -4555,512 +4391,494 @@ }, { "type": "function", - "name": "revokeRole", + "name": "setStakes", "stateMutability": "nonpayable", "inputs": [ { - "name": "role", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "account", + "name": "_stakingProvider", "type": "address", "internalType": "address" + }, + { + "name": "_tStake", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "_keepInTStake", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "_nuInTStake", + "type": "uint96", + "internalType": "uint96" } ], "outputs": [] }, { "type": "function", - "name": "rituals", + "name": "stakedNu", "stateMutability": "view", "inputs": [ { - "name": "index", - "type": "uint256", - "internalType": "uint256" + "name": "", + "type": "address", + "internalType": "address" } ], "outputs": [ { - "name": "initiator", + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "stakes", + "stateMutability": "view", + "inputs": [ + { + "name": "_stakingProvider", "type": "address", "internalType": "address" - }, - { - "name": "initTimestamp", - "type": "uint32", - "internalType": "uint32" - }, + } + ], + "outputs": [ { - "name": "endTimestamp", - "type": "uint32", - "internalType": "uint32" + "name": "tStake", + "type": "uint96", + "internalType": "uint96" }, { - "name": "totalTranscripts", - "type": "uint16", - "internalType": "uint16" + "name": "keepInTStake", + "type": "uint96", + "internalType": "uint96" }, { - "name": "totalAggregations", - "type": "uint16", - "internalType": "uint16" - }, + "name": "nuInTStake", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "type": "function", + "name": "stakingProviderInfo", + "stateMutability": "view", + "inputs": [ { - "name": "authority", + "name": "", "type": "address", "internalType": "address" - }, - { - "name": "dkgSize", - "type": "uint16", - "internalType": "uint16" - }, + } + ], + "outputs": [ { - "name": "threshold", - "type": "uint16", - "internalType": "uint16" + "name": "owner", + "type": "address", + "internalType": "address" }, { - "name": "aggregationMismatch", - "type": "bool", - "internalType": "bool" + "name": "beneficiary", + "type": "address", + "internalType": "address payable" }, { - "name": "accessController", + "name": "authorizer", "type": "address", - "internalType": "contract IEncryptionAuthorizer" + "internalType": "address" }, { - "name": "publicKey", - "type": "tuple", - "components": [ - { - "name": "word0", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "word1", - "type": "bytes16", - "internalType": "bytes16" - } - ], - "internalType": "struct BLS12381.G1Point" + "name": "tStake", + "type": "uint96", + "internalType": "uint96" }, { - "name": "aggregatedTranscript", - "type": "bytes", - "internalType": "bytes" + "name": "keepInTStake", + "type": "uint96", + "internalType": "uint96" }, { - "name": "feeModel", - "type": "address", - "internalType": "contract IFeeModel" + "name": "nuInTStake", + "type": "uint96", + "internalType": "uint96" } ] }, { "type": "function", - "name": "rollbackDefaultAdminDelay", - "stateMutability": "nonpayable", - "inputs": [], - "outputs": [] - }, - { - "type": "function", - "name": "setMaxDkgSize", + "name": "transferOwnership", "stateMutability": "nonpayable", "inputs": [ { - "name": "newSize", - "type": "uint16", - "internalType": "uint16" + "name": "newOwner", + "type": "address", + "internalType": "address" } ], "outputs": [] - }, + } + ], + "tx_hash": "0xeb083a1906cd8825653e4077cccc9caae00007624f4ac0dba29f49d82ec41ea2", + "block_number": 4886812, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "ThresholdSigningMultisigCloneFactory": { + "address": "0x18B04d0eB283086C2DaF41F715acDf3f974290Ad", + "abi": [ { - "type": "function", - "name": "setProviderPublicKey", + "type": "constructor", "stateMutability": "nonpayable", "inputs": [ { - "name": "publicKey", - "type": "tuple", - "components": [ - { - "name": "word0", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "word1", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "word2", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "internalType": "struct BLS12381.G2Point" + "name": "_implementation", + "type": "address", + "internalType": "address" + }, + { + "name": "_signingCoordinatorChild", + "type": "address", + "internalType": "address" } - ], - "outputs": [] + ] }, { - "type": "function", - "name": "setReimbursementPool", - "stateMutability": "nonpayable", + "type": "error", + "name": "ERC1167FailedCreateClone", + "inputs": [] + }, + { + "type": "event", + "name": "ThresholdMultisigCloneDeployed", "inputs": [ { - "name": "pool", + "name": "cloneAddress", "type": "address", - "internalType": "contract IReimbursementPool" + "internalType": "address", + "indexed": false + }, + { + "name": "cohortId", + "type": "uint256", + "internalType": "uint256", + "indexed": false } ], - "outputs": [] + "anonymous": false }, { "type": "function", - "name": "setTimeout", + "name": "deploySigningMultisig", "stateMutability": "nonpayable", "inputs": [ { - "name": "newTimeout", - "type": "uint32", - "internalType": "uint32" + "name": "signers", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "threshold", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "initialOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "cohortId", + "type": "uint256", + "internalType": "uint256" } ], - "outputs": [] + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] }, { "type": "function", - "name": "supportsInterface", + "name": "getCloneAddress", "stateMutability": "view", "inputs": [ { - "name": "interfaceId", - "type": "bytes4", - "internalType": "bytes4" + "name": "cohortId", + "type": "uint256", + "internalType": "uint256" } ], "outputs": [ { "name": "", - "type": "bool", - "internalType": "bool" + "type": "address", + "internalType": "address" } ] }, { "type": "function", - "name": "timeout", + "name": "implementation", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "uint32", - "internalType": "uint32" + "type": "address", + "internalType": "address" } ] }, { "type": "function", - "name": "transferRitualAuthority", - "stateMutability": "nonpayable", - "inputs": [ - { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, + "name": "signingCoordinatorChild", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "newAuthority", + "name": "", "type": "address", "internalType": "address" } - ], - "outputs": [] - }, - { - "type": "function", - "name": "withdrawAllTokens", - "stateMutability": "nonpayable", - "inputs": [ - { - "name": "token", - "type": "address", - "internalType": "contract IERC20" - } - ], - "outputs": [] + ] } ], - "tx_hash": "0x4207f1fd038945ef7d5da06a0989446d3ed2eb031adad1233c7e3a61951652a1", - "block_number": 5198668, + "tx_hash": "0x1057e9da3709920e6bb8a0277f673f841acaaa1777636b4cffce247009a1c2fe", + "block_number": 9595185, "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" - }, - "FreeFeeModel": { - "address": "0x14EB9BB700E45D2Ee9233056b8cc341276c688Ba", + } + }, + "80002": { + "Coordinator": { + "address": "0xE9e94499bB0f67b9DBD75506ec1735486DE57770", "abi": [ { "type": "constructor", "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_application", + "type": "address", + "internalType": "contract ITACoChildApplication" + } + ] + }, + { + "type": "error", + "name": "AccessControlBadConfirmation", "inputs": [] }, { "type": "error", - "name": "OwnableInvalidOwner", + "name": "AccessControlEnforcedDefaultAdminDelay", "inputs": [ { - "name": "owner", - "type": "address", - "internalType": "address" + "name": "schedule", + "type": "uint48", + "internalType": "uint48" } ] }, { "type": "error", - "name": "OwnableUnauthorizedAccount", + "name": "AccessControlEnforcedDefaultAdminRules", + "inputs": [] + }, + { + "type": "error", + "name": "AccessControlInvalidDefaultAdmin", "inputs": [ { - "name": "account", + "name": "defaultAdmin", "type": "address", "internalType": "address" } ] }, { - "type": "event", - "name": "OwnershipTransferred", + "type": "error", + "name": "AccessControlUnauthorizedAccount", "inputs": [ { - "name": "previousOwner", + "name": "account", "type": "address", - "internalType": "address", - "indexed": true + "internalType": "address" }, { - "name": "newOwner", - "type": "address", - "internalType": "address", - "indexed": true + "name": "neededRole", + "type": "bytes32", + "internalType": "bytes32" } - ], - "anonymous": false + ] }, { - "type": "function", - "name": "approveInitiator", - "stateMutability": "nonpayable", + "type": "error", + "name": "AddressEmptyCode", "inputs": [ { - "name": "initiator", + "name": "target", "type": "address", "internalType": "address" } - ], - "outputs": [] + ] }, { - "type": "function", - "name": "beforeIsAuthorized", - "stateMutability": "view", + "type": "error", + "name": "AddressInsufficientBalance", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" + "name": "account", + "type": "address", + "internalType": "address" } - ], - "outputs": [] + ] }, { - "type": "function", - "name": "beforeSetAuthorization", - "stateMutability": "nonpayable", - "inputs": [ - { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "addresses", - "type": "address[]", - "internalType": "address[]" - }, - { - "name": "value", - "type": "bool", - "internalType": "bool" - } - ], - "outputs": [] + "type": "error", + "name": "FailedInnerCall", + "inputs": [] }, { - "type": "function", - "name": "initiatorWhiteList", - "stateMutability": "view", + "type": "error", + "name": "InvalidInitialization", + "inputs": [] + }, + { + "type": "error", + "name": "NotInitializing", + "inputs": [] + }, + { + "type": "error", + "name": "SafeCastOverflowedUintDowncast", "inputs": [ { - "name": "initiator", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ + "name": "bits", + "type": "uint8", + "internalType": "uint8" + }, { - "name": "approved", - "type": "bool", - "internalType": "bool" + "name": "value", + "type": "uint256", + "internalType": "uint256" } ] }, { - "type": "function", - "name": "owner", - "stateMutability": "view", - "inputs": [], - "outputs": [ + "type": "error", + "name": "SafeERC20FailedOperation", + "inputs": [ { - "name": "", + "name": "token", "type": "address", "internalType": "address" } ] }, { - "type": "function", - "name": "processRitualExtending", - "stateMutability": "nonpayable", + "type": "event", + "name": "AggregationPosted", "inputs": [ { - "name": "initiator", - "type": "address", - "internalType": "address" - }, - { - "name": "", + "name": "ritualId", "type": "uint32", - "internalType": "uint32" + "internalType": "uint32", + "indexed": true }, { - "name": "", - "type": "uint256", - "internalType": "uint256" + "name": "node", + "type": "address", + "internalType": "address", + "indexed": true }, { - "name": "", - "type": "uint32", - "internalType": "uint32" + "name": "aggregatedTranscriptDigest", + "type": "bytes32", + "internalType": "bytes32", + "indexed": false } ], - "outputs": [] + "anonymous": false }, { - "type": "function", - "name": "processRitualPayment", - "stateMutability": "nonpayable", + "type": "event", + "name": "BlindedSharePosted", "inputs": [ { - "name": "initiator", - "type": "address", - "internalType": "address" - }, - { - "name": "", + "name": "ritualId", "type": "uint32", - "internalType": "uint32" - }, - { - "name": "", - "type": "uint256", - "internalType": "uint256" + "internalType": "uint32", + "indexed": true }, { - "name": "", - "type": "uint32", - "internalType": "uint32" + "name": "departingParticipant", + "type": "address", + "internalType": "address", + "indexed": true } ], - "outputs": [] + "anonymous": false }, { - "type": "function", - "name": "renounceOwnership", - "stateMutability": "nonpayable", + "type": "event", + "name": "DefaultAdminDelayChangeCanceled", "inputs": [], - "outputs": [] + "anonymous": false }, { - "type": "function", - "name": "transferOwnership", - "stateMutability": "nonpayable", + "type": "event", + "name": "DefaultAdminDelayChangeScheduled", "inputs": [ { - "name": "newOwner", - "type": "address", - "internalType": "address" + "name": "newDelay", + "type": "uint48", + "internalType": "uint48", + "indexed": false + }, + { + "name": "effectSchedule", + "type": "uint48", + "internalType": "uint48", + "indexed": false } ], - "outputs": [] - } - ], - "tx_hash": "0x9672d91bcbab5b746288e592e420c7cda089ef598023971d6525243d1504758b", - "block_number": 9106650, - "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" - }, - "GlobalAllowList": { - "address": "0xd5a66BF5f63dccAFEC74AEe1ba755CD7e06F683a", - "abi": [ - { - "type": "constructor", - "stateMutability": "nonpayable", - "inputs": [ - { - "name": "_coordinator", - "type": "address", - "internalType": "contract Coordinator" - } - ] + "anonymous": false }, { - "type": "error", - "name": "ECDSAInvalidSignature", - "inputs": [] + "type": "event", + "name": "DefaultAdminTransferCanceled", + "inputs": [], + "anonymous": false }, { - "type": "error", - "name": "ECDSAInvalidSignatureLength", + "type": "event", + "name": "DefaultAdminTransferScheduled", "inputs": [ { - "name": "length", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "error", - "name": "ECDSAInvalidSignatureS", - "inputs": [ + "name": "newAdmin", + "type": "address", + "internalType": "address", + "indexed": true + }, { - "name": "s", - "type": "bytes32", - "internalType": "bytes32" + "name": "acceptSchedule", + "type": "uint48", + "internalType": "uint48", + "indexed": false } - ] + ], + "anonymous": false }, { "type": "event", - "name": "AddressAuthorizationSet", + "name": "EndRitual", "inputs": [ { "name": "ritualId", @@ -5069,13 +4887,7 @@ "indexed": true }, { - "name": "_address", - "type": "address", - "internalType": "address", - "indexed": true - }, - { - "name": "isAuthorized", + "name": "successful", "type": "bool", "internalType": "bool", "indexed": false @@ -5084,712 +4896,701 @@ "anonymous": false }, { - "type": "function", - "name": "MAX_AUTH_ACTIONS", - "stateMutability": "view", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint32", - "internalType": "uint32" - } - ] - }, - { - "type": "function", - "name": "authActions", - "stateMutability": "view", + "type": "event", + "name": "FeeModelApproved", "inputs": [ { - "name": "", - "type": "uint32", - "internalType": "uint32" + "name": "feeModel", + "type": "address", + "internalType": "contract IFeeModel", + "indexed": false } ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ] + "anonymous": false }, { - "type": "function", - "name": "authorize", - "stateMutability": "nonpayable", + "type": "event", + "name": "HandoverCanceled", "inputs": [ { "name": "ritualId", "type": "uint32", - "internalType": "uint32" + "internalType": "uint32", + "indexed": true }, { - "name": "addresses", - "type": "address[]", - "internalType": "address[]" - } - ], - "outputs": [] - }, - { - "type": "function", - "name": "coordinator", - "stateMutability": "view", - "inputs": [], - "outputs": [ + "name": "departingParticipant", + "type": "address", + "internalType": "address", + "indexed": true + }, { - "name": "", + "name": "incomingParticipant", "type": "address", - "internalType": "contract Coordinator" + "internalType": "address", + "indexed": true } - ] + ], + "anonymous": false }, { - "type": "function", - "name": "deauthorize", - "stateMutability": "nonpayable", + "type": "event", + "name": "HandoverFinalized", "inputs": [ { "name": "ritualId", "type": "uint32", - "internalType": "uint32" + "internalType": "uint32", + "indexed": true }, { - "name": "addresses", - "type": "address[]", - "internalType": "address[]" + "name": "departingParticipant", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "incomingParticipant", + "type": "address", + "internalType": "address", + "indexed": true } ], - "outputs": [] + "anonymous": false }, { - "type": "function", - "name": "isAddressAuthorized", - "stateMutability": "view", + "type": "event", + "name": "HandoverRequest", "inputs": [ { "name": "ritualId", "type": "uint32", - "internalType": "uint32" + "internalType": "uint32", + "indexed": true }, { - "name": "encryptor", + "name": "departingParticipant", "type": "address", - "internalType": "address" - } - ], - "outputs": [ + "internalType": "address", + "indexed": true + }, { - "name": "", - "type": "bool", - "internalType": "bool" + "name": "incomingParticipant", + "type": "address", + "internalType": "address", + "indexed": true } - ] + ], + "anonymous": false }, { - "type": "function", - "name": "isAuthorized", - "stateMutability": "view", + "type": "event", + "name": "HandoverTranscriptPosted", "inputs": [ { "name": "ritualId", "type": "uint32", - "internalType": "uint32" + "internalType": "uint32", + "indexed": true }, { - "name": "evidence", - "type": "bytes", - "internalType": "bytes" + "name": "departingParticipant", + "type": "address", + "internalType": "address", + "indexed": true }, { - "name": "ciphertextHeader", - "type": "bytes", - "internalType": "bytes" + "name": "incomingParticipant", + "type": "address", + "internalType": "address", + "indexed": true } ], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ] - } - ], - "tx_hash": "0x7753ec5286e2521a8430a9686052d7e065b3b561167123e6975f0ae1a2d312d0", - "block_number": 9101909, - "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" - }, - "LynxRitualToken": { - "address": "0x064Be2a9740e565729BC0d47bC616c5bb8Cc87B9", - "abi": [ + "anonymous": false + }, { - "type": "constructor", - "stateMutability": "nonpayable", + "type": "event", + "name": "Initialized", "inputs": [ { - "name": "_totalSupplyOfTokens", - "type": "uint256", - "internalType": "uint256" + "name": "version", + "type": "uint64", + "internalType": "uint64", + "indexed": false } - ] + ], + "anonymous": false }, { - "type": "error", - "name": "ERC20InsufficientAllowance", + "type": "event", + "name": "MaxDkgSizeChanged", "inputs": [ { - "name": "spender", - "type": "address", - "internalType": "address" - }, - { - "name": "allowance", - "type": "uint256", - "internalType": "uint256" + "name": "oldSize", + "type": "uint16", + "internalType": "uint16", + "indexed": false }, { - "name": "needed", - "type": "uint256", - "internalType": "uint256" + "name": "newSize", + "type": "uint16", + "internalType": "uint16", + "indexed": false } - ] + ], + "anonymous": false }, { - "type": "error", - "name": "ERC20InsufficientBalance", + "type": "event", + "name": "ParticipantPublicKeySet", "inputs": [ { - "name": "sender", - "type": "address", - "internalType": "address" + "name": "ritualId", + "type": "uint32", + "internalType": "uint32", + "indexed": true }, { - "name": "balance", - "type": "uint256", - "internalType": "uint256" + "name": "participant", + "type": "address", + "internalType": "address", + "indexed": true }, { - "name": "needed", - "type": "uint256", - "internalType": "uint256" + "name": "publicKey", + "type": "tuple", + "components": [ + { + "name": "word0", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word1", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word2", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "internalType": "struct BLS12381.G2Point", + "indexed": false } - ] + ], + "anonymous": false }, { - "type": "error", - "name": "ERC20InvalidApprover", + "type": "event", + "name": "ReimbursementPoolSet", "inputs": [ { - "name": "approver", + "name": "pool", "type": "address", - "internalType": "address" + "internalType": "address", + "indexed": true } - ] + ], + "anonymous": false }, { - "type": "error", - "name": "ERC20InvalidReceiver", + "type": "event", + "name": "RitualAuthorityTransferred", "inputs": [ { - "name": "receiver", + "name": "ritualId", + "type": "uint32", + "internalType": "uint32", + "indexed": true + }, + { + "name": "previousAuthority", "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "ERC20InvalidSender", - "inputs": [ + "internalType": "address", + "indexed": true + }, { - "name": "sender", + "name": "newAuthority", "type": "address", - "internalType": "address" + "internalType": "address", + "indexed": true } - ] + ], + "anonymous": false }, { - "type": "error", - "name": "ERC20InvalidSpender", + "type": "event", + "name": "RitualExtended", "inputs": [ { - "name": "spender", - "type": "address", - "internalType": "address" + "name": "ritualId", + "type": "uint32", + "internalType": "uint32", + "indexed": true + }, + { + "name": "endTimestamp", + "type": "uint32", + "internalType": "uint32", + "indexed": false } - ] + ], + "anonymous": false }, { "type": "event", - "name": "Approval", + "name": "RoleAdminChanged", "inputs": [ { - "name": "owner", - "type": "address", - "internalType": "address", + "name": "role", + "type": "bytes32", + "internalType": "bytes32", "indexed": true }, { - "name": "spender", - "type": "address", - "internalType": "address", + "name": "previousAdminRole", + "type": "bytes32", + "internalType": "bytes32", "indexed": true }, { - "name": "value", - "type": "uint256", - "internalType": "uint256", - "indexed": false + "name": "newAdminRole", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true } ], "anonymous": false }, { "type": "event", - "name": "Transfer", + "name": "RoleGranted", "inputs": [ { - "name": "from", - "type": "address", - "internalType": "address", + "name": "role", + "type": "bytes32", + "internalType": "bytes32", "indexed": true }, { - "name": "to", + "name": "account", "type": "address", "internalType": "address", "indexed": true }, { - "name": "value", - "type": "uint256", - "internalType": "uint256", - "indexed": false + "name": "sender", + "type": "address", + "internalType": "address", + "indexed": true } ], "anonymous": false }, { - "type": "function", - "name": "allowance", - "stateMutability": "view", + "type": "event", + "name": "RoleRevoked", "inputs": [ { - "name": "owner", + "name": "role", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true + }, + { + "name": "account", "type": "address", - "internalType": "address" + "internalType": "address", + "indexed": true }, { - "name": "spender", + "name": "sender", "type": "address", - "internalType": "address" + "internalType": "address", + "indexed": true } ], - "outputs": [ + "anonymous": false + }, + { + "type": "event", + "name": "StartAggregationRound", + "inputs": [ { - "name": "", - "type": "uint256", - "internalType": "uint256" + "name": "ritualId", + "type": "uint32", + "internalType": "uint32", + "indexed": true } - ] + ], + "anonymous": false }, { - "type": "function", - "name": "approve", - "stateMutability": "nonpayable", + "type": "event", + "name": "StartRitual", "inputs": [ { - "name": "spender", + "name": "ritualId", + "type": "uint32", + "internalType": "uint32", + "indexed": true + }, + { + "name": "authority", "type": "address", - "internalType": "address" + "internalType": "address", + "indexed": true }, { - "name": "value", - "type": "uint256", - "internalType": "uint256" + "name": "participants", + "type": "address[]", + "internalType": "address[]", + "indexed": false } ], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ] + "anonymous": false }, { - "type": "function", - "name": "balanceOf", - "stateMutability": "view", + "type": "event", + "name": "TimeoutChanged", "inputs": [ { - "name": "account", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ + "name": "oldTimeout", + "type": "uint32", + "internalType": "uint32", + "indexed": false + }, { - "name": "", - "type": "uint256", - "internalType": "uint256" + "name": "newTimeout", + "type": "uint32", + "internalType": "uint32", + "indexed": false } - ] + ], + "anonymous": false }, { - "type": "function", - "name": "decimals", - "stateMutability": "view", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint8", - "internalType": "uint8" + "type": "event", + "name": "TranscriptPosted", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32", + "indexed": true + }, + { + "name": "node", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "transcriptDigest", + "type": "bytes32", + "internalType": "bytes32", + "indexed": false } - ] + ], + "anonymous": false }, { "type": "function", - "name": "name", + "name": "DEFAULT_ADMIN_ROLE", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "string", - "internalType": "string" + "type": "bytes32", + "internalType": "bytes32" } ] }, { "type": "function", - "name": "symbol", + "name": "FEE_MODEL_MANAGER_ROLE", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "string", - "internalType": "string" + "type": "bytes32", + "internalType": "bytes32" } ] }, { "type": "function", - "name": "totalSupply", + "name": "HANDOVER_SUPERVISOR_ROLE", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "uint256", - "internalType": "uint256" + "type": "bytes32", + "internalType": "bytes32" } ] }, { "type": "function", - "name": "transfer", - "stateMutability": "nonpayable", - "inputs": [ - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" - } - ], + "name": "TREASURY_ROLE", + "stateMutability": "view", + "inputs": [], "outputs": [ { "name": "", - "type": "bool", - "internalType": "bool" + "type": "bytes32", + "internalType": "bytes32" } ] }, { "type": "function", - "name": "transferFrom", + "name": "acceptDefaultAdminTransfer", "stateMutability": "nonpayable", - "inputs": [ - { - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" - } - ], + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "application", + "stateMutability": "view", + "inputs": [], "outputs": [ { "name": "", - "type": "bool", - "internalType": "bool" + "type": "address", + "internalType": "contract ITACoChildApplication" } ] - } - ], - "tx_hash": "0x3fa59f2ab18ce9017f5760b31bd7b132b387f1dd6e8c5d3fb8e58a553411ed69", - "block_number": 5198656, - "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" - }, - "MockPolygonChild": { - "address": "0x4FD23FAB4A09F85872bf240ABBd484cb4F9a5F79", - "abi": [ - { - "type": "constructor", - "stateMutability": "nonpayable", - "inputs": [] }, { - "type": "error", - "name": "OwnableInvalidOwner", + "type": "function", + "name": "approveFeeModel", + "stateMutability": "nonpayable", "inputs": [ { - "name": "owner", + "name": "feeModel", "type": "address", - "internalType": "address" + "internalType": "contract IFeeModel" } - ] + ], + "outputs": [] }, { - "type": "error", - "name": "OwnableUnauthorizedAccount", + "type": "function", + "name": "beginDefaultAdminTransfer", + "stateMutability": "nonpayable", "inputs": [ { - "name": "account", + "name": "newAdmin", "type": "address", "internalType": "address" } - ] + ], + "outputs": [] }, { - "type": "event", - "name": "AuthorizationUpdated", + "type": "function", + "name": "blindedSharePosition", + "stateMutability": "pure", "inputs": [ { - "name": "stakingProvider", - "type": "address", - "internalType": "address", - "indexed": true + "name": "index", + "type": "uint256", + "internalType": "uint256" }, { - "name": "amount", - "type": "uint96", - "internalType": "uint96", - "indexed": false + "name": "threshold", + "type": "uint16", + "internalType": "uint16" } ], - "anonymous": false + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] }, { - "type": "event", - "name": "OperatorConfirmed", + "type": "function", + "name": "cancelDefaultAdminTransfer", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "cancelHandover", + "stateMutability": "nonpayable", "inputs": [ { - "name": "stakingProvider", - "type": "address", - "internalType": "address", - "indexed": true + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" }, { - "name": "operator", + "name": "departingParticipant", "type": "address", - "internalType": "address", - "indexed": true + "internalType": "address" } ], - "anonymous": false + "outputs": [] }, { - "type": "event", - "name": "OperatorUpdated", + "type": "function", + "name": "changeDefaultAdminDelay", + "stateMutability": "nonpayable", "inputs": [ { - "name": "stakingProvider", - "type": "address", - "internalType": "address", - "indexed": true - }, - { - "name": "operator", - "type": "address", - "internalType": "address", - "indexed": true + "name": "newDelay", + "type": "uint48", + "internalType": "uint48" } ], - "anonymous": false + "outputs": [] }, { - "type": "event", - "name": "OwnershipTransferred", + "type": "function", + "name": "cohortFingerprint", + "stateMutability": "pure", "inputs": [ { - "name": "previousOwner", - "type": "address", - "internalType": "address", - "indexed": true - }, - { - "name": "newOwner", - "type": "address", - "internalType": "address", - "indexed": true + "name": "nodes", + "type": "address[]", + "internalType": "address[]" } ], - "anonymous": false + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ] }, { "type": "function", - "name": "childApplication", + "name": "defaultAdmin", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", "type": "address", - "internalType": "contract ITACoRootToChild" + "internalType": "address" } ] }, { "type": "function", - "name": "confirmOperatorAddress", - "stateMutability": "nonpayable", - "inputs": [ + "name": "defaultAdminDelay", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "_operator", - "type": "address", - "internalType": "address" + "name": "", + "type": "uint48", + "internalType": "uint48" } - ], - "outputs": [] + ] }, { "type": "function", - "name": "owner", + "name": "defaultAdminDelayIncreaseWait", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "address", - "internalType": "address" + "type": "uint48", + "internalType": "uint48" } ] }, { "type": "function", - "name": "renounceOwnership", - "stateMutability": "nonpayable", + "name": "dkgTimeout", + "stateMutability": "view", "inputs": [], - "outputs": [] - }, - { - "type": "function", - "name": "setChildApplication", - "stateMutability": "nonpayable", - "inputs": [ + "outputs": [ { - "name": "_childApplication", - "type": "address", - "internalType": "contract ITACoRootToChild" + "name": "", + "type": "uint32", + "internalType": "uint32" } - ], - "outputs": [] + ] }, { "type": "function", - "name": "transferOwnership", - "stateMutability": "nonpayable", - "inputs": [ + "name": "dkgTimeoutStub", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "newOwner", - "type": "address", - "internalType": "address" + "name": "", + "type": "uint32", + "internalType": "uint32" } - ], - "outputs": [] + ] }, { "type": "function", - "name": "updateAuthorization", - "stateMutability": "nonpayable", + "name": "expectedTranscriptSize", + "stateMutability": "pure", "inputs": [ { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" + "name": "dkgSize", + "type": "uint16", + "internalType": "uint16" }, { - "name": "_amount", - "type": "uint96", - "internalType": "uint96" + "name": "threshold", + "type": "uint16", + "internalType": "uint16" } ], - "outputs": [] + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] }, { "type": "function", - "name": "updateOperator", + "name": "extendRitual", "stateMutability": "nonpayable", "inputs": [ { - "name": "_stakingProvider", - "type": "address", - "internalType": "address" + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" }, { - "name": "_operator", - "type": "address", - "internalType": "address" + "name": "duration", + "type": "uint32", + "internalType": "uint32" } ], "outputs": [] - } - ], - "tx_hash": "0xee32aa290b2ea1a03cc01412e9089897ec92cabd3561664c26bf2c1e5e9247d4", - "block_number": 5198636, - "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" - }, - "OpenAccessAuthorizer": { - "address": "0x33270a0B88d0Ffb6B0b4FBA119ca6a7263DeF675", - "abi": [ + }, { "type": "function", - "name": "isAuthorized", - "stateMutability": "pure", + "name": "feeModelsRegistry", + "stateMutability": "view", "inputs": [ { "name": "", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "", - "type": "bytes", - "internalType": "bytes" + "type": "address", + "internalType": "contract IFeeModel" } ], "outputs": [ @@ -5799,136 +5600,2820 @@ "internalType": "bool" } ] - } - ], - "tx_hash": "0x8bbd39406559c99b6dc35df89c604c645b0996aac2908ce9e75f2d38367d294a", - "block_number": 5196868, - "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" - }, - "ReimbursementPool": { - "address": "0x53Fe19093Be1AC0136d33D91e01aBa4aa381B87B", - "abi": [ + }, { - "type": "constructor", + "type": "function", + "name": "finalizeHandover", "stateMutability": "nonpayable", "inputs": [ { - "name": "_staticGas", - "type": "uint256", - "internalType": "uint256" + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" }, { - "name": "_maxGasPrice", - "type": "uint256", - "internalType": "uint256" + "name": "departingParticipant", + "type": "address", + "internalType": "address" } - ] + ], + "outputs": [] }, { - "type": "error", - "name": "OwnableInvalidOwner", + "type": "function", + "name": "getAccessController", + "stateMutability": "view", "inputs": [ { - "name": "owner", + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", "type": "address", - "internalType": "address" + "internalType": "contract IEncryptionAuthorizer" } ] }, { - "type": "error", - "name": "OwnableUnauthorizedAccount", + "type": "function", + "name": "getAuthority", + "stateMutability": "view", "inputs": [ { - "name": "account", + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", "type": "address", "internalType": "address" } ] }, { - "type": "error", - "name": "ReentrancyGuardReentrantCall", - "inputs": [] - }, - { - "type": "event", - "name": "AuthorizedContract", + "type": "function", + "name": "getFeeModel", + "stateMutability": "view", "inputs": [ { - "name": "thirdPartyContract", - "type": "address", - "internalType": "address", - "indexed": false + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" } ], - "anonymous": false + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IFeeModel" + } + ] }, { - "type": "event", - "name": "FundsWithdrawn", + "type": "function", + "name": "getHandoverKey", + "stateMutability": "view", "inputs": [ { - "name": "withdrawnAmount", - "type": "uint256", - "internalType": "uint256", - "indexed": false + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" }, { - "name": "receiver", + "name": "departingProvider", "type": "address", - "internalType": "address", - "indexed": false + "internalType": "address" } ], - "anonymous": false - }, - { - "type": "event", - "name": "MaxGasPriceUpdated", - "inputs": [ + "outputs": [ { - "name": "newMaxGasPrice", - "type": "uint256", - "internalType": "uint256", - "indexed": false + "name": "", + "type": "bytes32", + "internalType": "bytes32" } - ], - "anonymous": false + ] }, { - "type": "event", - "name": "OwnershipTransferred", + "type": "function", + "name": "getHandoverState", + "stateMutability": "view", "inputs": [ { - "name": "previousOwner", - "type": "address", - "internalType": "address", - "indexed": true + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" }, { - "name": "newOwner", + "name": "departingParticipant", "type": "address", - "internalType": "address", - "indexed": true + "internalType": "address" } ], - "anonymous": false + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum Coordinator.HandoverState" + } + ] }, { - "type": "event", - "name": "SendingEtherFailed", + "type": "function", + "name": "getInitiator", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "getParticipant", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "provider", + "type": "address", + "internalType": "address" + }, + { + "name": "transcript", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "components": [ + { + "name": "provider", + "type": "address", + "internalType": "address" + }, + { + "name": "aggregated", + "type": "bool", + "internalType": "bool" + }, + { + "name": "transcript", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "decryptionRequestStaticKey", + "type": "bytes", + "internalType": "bytes" + } + ], + "internalType": "struct Coordinator.Participant" + } + ] + }, + { + "type": "function", + "name": "getParticipantFromProvider", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "provider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "components": [ + { + "name": "provider", + "type": "address", + "internalType": "address" + }, + { + "name": "aggregated", + "type": "bool", + "internalType": "bool" + }, + { + "name": "transcript", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "decryptionRequestStaticKey", + "type": "bytes", + "internalType": "bytes" + } + ], + "internalType": "struct Coordinator.Participant" + } + ] + }, + { + "type": "function", + "name": "getParticipants", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple[]", + "components": [ + { + "name": "provider", + "type": "address", + "internalType": "address" + }, + { + "name": "aggregated", + "type": "bool", + "internalType": "bool" + }, + { + "name": "transcript", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "decryptionRequestStaticKey", + "type": "bytes", + "internalType": "bytes" + } + ], + "internalType": "struct Coordinator.Participant[]" + } + ] + }, + { + "type": "function", + "name": "getParticipants", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "startIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxParticipants", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "includeTranscript", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple[]", + "components": [ + { + "name": "provider", + "type": "address", + "internalType": "address" + }, + { + "name": "aggregated", + "type": "bool", + "internalType": "bool" + }, + { + "name": "transcript", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "decryptionRequestStaticKey", + "type": "bytes", + "internalType": "bytes" + } + ], + "internalType": "struct Coordinator.Participant[]" + } + ] + }, + { + "type": "function", + "name": "getProviderPublicKey", + "stateMutability": "view", + "inputs": [ + { + "name": "provider", + "type": "address", + "internalType": "address" + }, + { + "name": "ritualId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "components": [ + { + "name": "word0", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word1", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word2", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "internalType": "struct BLS12381.G2Point" + } + ] + }, + { + "type": "function", + "name": "getProviders", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ] + }, + { + "type": "function", + "name": "getPublicKeyFromRitualId", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "components": [ + { + "name": "word0", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word1", + "type": "bytes16", + "internalType": "bytes16" + } + ], + "internalType": "struct BLS12381.G1Point" + } + ] + }, + { + "type": "function", + "name": "getRitualIdFromPublicKey", + "stateMutability": "view", + "inputs": [ + { + "name": "dkgPublicKey", + "type": "tuple", + "components": [ + { + "name": "word0", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word1", + "type": "bytes16", + "internalType": "bytes16" + } + ], + "internalType": "struct BLS12381.G1Point" + } + ], + "outputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "type": "function", + "name": "getRitualState", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum Coordinator.RitualState" + } + ] + }, + { + "type": "function", + "name": "getRoleAdmin", + "stateMutability": "view", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "function", + "name": "getThresholdForRitualSize", + "stateMutability": "pure", + "inputs": [ + { + "name": "size", + "type": "uint16", + "internalType": "uint16" + } + ], + "outputs": [ + { + "name": "", + "type": "uint16", + "internalType": "uint16" + } + ] + }, + { + "type": "function", + "name": "getTimestamps", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "initTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "endTimestamp", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "type": "function", + "name": "grantRole", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "handoverRequest", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "departingParticipant", + "type": "address", + "internalType": "address" + }, + { + "name": "incomingParticipant", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "handoverTimeout", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "type": "function", + "name": "handovers", + "stateMutability": "view", + "inputs": [ + { + "name": "handoverKey", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "requestTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "incomingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "transcript", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "decryptionRequestStaticKey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "blindedShare", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "type": "function", + "name": "hasRole", + "stateMutability": "view", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "initialize", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_maxDkgSize", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "_admin", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "initializeNumberOfRituals", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "initiateRitual", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "feeModel", + "type": "address", + "internalType": "contract IFeeModel" + }, + { + "name": "providers", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "authority", + "type": "address", + "internalType": "address" + }, + { + "name": "duration", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "accessController", + "type": "address", + "internalType": "contract IEncryptionAuthorizer" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "type": "function", + "name": "isEncryptionAuthorized", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "evidence", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "ciphertextHeader", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "isParticipant", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "provider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "isProviderKeySet", + "stateMutability": "view", + "inputs": [ + { + "name": "provider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "isProviderPublicKeySet", + "stateMutability": "view", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "isRitualActive", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "maxDkgSize", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint16", + "internalType": "uint16" + } + ] + }, + { + "type": "function", + "name": "numberOfRituals", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "pendingDefaultAdmin", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "newAdmin", + "type": "address", + "internalType": "address" + }, + { + "name": "schedule", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "type": "function", + "name": "pendingDefaultAdminDelay", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "newDelay", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "schedule", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "type": "function", + "name": "postAggregation", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "aggregatedTranscript", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "dkgPublicKey", + "type": "tuple", + "components": [ + { + "name": "word0", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word1", + "type": "bytes16", + "internalType": "bytes16" + } + ], + "internalType": "struct BLS12381.G1Point" + }, + { + "name": "decryptionRequestStaticKey", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "postBlindedShare", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "blindedShare", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "postHandoverTranscript", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "departingParticipant", + "type": "address", + "internalType": "address" + }, + { + "name": "transcript", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "decryptionRequestStaticKey", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "postTranscript", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "transcript", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "publishTranscript", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "transcript", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "reinitializeDefaultAdmin", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newDefaultAdmin", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "renounceRole", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "revokeRole", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "rituals", + "stateMutability": "view", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "initiator", + "type": "address", + "internalType": "address" + }, + { + "name": "initTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "endTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "totalTranscripts", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "totalAggregations", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "authority", + "type": "address", + "internalType": "address" + }, + { + "name": "dkgSize", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "threshold", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "aggregationMismatch", + "type": "bool", + "internalType": "bool" + }, + { + "name": "accessController", + "type": "address", + "internalType": "contract IEncryptionAuthorizer" + }, + { + "name": "publicKey", + "type": "tuple", + "components": [ + { + "name": "word0", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word1", + "type": "bytes16", + "internalType": "bytes16" + } + ], + "internalType": "struct BLS12381.G1Point" + }, + { + "name": "aggregatedTranscript", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "feeModel", + "type": "address", + "internalType": "contract IFeeModel" + } + ] + }, + { + "type": "function", + "name": "rollbackDefaultAdminDelay", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "setMaxDkgSize", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newSize", + "type": "uint16", + "internalType": "uint16" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "setProviderPublicKey", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "publicKey", + "type": "tuple", + "components": [ + { + "name": "word0", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word1", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "word2", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "internalType": "struct BLS12381.G2Point" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "setReimbursementPool", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "pool", + "type": "address", + "internalType": "contract IReimbursementPool" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "setTimeout", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newTimeout", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "supportsInterface", + "stateMutability": "view", + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "timeout", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "type": "function", + "name": "transferRitualAuthority", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "newAuthority", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "withdrawAllTokens", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + } + ], + "outputs": [] + } + ], + "tx_hash": "0x4207f1fd038945ef7d5da06a0989446d3ed2eb031adad1233c7e3a61951652a1", + "block_number": 5198668, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "FreeFeeModel": { + "address": "0x14EB9BB700E45D2Ee9233056b8cc341276c688Ba", + "abi": [ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [] + }, + { + "type": "error", + "name": "OwnableInvalidOwner", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "OwnableUnauthorizedAccount", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "newOwner", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "approveInitiator", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "initiator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "beforeIsAuthorized", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "beforeSetAuthorization", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "addresses", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "value", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "initiatorWhiteList", + "stateMutability": "view", + "inputs": [ + { + "name": "initiator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "approved", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "processRitualExtending", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "initiator", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "processRitualPayment", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "initiator", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "renounceOwnership", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "transferOwnership", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + } + ], + "tx_hash": "0x9672d91bcbab5b746288e592e420c7cda089ef598023971d6525243d1504758b", + "block_number": 9106650, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "GlobalAllowList": { + "address": "0xd5a66BF5f63dccAFEC74AEe1ba755CD7e06F683a", + "abi": [ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_coordinator", + "type": "address", + "internalType": "contract Coordinator" + } + ] + }, + { + "type": "error", + "name": "ECDSAInvalidSignature", + "inputs": [] + }, + { + "type": "error", + "name": "ECDSAInvalidSignatureLength", + "inputs": [ + { + "name": "length", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ECDSAInvalidSignatureS", + "inputs": [ + { + "name": "s", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "event", + "name": "AddressAuthorizationSet", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32", + "indexed": true + }, + { + "name": "_address", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "isAuthorized", + "type": "bool", + "internalType": "bool", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "MAX_AUTH_ACTIONS", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "type": "function", + "name": "authActions", + "stateMutability": "view", + "inputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "authorize", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "addresses", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "coordinator", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract Coordinator" + } + ] + }, + { + "type": "function", + "name": "deauthorize", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "addresses", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "isAddressAuthorized", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "encryptor", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "isAuthorized", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "evidence", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "ciphertextHeader", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + } + ], + "tx_hash": "0x7753ec5286e2521a8430a9686052d7e065b3b561167123e6975f0ae1a2d312d0", + "block_number": 9101909, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "LynxRitualToken": { + "address": "0x064Be2a9740e565729BC0d47bC616c5bb8Cc87B9", + "abi": [ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_totalSupplyOfTokens", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ERC20InsufficientAllowance", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "allowance", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "needed", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ERC20InsufficientBalance", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "balance", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "needed", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ERC20InvalidApprover", + "inputs": [ + { + "name": "approver", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC20InvalidReceiver", + "inputs": [ + { + "name": "receiver", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC20InvalidSender", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC20InvalidSpender", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "spender", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "to", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "allowance", + "stateMutability": "view", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "approve", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "balanceOf", + "stateMutability": "view", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "decimals", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ] + }, + { + "type": "function", + "name": "name", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ] + }, + { + "type": "function", + "name": "symbol", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ] + }, + { + "type": "function", + "name": "totalSupply", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "transfer", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "transferFrom", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + } + ], + "tx_hash": "0x3fa59f2ab18ce9017f5760b31bd7b132b387f1dd6e8c5d3fb8e58a553411ed69", + "block_number": 5198656, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "MockPolygonChild": { + "address": "0x4FD23FAB4A09F85872bf240ABBd484cb4F9a5F79", + "abi": [ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [] + }, + { + "type": "error", + "name": "OwnableInvalidOwner", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "OwnableUnauthorizedAccount", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "event", + "name": "AuthorizationUpdated", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "amount", + "type": "uint96", + "internalType": "uint96", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorConfirmed", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "operator", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorUpdated", + "inputs": [ + { + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "operator", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "newOwner", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "childApplication", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ITACoRootToChild" + } + ] + }, + { + "type": "function", + "name": "confirmOperatorAddress", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "renounceOwnership", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "setChildApplication", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_childApplication", + "type": "address", + "internalType": "contract ITACoRootToChild" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "transferOwnership", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "updateAuthorization", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "_amount", + "type": "uint96", + "internalType": "uint96" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "updateOperator", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + } + ], + "tx_hash": "0xee32aa290b2ea1a03cc01412e9089897ec92cabd3561664c26bf2c1e5e9247d4", + "block_number": 5198636, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "OpenAccessAuthorizer": { + "address": "0x33270a0B88d0Ffb6B0b4FBA119ca6a7263DeF675", + "abi": [ + { + "type": "function", + "name": "isAuthorized", + "stateMutability": "pure", + "inputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + } + ], + "tx_hash": "0x8bbd39406559c99b6dc35df89c604c645b0996aac2908ce9e75f2d38367d294a", + "block_number": 5196868, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "ReimbursementPool": { + "address": "0x53Fe19093Be1AC0136d33D91e01aBa4aa381B87B", + "abi": [ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_staticGas", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_maxGasPrice", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "OwnableInvalidOwner", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "OwnableUnauthorizedAccount", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ReentrancyGuardReentrantCall", + "inputs": [] + }, + { + "type": "event", + "name": "AuthorizedContract", + "inputs": [ + { + "name": "thirdPartyContract", + "type": "address", + "internalType": "address", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "FundsWithdrawn", + "inputs": [ + { + "name": "withdrawnAmount", + "type": "uint256", + "internalType": "uint256", + "indexed": false + }, + { + "name": "receiver", + "type": "address", + "internalType": "address", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MaxGasPriceUpdated", + "inputs": [ + { + "name": "newMaxGasPrice", + "type": "uint256", + "internalType": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "newOwner", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SendingEtherFailed", + "inputs": [ + { + "name": "refundAmount", + "type": "uint256", + "internalType": "uint256", + "indexed": false + }, + { + "name": "receiver", + "type": "address", + "internalType": "address", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StaticGasUpdated", + "inputs": [ + { + "name": "newStaticGas", + "type": "uint256", + "internalType": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UnauthorizedContract", + "inputs": [ + { + "name": "thirdPartyContract", + "type": "address", + "internalType": "address", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "authorize", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_contract", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "isAuthorized", + "stateMutability": "view", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ] + }, + { + "type": "function", + "name": "maxGasPrice", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "refund", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "gasSpent", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "receiver", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "renounceOwnership", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "setMaxGasPrice", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_maxGasPrice", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "setStaticGas", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_staticGas", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "staticGas", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "transferOwnership", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "unauthorize", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_contract", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "withdraw", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "receiver", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "withdrawAll", + "stateMutability": "nonpayable", "inputs": [ { - "name": "refundAmount", - "type": "uint256", - "internalType": "uint256", - "indexed": false - }, - { "name": "receiver", "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "receive", + "stateMutability": "payable" + } + ], + "tx_hash": "0x1883c6b872c95c7a8bd7bafd72f475eb90558fcccde6a68d6483433b779bc82b", + "block_number": 11321430, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "StandardSubscription": { + "address": "0x3E851204c29742b713d5C243093E98691591e654", + "abi": [ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_coordinator", + "type": "address", + "internalType": "contract Coordinator" + }, + { + "name": "_accessController", + "type": "address", + "internalType": "contract GlobalAllowList" + }, + { + "name": "_feeToken", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "_adopter", + "type": "address", + "internalType": "address" + }, + { + "name": "_initialBaseFeeRate", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_baseFeeRateIncrease", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_encryptorFeeRate", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_maxNodes", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_subscriptionPeriodDuration", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "_yellowPeriodDuration", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "_redPeriodDuration", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "type": "error", + "name": "AddressEmptyCode", + "inputs": [ + { + "name": "target", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "AddressInsufficientBalance", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "FailedInnerCall", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidInitialization", + "inputs": [] + }, + { + "type": "error", + "name": "NotInitializing", + "inputs": [] + }, + { + "type": "error", + "name": "OwnableInvalidOwner", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "OwnableUnauthorizedAccount", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "SafeERC20FailedOperation", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "event", + "name": "EncryptorSlotsPaid", + "inputs": [ + { + "name": "sponsor", + "type": "address", "internalType": "address", + "indexed": true + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256", + "indexed": false + }, + { + "name": "encryptorSlots", + "type": "uint128", + "internalType": "uint128", + "indexed": false + }, + { + "name": "endOfCurrentPeriod", + "type": "uint32", + "internalType": "uint32", "indexed": false } ], @@ -5936,12 +8421,12 @@ }, { "type": "event", - "name": "StaticGasUpdated", + "name": "Initialized", "inputs": [ { - "name": "newStaticGas", - "type": "uint256", - "internalType": "uint256", + "name": "version", + "type": "uint64", + "internalType": "uint64", "indexed": false } ], @@ -5949,52 +8434,89 @@ }, { "type": "event", - "name": "UnauthorizedContract", + "name": "OwnershipTransferred", "inputs": [ { - "name": "thirdPartyContract", + "name": "previousOwner", "type": "address", "internalType": "address", - "indexed": false + "indexed": true + }, + { + "name": "newOwner", + "type": "address", + "internalType": "address", + "indexed": true } ], "anonymous": false }, { - "type": "function", - "name": "authorize", - "stateMutability": "nonpayable", + "type": "event", + "name": "SubscriptionPaid", "inputs": [ { - "name": "_contract", + "name": "subscriber", "type": "address", - "internalType": "address" + "internalType": "address", + "indexed": true + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256", + "indexed": false + }, + { + "name": "encryptorSlots", + "type": "uint128", + "internalType": "uint128", + "indexed": false + }, + { + "name": "endOfSubscription", + "type": "uint32", + "internalType": "uint32", + "indexed": false } ], - "outputs": [] + "anonymous": false }, { - "type": "function", - "name": "isAuthorized", - "stateMutability": "view", + "type": "event", + "name": "WithdrawalToTreasury", "inputs": [ { - "name": "", + "name": "treasury", "type": "address", - "internalType": "address" + "internalType": "address", + "indexed": true + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256", + "indexed": false } ], + "anonymous": false + }, + { + "type": "function", + "name": "INACTIVE_RITUAL_ID", + "stateMutability": "view", + "inputs": [], "outputs": [ { "name": "", - "type": "bool", - "internalType": "bool" + "type": "uint32", + "internalType": "uint32" } ] }, { "type": "function", - "name": "maxGasPrice", + "name": "INCREASE_BASE", "stateMutability": "view", "inputs": [], "outputs": [ @@ -6007,7 +8529,33 @@ }, { "type": "function", - "name": "owner", + "name": "accessController", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract GlobalAllowList" + } + ] + }, + { + "type": "function", + "name": "activeRitualId", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "type": "function", + "name": "adopter", "stateMutability": "view", "inputs": [], "outputs": [ @@ -6020,58 +8568,125 @@ }, { "type": "function", - "name": "refund", - "stateMutability": "nonpayable", - "inputs": [ + "name": "baseFeeRateIncrease", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "gasSpent", + "name": "", "type": "uint256", "internalType": "uint256" - }, + } + ] + }, + { + "type": "function", + "name": "baseFees", + "stateMutability": "view", + "inputs": [ { - "name": "receiver", - "type": "address", - "internalType": "address" + "name": "periodNumber", + "type": "uint256", + "internalType": "uint256" } ], - "outputs": [] + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] }, { "type": "function", - "name": "renounceOwnership", - "stateMutability": "nonpayable", + "name": "baseFees", + "stateMutability": "view", "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "beforeIsAuthorized", + "stateMutability": "view", + "inputs": [ + { + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + } + ], "outputs": [] }, { "type": "function", - "name": "setMaxGasPrice", + "name": "beforeSetAuthorization", "stateMutability": "nonpayable", "inputs": [ { - "name": "_maxGasPrice", - "type": "uint256", - "internalType": "uint256" + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "addresses", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "value", + "type": "bool", + "internalType": "bool" } ], "outputs": [] }, { "type": "function", - "name": "setStaticGas", - "stateMutability": "nonpayable", + "name": "billingInfo", + "stateMutability": "view", "inputs": [ { - "name": "_staticGas", + "name": "periodNumber", "type": "uint256", "internalType": "uint256" } - ], - "outputs": [] + ], + "outputs": [ + { + "name": "paid", + "type": "bool", + "internalType": "bool" + }, + { + "name": "encryptorSlots", + "type": "uint128", + "internalType": "uint128" + } + ] + }, + { + "type": "function", + "name": "coordinator", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract Coordinator" + } + ] }, { "type": "function", - "name": "staticGas", + "name": "encryptorFeeRate", "stateMutability": "view", "inputs": [], "outputs": [ @@ -6084,320 +8699,242 @@ }, { "type": "function", - "name": "transferOwnership", - "stateMutability": "nonpayable", + "name": "encryptorFees", + "stateMutability": "view", "inputs": [ { - "name": "newOwner", - "type": "address", - "internalType": "address" + "name": "encryptorSlots", + "type": "uint128", + "internalType": "uint128" + }, + { + "name": "duration", + "type": "uint32", + "internalType": "uint32" } ], - "outputs": [] + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] }, { "type": "function", - "name": "unauthorize", - "stateMutability": "nonpayable", - "inputs": [ + "name": "feeToken", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "_contract", + "name": "", "type": "address", - "internalType": "address" + "internalType": "contract IERC20" } - ], - "outputs": [] + ] }, { "type": "function", - "name": "withdraw", - "stateMutability": "nonpayable", - "inputs": [ + "name": "getCurrentPeriodNumber", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "amount", + "name": "", "type": "uint256", "internalType": "uint256" - }, - { - "name": "receiver", - "type": "address", - "internalType": "address" } - ], - "outputs": [] + ] }, { "type": "function", - "name": "withdrawAll", - "stateMutability": "nonpayable", - "inputs": [ + "name": "getEndOfSubscription", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "receiver", - "type": "address", - "internalType": "address" + "name": "endOfSubscription", + "type": "uint32", + "internalType": "uint32" } - ], - "outputs": [] + ] }, { - "type": "receive", - "stateMutability": "payable" - } - ], - "tx_hash": "0x1883c6b872c95c7a8bd7bafd72f475eb90558fcccde6a68d6483433b779bc82b", - "block_number": 11321430, - "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" - }, - "StandardSubscription": { - "address": "0x3E851204c29742b713d5C243093E98691591e654", - "abi": [ - { - "type": "constructor", - "stateMutability": "nonpayable", + "type": "function", + "name": "getPaidEncryptorSlots", + "stateMutability": "view", "inputs": [ { - "name": "_coordinator", - "type": "address", - "internalType": "contract Coordinator" - }, - { - "name": "_accessController", - "type": "address", - "internalType": "contract GlobalAllowList" - }, - { - "name": "_feeToken", - "type": "address", - "internalType": "contract IERC20" - }, - { - "name": "_adopter", - "type": "address", - "internalType": "address" - }, - { - "name": "_initialBaseFeeRate", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_baseFeeRateIncrease", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_encryptorFeeRate", + "name": "periodNumber", "type": "uint256", "internalType": "uint256" - }, + } + ], + "outputs": [ { - "name": "_maxNodes", + "name": "", "type": "uint256", "internalType": "uint256" - }, - { - "name": "_subscriptionPeriodDuration", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "_yellowPeriodDuration", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "_redPeriodDuration", - "type": "uint32", - "internalType": "uint32" } ] }, { - "type": "error", - "name": "AddressEmptyCode", - "inputs": [ + "type": "function", + "name": "initialBaseFeeRate", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "target", - "type": "address", - "internalType": "address" + "name": "", + "type": "uint256", + "internalType": "uint256" } ] }, { - "type": "error", - "name": "AddressInsufficientBalance", + "type": "function", + "name": "initialize", + "stateMutability": "nonpayable", "inputs": [ { - "name": "account", + "name": "_treasury", "type": "address", "internalType": "address" } - ] - }, - { - "type": "error", - "name": "FailedInnerCall", - "inputs": [] - }, - { - "type": "error", - "name": "InvalidInitialization", - "inputs": [] - }, - { - "type": "error", - "name": "NotInitializing", - "inputs": [] + ], + "outputs": [] }, { - "type": "error", - "name": "OwnableInvalidOwner", + "type": "function", + "name": "isPeriodPaid", + "stateMutability": "view", "inputs": [ { - "name": "owner", - "type": "address", - "internalType": "address" + "name": "periodNumber", + "type": "uint256", + "internalType": "uint256" } - ] - }, - { - "type": "error", - "name": "OwnableUnauthorizedAccount", - "inputs": [ + ], + "outputs": [ { - "name": "account", - "type": "address", - "internalType": "address" + "name": "", + "type": "bool", + "internalType": "bool" } ] }, { - "type": "error", - "name": "SafeERC20FailedOperation", - "inputs": [ + "type": "function", + "name": "maxNodes", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "token", - "type": "address", - "internalType": "address" + "name": "", + "type": "uint256", + "internalType": "uint256" } ] }, { - "type": "event", - "name": "EncryptorSlotsPaid", - "inputs": [ - { - "name": "sponsor", - "type": "address", - "internalType": "address", - "indexed": true - }, - { - "name": "amount", - "type": "uint256", - "internalType": "uint256", - "indexed": false - }, - { - "name": "encryptorSlots", - "type": "uint128", - "internalType": "uint128", - "indexed": false - }, + "type": "function", + "name": "owner", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "endOfCurrentPeriod", - "type": "uint32", - "internalType": "uint32", - "indexed": false + "name": "", + "type": "address", + "internalType": "address" } - ], - "anonymous": false + ] }, { - "type": "event", - "name": "Initialized", + "type": "function", + "name": "payForEncryptorSlots", + "stateMutability": "nonpayable", "inputs": [ { - "name": "version", - "type": "uint64", - "internalType": "uint64", - "indexed": false + "name": "additionalEncryptorSlots", + "type": "uint128", + "internalType": "uint128" } ], - "anonymous": false + "outputs": [] }, { - "type": "event", - "name": "OwnershipTransferred", + "type": "function", + "name": "payForSubscription", + "stateMutability": "nonpayable", "inputs": [ { - "name": "previousOwner", - "type": "address", - "internalType": "address", - "indexed": true - }, - { - "name": "newOwner", - "type": "address", - "internalType": "address", - "indexed": true + "name": "encryptorSlots", + "type": "uint128", + "internalType": "uint128" } ], - "anonymous": false + "outputs": [] }, { - "type": "event", - "name": "SubscriptionPaid", + "type": "function", + "name": "processRitualExtending", + "stateMutability": "view", "inputs": [ { - "name": "subscriber", + "name": "", "type": "address", - "internalType": "address", - "indexed": true + "internalType": "address" }, { - "name": "amount", - "type": "uint256", - "internalType": "uint256", - "indexed": false + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" }, { - "name": "encryptorSlots", - "type": "uint128", - "internalType": "uint128", - "indexed": false + "name": "", + "type": "uint256", + "internalType": "uint256" }, { - "name": "endOfSubscription", + "name": "", "type": "uint32", - "internalType": "uint32", - "indexed": false + "internalType": "uint32" } ], - "anonymous": false + "outputs": [] }, { - "type": "event", - "name": "WithdrawalToTreasury", + "type": "function", + "name": "processRitualPayment", + "stateMutability": "nonpayable", "inputs": [ { - "name": "treasury", + "name": "initiator", "type": "address", - "internalType": "address", - "indexed": true + "internalType": "address" }, { - "name": "amount", + "name": "ritualId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "numberOfProviders", "type": "uint256", - "internalType": "uint256", - "indexed": false + "internalType": "uint256" + }, + { + "name": "duration", + "type": "uint32", + "internalType": "uint32" } ], - "anonymous": false + "outputs": [] }, { "type": "function", - "name": "INACTIVE_RITUAL_ID", + "name": "redPeriodDuration", "stateMutability": "view", "inputs": [], "outputs": [ @@ -6410,227 +8947,359 @@ }, { "type": "function", - "name": "INCREASE_BASE", + "name": "renounceOwnership", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "startOfSubscription", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "uint256", - "internalType": "uint256" + "type": "uint32", + "internalType": "uint32" } ] }, { "type": "function", - "name": "accessController", + "name": "subscriptionPeriodDuration", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "address", - "internalType": "contract GlobalAllowList" + "type": "uint32", + "internalType": "uint32" } ] }, { "type": "function", - "name": "activeRitualId", + "name": "transferOwnership", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "usedEncryptorSlots", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "uint32", - "internalType": "uint32" + "type": "uint256", + "internalType": "uint256" } ] }, { "type": "function", - "name": "adopter", + "name": "withdrawToTreasury", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [] + }, + { + "type": "function", + "name": "yellowPeriodDuration", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "tx_hash": "0x709f8cb91d3489fed89b0006a162e226a12095e12c5b737d1ec639109cac4a26", + "block_number": 9101924, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "SubscriptionManager": { + "address": "0x811389558a2C0B65ff56652d5E5bBF5DbC9A4358", + "abi": [ + { + "type": "error", + "name": "AccessControlBadConfirmation", + "inputs": [] + }, + { + "type": "error", + "name": "AccessControlUnauthorizedAccount", + "inputs": [ + { + "name": "account", "type": "address", "internalType": "address" + }, + { + "name": "neededRole", + "type": "bytes32", + "internalType": "bytes32" } ] }, { - "type": "function", - "name": "baseFeeRateIncrease", - "stateMutability": "view", - "inputs": [], - "outputs": [ + "type": "error", + "name": "InvalidInitialization", + "inputs": [] + }, + { + "type": "error", + "name": "NotInitializing", + "inputs": [] + }, + { + "type": "event", + "name": "FeeRateUpdated", + "inputs": [ + { + "name": "oldFeeRate", + "type": "uint256", + "internalType": "uint256", + "indexed": false + }, + { + "name": "newFeeRate", + "type": "uint256", + "internalType": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint64", + "internalType": "uint64", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PolicyCreated", + "inputs": [ + { + "name": "policyId", + "type": "bytes16", + "internalType": "bytes16", + "indexed": true + }, + { + "name": "sponsor", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "owner", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "size", + "type": "uint16", + "internalType": "uint16", + "indexed": false + }, { - "name": "", + "name": "startTimestamp", + "type": "uint32", + "internalType": "uint32", + "indexed": false + }, + { + "name": "endTimestamp", + "type": "uint32", + "internalType": "uint32", + "indexed": false + }, + { + "name": "cost", "type": "uint256", - "internalType": "uint256" + "internalType": "uint256", + "indexed": false } - ] + ], + "anonymous": false }, { - "type": "function", - "name": "baseFees", - "stateMutability": "view", + "type": "event", + "name": "RoleAdminChanged", "inputs": [ { - "name": "periodNumber", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [ + "name": "role", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true + }, { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "function", - "name": "baseFees", - "stateMutability": "view", - "inputs": [], - "outputs": [ + "name": "previousAdminRole", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true + }, { - "name": "", - "type": "uint256", - "internalType": "uint256" + "name": "newAdminRole", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true } - ] + ], + "anonymous": false }, { - "type": "function", - "name": "beforeIsAuthorized", - "stateMutability": "view", + "type": "event", + "name": "RoleGranted", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" + "name": "role", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true + }, + { + "name": "account", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "sender", + "type": "address", + "internalType": "address", + "indexed": true } ], - "outputs": [] + "anonymous": false }, { - "type": "function", - "name": "beforeSetAuthorization", - "stateMutability": "nonpayable", + "type": "event", + "name": "RoleRevoked", "inputs": [ { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" + "name": "role", + "type": "bytes32", + "internalType": "bytes32", + "indexed": true }, { - "name": "addresses", - "type": "address[]", - "internalType": "address[]" + "name": "account", + "type": "address", + "internalType": "address", + "indexed": true }, { - "name": "value", - "type": "bool", - "internalType": "bool" + "name": "sender", + "type": "address", + "internalType": "address", + "indexed": true } ], - "outputs": [] + "anonymous": false }, { "type": "function", - "name": "billingInfo", + "name": "DEFAULT_ADMIN_ROLE", "stateMutability": "view", - "inputs": [ - { - "name": "periodNumber", - "type": "uint256", - "internalType": "uint256" - } - ], + "inputs": [], "outputs": [ { - "name": "paid", - "type": "bool", - "internalType": "bool" - }, - { - "name": "encryptorSlots", - "type": "uint128", - "internalType": "uint128" + "name": "", + "type": "bytes32", + "internalType": "bytes32" } ] }, { "type": "function", - "name": "coordinator", + "name": "SET_RATE_ROLE", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "address", - "internalType": "contract Coordinator" + "type": "bytes32", + "internalType": "bytes32" } ] }, { "type": "function", - "name": "encryptorFeeRate", + "name": "WITHDRAW_ROLE", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "uint256", - "internalType": "uint256" + "type": "bytes32", + "internalType": "bytes32" } ] }, { "type": "function", - "name": "encryptorFees", - "stateMutability": "view", + "name": "createPolicy", + "stateMutability": "payable", "inputs": [ { - "name": "encryptorSlots", - "type": "uint128", - "internalType": "uint128" + "name": "_policyId", + "type": "bytes16", + "internalType": "bytes16" }, { - "name": "duration", + "name": "_policyOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "_size", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "_startTimestamp", "type": "uint32", "internalType": "uint32" - } - ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "function", - "name": "feeToken", - "stateMutability": "view", - "inputs": [], - "outputs": [ + }, { - "name": "", - "type": "address", - "internalType": "contract IERC20" + "name": "_endTimestamp", + "type": "uint32", + "internalType": "uint32" } - ] + ], + "outputs": [] }, { "type": "function", - "name": "getCurrentPeriodNumber", + "name": "feeRate", "stateMutability": "view", "inputs": [], "outputs": [ @@ -6643,26 +9312,69 @@ }, { "type": "function", - "name": "getEndOfSubscription", + "name": "getPolicy", "stateMutability": "view", - "inputs": [], + "inputs": [ + { + "name": "_policyID", + "type": "bytes16", + "internalType": "bytes16" + } + ], "outputs": [ { - "name": "endOfSubscription", - "type": "uint32", - "internalType": "uint32" + "name": "", + "type": "tuple", + "components": [ + { + "name": "sponsor", + "type": "address", + "internalType": "address payable" + }, + { + "name": "startTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "endTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "size", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ], + "internalType": "struct SubscriptionManager.Policy" } ] }, { "type": "function", - "name": "getPaidEncryptorSlots", + "name": "getPolicyCost", "stateMutability": "view", "inputs": [ { - "name": "periodNumber", - "type": "uint256", - "internalType": "uint256" + "name": "_size", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "_startTimestamp", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "_endTimestamp", + "type": "uint32", + "internalType": "uint32" } ], "outputs": [ @@ -6675,24 +9387,35 @@ }, { "type": "function", - "name": "initialBaseFeeRate", + "name": "getRoleAdmin", "stateMutability": "view", - "inputs": [], + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + } + ], "outputs": [ { "name": "", - "type": "uint256", - "internalType": "uint256" + "type": "bytes32", + "internalType": "bytes32" } ] }, { "type": "function", - "name": "initialize", + "name": "grantRole", "stateMutability": "nonpayable", "inputs": [ { - "name": "_treasury", + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", "type": "address", "internalType": "address" } @@ -6701,13 +9424,18 @@ }, { "type": "function", - "name": "isPeriodPaid", + "name": "hasRole", "stateMutability": "view", "inputs": [ { - "name": "periodNumber", - "type": "uint256", - "internalType": "uint256" + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" } ], "outputs": [ @@ -6720,236 +9448,138 @@ }, { "type": "function", - "name": "maxNodes", - "stateMutability": "view", - "inputs": [], - "outputs": [ + "name": "initialize", + "stateMutability": "nonpayable", + "inputs": [ { - "name": "", + "name": "_feeRate", "type": "uint256", "internalType": "uint256" } - ] + ], + "outputs": [] }, { "type": "function", - "name": "owner", + "name": "isPolicyActive", "stateMutability": "view", - "inputs": [], + "inputs": [ + { + "name": "_policyID", + "type": "bytes16", + "internalType": "bytes16" + } + ], "outputs": [ { "name": "", - "type": "address", - "internalType": "address" + "type": "bool", + "internalType": "bool" } ] }, { "type": "function", - "name": "payForEncryptorSlots", + "name": "renounceRole", "stateMutability": "nonpayable", "inputs": [ { - "name": "additionalEncryptorSlots", - "type": "uint128", - "internalType": "uint128" + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "callerConfirmation", + "type": "address", + "internalType": "address" } ], "outputs": [] }, { "type": "function", - "name": "payForSubscription", + "name": "revokeRole", "stateMutability": "nonpayable", "inputs": [ { - "name": "encryptorSlots", - "type": "uint128", - "internalType": "uint128" - } - ], - "outputs": [] - }, - { - "type": "function", - "name": "processRitualExtending", - "stateMutability": "view", - "inputs": [ + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, { - "name": "", + "name": "account", "type": "address", "internalType": "address" - }, - { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "", - "type": "uint32", - "internalType": "uint32" } ], "outputs": [] }, { "type": "function", - "name": "processRitualPayment", + "name": "setFeeRate", "stateMutability": "nonpayable", "inputs": [ { - "name": "initiator", - "type": "address", - "internalType": "address" - }, - { - "name": "ritualId", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "numberOfProviders", + "name": "_ratePerSecond", "type": "uint256", "internalType": "uint256" - }, - { - "name": "duration", - "type": "uint32", - "internalType": "uint32" } ], "outputs": [] }, { "type": "function", - "name": "redPeriodDuration", - "stateMutability": "view", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint32", - "internalType": "uint32" - } - ] - }, - { - "type": "function", - "name": "renounceOwnership", - "stateMutability": "nonpayable", - "inputs": [], - "outputs": [] - }, - { - "type": "function", - "name": "startOfSubscription", - "stateMutability": "view", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint32", - "internalType": "uint32" - } - ] - }, - { - "type": "function", - "name": "subscriptionPeriodDuration", + "name": "supportsInterface", "stateMutability": "view", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint32", - "internalType": "uint32" - } - ] - }, - { - "type": "function", - "name": "transferOwnership", - "stateMutability": "nonpayable", "inputs": [ { - "name": "newOwner", - "type": "address", - "internalType": "address" + "name": "interfaceId", + "type": "bytes4", + "internalType": "bytes4" } ], - "outputs": [] - }, - { - "type": "function", - "name": "usedEncryptorSlots", - "stateMutability": "view", - "inputs": [], "outputs": [ { "name": "", - "type": "uint256", - "internalType": "uint256" + "type": "bool", + "internalType": "bool" } ] }, { "type": "function", - "name": "withdrawToTreasury", + "name": "sweep", "stateMutability": "nonpayable", "inputs": [ { - "name": "amount", - "type": "uint256", - "internalType": "uint256" + "name": "recipient", + "type": "address", + "internalType": "address payable" } ], "outputs": [] - }, - { - "type": "function", - "name": "yellowPeriodDuration", - "stateMutability": "view", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint32", - "internalType": "uint32" - } - ] } ], - "tx_hash": "0x709f8cb91d3489fed89b0006a162e226a12095e12c5b737d1ec639109cac4a26", - "block_number": 9101924, + "tx_hash": "0x9a02db05c96318d8b0abfd5030c98cd013d670f46012ac1fbabf1564d40d2b6c", + "block_number": 5347313, "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" }, - "SubscriptionManager": { - "address": "0x811389558a2C0B65ff56652d5E5bBF5DbC9A4358", + "TACoChildApplication": { + "address": "0x42F30AEc1A36995eEFaf9536Eb62BD751F982D32", "abi": [ { - "type": "error", - "name": "AccessControlBadConfirmation", - "inputs": [] - }, - { - "type": "error", - "name": "AccessControlUnauthorizedAccount", + "type": "constructor", + "stateMutability": "nonpayable", "inputs": [ { - "name": "account", + "name": "_rootApplication", "type": "address", - "internalType": "address" + "internalType": "contract ITACoChildToRoot" }, { - "name": "neededRole", - "type": "bytes32", - "internalType": "bytes32" + "name": "_minimumAuthorization", + "type": "uint96", + "internalType": "uint96" } ] }, @@ -6965,18 +9595,30 @@ }, { "type": "event", - "name": "FeeRateUpdated", + "name": "AuthorizationUpdated", "inputs": [ { - "name": "oldFeeRate", - "type": "uint256", - "internalType": "uint256", + "name": "stakingProvider", + "type": "address", + "internalType": "address", + "indexed": true + }, + { + "name": "authorized", + "type": "uint96", + "internalType": "uint96", + "indexed": false + }, + { + "name": "deauthorizing", + "type": "uint96", + "internalType": "uint96", "indexed": false }, { - "name": "newFeeRate", - "type": "uint256", - "internalType": "uint256", + "name": "endDeauthorization", + "type": "uint64", + "internalType": "uint64", "indexed": false } ], @@ -6997,411 +9639,461 @@ }, { "type": "event", - "name": "PolicyCreated", + "name": "OperatorConfirmed", "inputs": [ { - "name": "policyId", - "type": "bytes16", - "internalType": "bytes16", + "name": "stakingProvider", + "type": "address", + "internalType": "address", "indexed": true }, { - "name": "sponsor", + "name": "operator", "type": "address", "internalType": "address", "indexed": true - }, + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorUpdated", + "inputs": [ { - "name": "owner", + "name": "stakingProvider", "type": "address", "internalType": "address", "indexed": true }, { - "name": "size", - "type": "uint16", - "internalType": "uint16", - "indexed": false - }, + "name": "operator", + "type": "address", + "internalType": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "function", + "name": "authorizedStake", + "stateMutability": "view", + "inputs": [ { - "name": "startTimestamp", - "type": "uint32", - "internalType": "uint32", - "indexed": false - }, + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ { - "name": "endTimestamp", - "type": "uint32", - "internalType": "uint32", - "indexed": false - }, + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "type": "function", + "name": "confirmOperatorAddress", + "stateMutability": "nonpayable", + "inputs": [ { - "name": "cost", - "type": "uint256", - "internalType": "uint256", - "indexed": false + "name": "_operator", + "type": "address", + "internalType": "address" } ], - "anonymous": false + "outputs": [] }, { - "type": "event", - "name": "RoleAdminChanged", - "inputs": [ + "type": "function", + "name": "coordinator", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "role", - "type": "bytes32", - "internalType": "bytes32", - "indexed": true - }, + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "function", + "name": "eligibleStake", + "stateMutability": "view", + "inputs": [ { - "name": "previousAdminRole", - "type": "bytes32", - "internalType": "bytes32", - "indexed": true + "name": "_stakingProvider", + "type": "address", + "internalType": "address" }, { - "name": "newAdminRole", - "type": "bytes32", - "internalType": "bytes32", - "indexed": true + "name": "_endDate", + "type": "uint256", + "internalType": "uint256" } ], - "anonymous": false + "outputs": [ + { + "name": "", + "type": "uint96", + "internalType": "uint96" + } + ] }, { - "type": "event", - "name": "RoleGranted", + "type": "function", + "name": "getActiveStakingProviders", + "stateMutability": "view", "inputs": [ { - "name": "role", - "type": "bytes32", - "internalType": "bytes32", - "indexed": true + "name": "_startIndex", + "type": "uint256", + "internalType": "uint256" }, { - "name": "account", - "type": "address", - "internalType": "address", - "indexed": true + "name": "_maxStakingProviders", + "type": "uint256", + "internalType": "uint256" }, { - "name": "sender", - "type": "address", - "internalType": "address", - "indexed": true + "name": "_cohortDuration", + "type": "uint32", + "internalType": "uint32" } ], - "anonymous": false + "outputs": [ + { + "name": "allAuthorizedTokens", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "activeStakingProviders", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ] }, { - "type": "event", - "name": "RoleRevoked", + "type": "function", + "name": "getActiveStakingProviders", + "stateMutability": "view", "inputs": [ { - "name": "role", - "type": "bytes32", - "internalType": "bytes32", - "indexed": true + "name": "_startIndex", + "type": "uint256", + "internalType": "uint256" }, { - "name": "account", - "type": "address", - "internalType": "address", - "indexed": true + "name": "_maxStakingProviders", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "allAuthorizedTokens", + "type": "uint96", + "internalType": "uint96" }, { - "name": "sender", + "name": "activeStakingProviders", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ] + }, + { + "type": "function", + "name": "getStakingProvidersLength", + "stateMutability": "view", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "name": "initialize", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "_coordinator", "type": "address", - "internalType": "address", - "indexed": true + "internalType": "address" } ], - "anonymous": false + "outputs": [] }, { "type": "function", - "name": "DEFAULT_ADMIN_ROLE", + "name": "minimumAuthorization", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "bytes32", - "internalType": "bytes32" + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "type": "function", + "name": "operatorToStakingProvider", + "stateMutability": "view", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" } ] }, { "type": "function", - "name": "SET_RATE_ROLE", + "name": "pendingAuthorizationDecrease", "stateMutability": "view", - "inputs": [], + "inputs": [ + { + "name": "_stakingProvider", + "type": "address", + "internalType": "address" + } + ], "outputs": [ { "name": "", - "type": "bytes32", - "internalType": "bytes32" + "type": "uint96", + "internalType": "uint96" } ] }, { "type": "function", - "name": "WITHDRAW_ROLE", + "name": "rootApplication", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "bytes32", - "internalType": "bytes32" + "type": "address", + "internalType": "contract ITACoChildToRoot" } ] }, { "type": "function", - "name": "createPolicy", - "stateMutability": "payable", + "name": "stakingProviderInfo", + "stateMutability": "view", "inputs": [ { - "name": "_policyId", - "type": "bytes16", - "internalType": "bytes16" - }, + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ { - "name": "_policyOwner", + "name": "operator", "type": "address", "internalType": "address" }, { - "name": "_size", - "type": "uint16", - "internalType": "uint16" + "name": "authorized", + "type": "uint96", + "internalType": "uint96" }, { - "name": "_startTimestamp", - "type": "uint32", - "internalType": "uint32" + "name": "operatorConfirmed", + "type": "bool", + "internalType": "bool" }, { - "name": "_endTimestamp", - "type": "uint32", - "internalType": "uint32" - } - ], - "outputs": [] - }, - { - "type": "function", - "name": "feeRate", - "stateMutability": "view", - "inputs": [], - "outputs": [ + "name": "index", + "type": "uint248", + "internalType": "uint248" + }, { - "name": "", - "type": "uint256", - "internalType": "uint256" + "name": "deauthorizing", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "endDeauthorization", + "type": "uint64", + "internalType": "uint64" } ] }, { "type": "function", - "name": "getPolicy", + "name": "stakingProviders", "stateMutability": "view", "inputs": [ { - "name": "_policyID", - "type": "bytes16", - "internalType": "bytes16" + "name": "", + "type": "uint256", + "internalType": "uint256" } ], "outputs": [ { "name": "", - "type": "tuple", - "components": [ - { - "name": "sponsor", - "type": "address", - "internalType": "address payable" - }, - { - "name": "startTimestamp", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "endTimestamp", - "type": "uint32", - "internalType": "uint32" - }, - { - "name": "size", - "type": "uint16", - "internalType": "uint16" - }, - { - "name": "owner", - "type": "address", - "internalType": "address" - } - ], - "internalType": "struct SubscriptionManager.Policy" + "type": "address", + "internalType": "address" } ] }, { "type": "function", - "name": "getPolicyCost", - "stateMutability": "view", + "name": "updateAuthorization", + "stateMutability": "nonpayable", "inputs": [ { - "name": "_size", - "type": "uint16", - "internalType": "uint16" - }, - { - "name": "_startTimestamp", - "type": "uint32", - "internalType": "uint32" + "name": "stakingProvider", + "type": "address", + "internalType": "address" }, { - "name": "_endTimestamp", - "type": "uint32", - "internalType": "uint32" + "name": "authorized", + "type": "uint96", + "internalType": "uint96" } ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ] + "outputs": [] }, { "type": "function", - "name": "getRoleAdmin", - "stateMutability": "view", + "name": "updateAuthorization", + "stateMutability": "nonpayable", "inputs": [ { - "name": "role", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "outputs": [ + "name": "stakingProvider", + "type": "address", + "internalType": "address" + }, { - "name": "", - "type": "bytes32", - "internalType": "bytes32" + "name": "authorized", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "deauthorizing", + "type": "uint96", + "internalType": "uint96" + }, + { + "name": "endDeauthorization", + "type": "uint64", + "internalType": "uint64" } - ] + ], + "outputs": [] }, { "type": "function", - "name": "grantRole", + "name": "updateOperator", "stateMutability": "nonpayable", "inputs": [ { - "name": "role", - "type": "bytes32", - "internalType": "bytes32" + "name": "stakingProvider", + "type": "address", + "internalType": "address" }, { - "name": "account", + "name": "operator", "type": "address", "internalType": "address" } ], "outputs": [] - }, + } + ], + "tx_hash": "0x4a1de1566b64df4f11a782939b4b694cb193df9bb06b307835a87e2420f37e81", + "block_number": 5198646, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + } + }, + "84532": { + "OpL2Receiver": { + "address": "0x9BA321B30173b433c68767961D6e53e420AEa382", + "abi": [ { - "type": "function", - "name": "hasRole", - "stateMutability": "view", + "type": "constructor", + "stateMutability": "nonpayable", "inputs": [ { - "name": "role", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "account", + "name": "_messenger", "type": "address", "internalType": "address" } - ], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } ] }, { - "type": "function", - "name": "initialize", - "stateMutability": "nonpayable", - "inputs": [ - { - "name": "_feeRate", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [] + "type": "error", + "name": "InvalidInitialization", + "inputs": [] }, { - "type": "function", - "name": "isPolicyActive", - "stateMutability": "view", + "type": "error", + "name": "NotInitializing", + "inputs": [] + }, + { + "type": "event", + "name": "Executed", "inputs": [ { - "name": "_policyID", - "type": "bytes16", - "internalType": "bytes16" - } - ], - "outputs": [ + "name": "target", + "type": "address", + "internalType": "address", + "indexed": false + }, { - "name": "", - "type": "bool", - "internalType": "bool" + "name": "result", + "type": "bytes", + "internalType": "bytes", + "indexed": false } - ] + ], + "anonymous": false }, { - "type": "function", - "name": "renounceRole", - "stateMutability": "nonpayable", + "type": "event", + "name": "Initialized", "inputs": [ { - "name": "role", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "callerConfirmation", - "type": "address", - "internalType": "address" + "name": "version", + "type": "uint64", + "internalType": "uint64", + "indexed": false } ], - "outputs": [] + "anonymous": false }, { "type": "function", - "name": "revokeRole", + "name": "initialize", "stateMutability": "nonpayable", "inputs": [ { - "name": "role", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "account", + "name": "_l1Sender", "type": "address", "internalType": "address" } @@ -7410,72 +10102,55 @@ }, { "type": "function", - "name": "setFeeRate", - "stateMutability": "nonpayable", - "inputs": [ + "name": "l1Sender", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "_ratePerSecond", - "type": "uint256", - "internalType": "uint256" + "name": "", + "type": "address", + "internalType": "address" } - ], - "outputs": [] + ] }, { "type": "function", - "name": "supportsInterface", + "name": "messenger", "stateMutability": "view", - "inputs": [ - { - "name": "interfaceId", - "type": "bytes4", - "internalType": "bytes4" - } - ], + "inputs": [], "outputs": [ { "name": "", - "type": "bool", - "internalType": "bool" + "type": "address", + "internalType": "address" } ] }, { "type": "function", - "name": "sweep", + "name": "recvData", "stateMutability": "nonpayable", "inputs": [ { - "name": "recipient", - "type": "address", - "internalType": "address payable" + "name": "data", + "type": "bytes", + "internalType": "bytes" } ], "outputs": [] } ], - "tx_hash": "0x9a02db05c96318d8b0abfd5030c98cd013d670f46012ac1fbabf1564d40d2b6c", - "block_number": 5347313, + "tx_hash": "0xe473bd42d00b2516d91a49f6863fe30f66c0f2b1739c5c771b35d8cf9de87978", + "block_number": 33477157, "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" }, - "TACoChildApplication": { - "address": "0x42F30AEc1A36995eEFaf9536Eb62BD751F982D32", + "SigningCoordinatorChild": { + "address": "0xcc537b292d142dABe2424277596d8FFCC3e6A12D", "abi": [ { "type": "constructor", "stateMutability": "nonpayable", - "inputs": [ - { - "name": "_rootApplication", - "type": "address", - "internalType": "contract ITACoChildToRoot" - }, - { - "name": "_minimumAuthorization", - "type": "uint96", - "internalType": "uint96" - } - ] + "inputs": [] }, { "type": "error", @@ -7488,231 +10163,207 @@ "inputs": [] }, { - "type": "event", - "name": "AuthorizationUpdated", + "type": "error", + "name": "OwnableInvalidOwner", "inputs": [ { - "name": "stakingProvider", + "name": "owner", "type": "address", - "internalType": "address", - "indexed": true - }, - { - "name": "authorized", - "type": "uint96", - "internalType": "uint96", - "indexed": false - }, - { - "name": "deauthorizing", - "type": "uint96", - "internalType": "uint96", - "indexed": false - }, - { - "name": "endDeauthorization", - "type": "uint64", - "internalType": "uint64", - "indexed": false + "internalType": "address" } - ], - "anonymous": false + ] }, { - "type": "event", - "name": "Initialized", + "type": "error", + "name": "OwnableUnauthorizedAccount", "inputs": [ { - "name": "version", - "type": "uint64", - "internalType": "uint64", - "indexed": false + "name": "account", + "type": "address", + "internalType": "address" } - ], - "anonymous": false + ] }, { "type": "event", - "name": "OperatorConfirmed", + "name": "AllowedCallerUpdated", "inputs": [ { - "name": "stakingProvider", + "name": "oldCaller", "type": "address", "internalType": "address", - "indexed": true + "indexed": false }, { - "name": "operator", + "name": "newCaller", "type": "address", "internalType": "address", - "indexed": true + "indexed": false } ], "anonymous": false }, { "type": "event", - "name": "OperatorUpdated", + "name": "CohortMultisigDeployed", "inputs": [ { - "name": "stakingProvider", - "type": "address", - "internalType": "address", + "name": "cohortId", + "type": "uint32", + "internalType": "uint32", "indexed": true }, { - "name": "operator", + "name": "multisig", "type": "address", "internalType": "address", - "indexed": true + "indexed": false } ], "anonymous": false }, { - "type": "function", - "name": "authorizedStake", - "stateMutability": "view", + "type": "event", + "name": "CohortMultisigUpdated", "inputs": [ { - "name": "_stakingProvider", + "name": "cohortId", + "type": "uint32", + "internalType": "uint32", + "indexed": true + }, + { + "name": "multisig", "type": "address", - "internalType": "address" - } - ], - "outputs": [ + "internalType": "address", + "indexed": false + }, { - "name": "", - "type": "uint96", - "internalType": "uint96" + "name": "signers", + "type": "address[]", + "internalType": "address[]", + "indexed": false + }, + { + "name": "threshold", + "type": "uint16", + "internalType": "uint16", + "indexed": false + }, + { + "name": "clearSigners", + "type": "bool", + "internalType": "bool", + "indexed": false } - ] + ], + "anonymous": false }, { - "type": "function", - "name": "confirmOperatorAddress", - "stateMutability": "nonpayable", + "type": "event", + "name": "Initialized", "inputs": [ { - "name": "_operator", - "type": "address", - "internalType": "address" + "name": "version", + "type": "uint64", + "internalType": "uint64", + "indexed": false } ], - "outputs": [] + "anonymous": false }, { - "type": "function", - "name": "coordinator", - "stateMutability": "view", - "inputs": [], - "outputs": [ + "type": "event", + "name": "MultisigFactoryUpdated", + "inputs": [ { - "name": "", + "name": "oldFactory", "type": "address", - "internalType": "address" + "internalType": "address", + "indexed": false + }, + { + "name": "newFactory", + "type": "address", + "internalType": "address", + "indexed": false } - ] + ], + "anonymous": false }, { - "type": "function", - "name": "eligibleStake", - "stateMutability": "view", + "type": "event", + "name": "OwnershipTransferred", "inputs": [ { - "name": "_stakingProvider", + "name": "previousOwner", "type": "address", - "internalType": "address" + "internalType": "address", + "indexed": true }, { - "name": "_endDate", - "type": "uint256", - "internalType": "uint256" + "name": "newOwner", + "type": "address", + "internalType": "address", + "indexed": true } ], - "outputs": [ - { - "name": "", - "type": "uint96", - "internalType": "uint96" - } - ] + "anonymous": false }, { "type": "function", - "name": "getActiveStakingProviders", + "name": "allowedCaller", "stateMutability": "view", - "inputs": [ - { - "name": "_startIndex", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_maxStakingProviders", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_cohortDuration", - "type": "uint32", - "internalType": "uint32" - } - ], + "inputs": [], "outputs": [ { - "name": "allAuthorizedTokens", - "type": "uint96", - "internalType": "uint96" - }, - { - "name": "activeStakingProviders", - "type": "bytes32[]", - "internalType": "bytes32[]" + "name": "", + "type": "address", + "internalType": "address" } ] }, { "type": "function", - "name": "getActiveStakingProviders", + "name": "cohortMultisigs", "stateMutability": "view", "inputs": [ { - "name": "_startIndex", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_maxStakingProviders", - "type": "uint256", - "internalType": "uint256" + "name": "", + "type": "uint32", + "internalType": "uint32" } ], "outputs": [ { - "name": "allAuthorizedTokens", - "type": "uint96", - "internalType": "uint96" - }, - { - "name": "activeStakingProviders", - "type": "bytes32[]", - "internalType": "bytes32[]" + "name": "", + "type": "address", + "internalType": "address" } ] }, { "type": "function", - "name": "getStakingProvidersLength", - "stateMutability": "view", - "inputs": [], - "outputs": [ + "name": "deployCohortMultiSig", + "stateMutability": "nonpayable", + "inputs": [ { - "name": "", - "type": "uint256", - "internalType": "uint256" + "name": "cohortId", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "signers", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "threshold", + "type": "uint16", + "internalType": "uint16" } - ] + ], + "outputs": [] }, { "type": "function", @@ -7720,7 +10371,12 @@ "stateMutability": "nonpayable", "inputs": [ { - "name": "_coordinator", + "name": "_signingMultisigFactory", + "type": "address", + "internalType": "contract ThresholdSigningMultisigCloneFactory" + }, + { + "name": "_allowedCaller", "type": "address", "internalType": "address" } @@ -7729,119 +10385,174 @@ }, { "type": "function", - "name": "minimumAuthorization", + "name": "owner", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", - "type": "uint96", - "internalType": "uint96" + "type": "address", + "internalType": "address" } ] }, { "type": "function", - "name": "operatorToStakingProvider", - "stateMutability": "view", + "name": "renounceOwnership", + "stateMutability": "nonpayable", + "inputs": [], + "outputs": [] + }, + { + "type": "function", + "name": "setAllowedCaller", + "stateMutability": "nonpayable", "inputs": [ { - "name": "", + "name": "_allowedCaller", "type": "address", "internalType": "address" } ], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ] + "outputs": [] }, { "type": "function", - "name": "pendingAuthorizationDecrease", - "stateMutability": "view", + "name": "setMultisigFactory", + "stateMutability": "nonpayable", "inputs": [ { - "name": "_stakingProvider", + "name": "multisigFactory", "type": "address", - "internalType": "address" + "internalType": "contract ThresholdSigningMultisigCloneFactory" } ], - "outputs": [ - { - "name": "", - "type": "uint96", - "internalType": "uint96" - } - ] + "outputs": [] }, { "type": "function", - "name": "rootApplication", + "name": "signingMultisigFactory", "stateMutability": "view", "inputs": [], "outputs": [ { "name": "", "type": "address", - "internalType": "contract ITACoChildToRoot" + "internalType": "contract ThresholdSigningMultisigCloneFactory" } ] }, { "type": "function", - "name": "stakingProviderInfo", - "stateMutability": "view", + "name": "transferOwnership", + "stateMutability": "nonpayable", "inputs": [ { - "name": "", + "name": "newOwner", "type": "address", "internalType": "address" } ], - "outputs": [ + "outputs": [] + }, + { + "type": "function", + "name": "updateMultiSigParameters", + "stateMutability": "nonpayable", + "inputs": [ { - "name": "operator", - "type": "address", - "internalType": "address" + "name": "cohortId", + "type": "uint32", + "internalType": "uint32" }, { - "name": "authorized", - "type": "uint96", - "internalType": "uint96" + "name": "signers", + "type": "address[]", + "internalType": "address[]" }, { - "name": "operatorConfirmed", + "name": "threshold", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "clearSigners", "type": "bool", "internalType": "bool" - }, + } + ], + "outputs": [] + } + ], + "tx_hash": "0x69df870d8072902eb3850e34db9c9354c02b08b6915d0d4c360372124339ca52", + "block_number": 33477198, + "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" + }, + "ThresholdSigningMultisigCloneFactory": { + "address": "0x418e991fD07cfA950855F820023AF6191E18B6df", + "abi": [ + { + "type": "constructor", + "stateMutability": "nonpayable", + "inputs": [ { - "name": "index", - "type": "uint248", - "internalType": "uint248" + "name": "_implementation", + "type": "address", + "internalType": "address" }, { - "name": "deauthorizing", - "type": "uint96", - "internalType": "uint96" + "name": "_signingCoordinatorChild", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC1167FailedCreateClone", + "inputs": [] + }, + { + "type": "event", + "name": "ThresholdMultisigCloneDeployed", + "inputs": [ + { + "name": "cloneAddress", + "type": "address", + "internalType": "address", + "indexed": false }, { - "name": "endDeauthorization", - "type": "uint64", - "internalType": "uint64" + "name": "cohortId", + "type": "uint256", + "internalType": "uint256", + "indexed": false } - ] + ], + "anonymous": false }, { "type": "function", - "name": "stakingProviders", - "stateMutability": "view", + "name": "deploySigningMultisig", + "stateMutability": "nonpayable", "inputs": [ { - "name": "", + "name": "signers", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "threshold", + "type": "uint16", + "internalType": "uint16" + }, + { + "name": "initialOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "cohortId", "type": "uint256", "internalType": "uint256" } @@ -7856,72 +10567,53 @@ }, { "type": "function", - "name": "updateAuthorization", - "stateMutability": "nonpayable", + "name": "getCloneAddress", + "stateMutability": "view", "inputs": [ { - "name": "stakingProvider", + "name": "cohortId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", "type": "address", "internalType": "address" - }, - { - "name": "authorized", - "type": "uint96", - "internalType": "uint96" } - ], - "outputs": [] + ] }, { "type": "function", - "name": "updateAuthorization", - "stateMutability": "nonpayable", - "inputs": [ + "name": "implementation", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "stakingProvider", + "name": "", "type": "address", "internalType": "address" - }, - { - "name": "authorized", - "type": "uint96", - "internalType": "uint96" - }, - { - "name": "deauthorizing", - "type": "uint96", - "internalType": "uint96" - }, - { - "name": "endDeauthorization", - "type": "uint64", - "internalType": "uint64" } - ], - "outputs": [] + ] }, { "type": "function", - "name": "updateOperator", - "stateMutability": "nonpayable", - "inputs": [ - { - "name": "stakingProvider", - "type": "address", - "internalType": "address" - }, + "name": "signingCoordinatorChild", + "stateMutability": "view", + "inputs": [], + "outputs": [ { - "name": "operator", + "name": "", "type": "address", "internalType": "address" } - ], - "outputs": [] + ] } ], - "tx_hash": "0x4a1de1566b64df4f11a782939b4b694cb193df9bb06b307835a87e2420f37e81", - "block_number": 5198646, + "tx_hash": "0xe11920d17f1b6aa3032ad1f2dcba7c5178a7d900a9732a7679b68b225d9615ed", + "block_number": 33477209, "deployer": "0x3B42d26E19FF860bC4dEbB920DD8caA53F93c600" } } -} +} \ No newline at end of file diff --git a/deployment/constants.py b/deployment/constants.py index 5ee500884..ef7169569 100644 --- a/deployment/constants.py +++ b/deployment/constants.py @@ -51,6 +51,11 @@ "0xb947c457a14d38229C7C5188bcc0B8925458AF04": "0xd8b9aB3f5Da9C0428a95d56b53f8D996c03a7093", } +TESTNET_PROVIDERS = { + LYNX: list(sorted(LYNX_NODES, key=lambda x: int(x, 16))), + TAPIR: list(sorted(TAPIR_NODES, key=lambda x: int(x, 16))), +} + # # Contracts # diff --git a/deployment/constructor_params/lynx/child-signing-infra-base.yml b/deployment/constructor_params/lynx/child-signing-infra-base.yml new file mode 100644 index 000000000..3bcb74ec4 --- /dev/null +++ b/deployment/constructor_params/lynx/child-signing-infra-base.yml @@ -0,0 +1,34 @@ +deployment: + name: lynx-child-signing-infra-base + chain_id: 84532 # base + +artifacts: + dir: ./deployment/artifacts/ + filename: lynx-child-signing-infra-base.json + +constants: + L1_MESSENGER: "0xC34855F4De64F1840e5686e64278da901e261f20" + L2_MESSENGER: "0x4200000000000000000000000000000000000007" + SIGNING_COORDINATOR_DISPATCHER: "0xa99FF0056A98AA8800c769C4eCB4fA103e38E95E" + GAS_LIMIT: 500000 + +contracts: + # to be deployed on L1 + - OpL1Sender: + constructor: + _dispatcher: $SIGNING_COORDINATOR_DISPATCHER + _messenger: $L1_MESSENGER + _gasLimit: $GAS_LIMIT + # to be deployed on L2 (same chain as script) + - OpL2Receiver: + constructor: + _messenger: $L2_MESSENGER + - SigningCoordinatorChild: + proxy: + - ThresholdSigningMultisig + - ThresholdSigningMultisigCloneFactory: + constructor: + _implementation: $ThresholdSigningMultisig + _signingCoordinatorChild: $SigningCoordinatorChild + + diff --git a/deployment/constructor_params/lynx/root-signing-infra.yml b/deployment/constructor_params/lynx/root-signing-infra.yml new file mode 100644 index 000000000..dae0bb5f7 --- /dev/null +++ b/deployment/constructor_params/lynx/root-signing-infra.yml @@ -0,0 +1,33 @@ +deployment: + name: lynx-root-signing-infra + chain_id: 11155111 # sepolia + +artifacts: + dir: ./deployment/artifacts/ + filename: lynx-root-signing-infra.json + +constants: + # Constants used in script + HALF_HOUR_IN_SECONDS: 1800 + MAX_DKG_SIZE: 4 + TACO_APPLICATION: "0x329bc9Df0e45f360583374726ccaFF003264a136" + +contracts: + - SigningCoordinator: + proxy: + constructor: + _application: $TACO_APPLICATION + - SigningCoordinatorDispatcher: + proxy: + constructor: + _data: $encode:initialize + constructor: + _signingCoordinator: $SigningCoordinator + # child contracts on root itself (no L1 sender since on same chain) + - SigningCoordinatorChild: + proxy: + - ThresholdSigningMultisig + - ThresholdSigningMultisigCloneFactory: + constructor: + _implementation: $ThresholdSigningMultisig + _signingCoordinatorChild: $SigningCoordinatorChild diff --git a/deployment/constructor_params/lynx/upgrade-signing-coordinator.yml b/deployment/constructor_params/lynx/upgrade-signing-coordinator.yml new file mode 100644 index 000000000..725852ae5 --- /dev/null +++ b/deployment/constructor_params/lynx/upgrade-signing-coordinator.yml @@ -0,0 +1,15 @@ +deployment: + name: lynx-upgrade-signing-coordinator + chain_id: 11155111 # sepolia + +artifacts: + dir: ./deployment/artifacts/ + filename: lynx-upgrade-signing-coordinator.json + +constants: + TACO_APPLICATION: "0x329bc9Df0e45f360583374726ccaFF003264a136" + +contracts: + - SigningCoordinator: + constructor: + _application: $TACO_APPLICATION diff --git a/package-lock.json b/package-lock.json index 02ede04bf..405f50b57 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@nucypher/nucypher-contracts", - "version": "0.25.0", + "version": "0.26.0-alpha.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@nucypher/nucypher-contracts", - "version": "0.25.0", + "version": "0.26.0-alpha.2", "license": "AGPL-3.0-or-later", "devDependencies": { "@typescript-eslint/eslint-plugin": "^6.9.0", diff --git a/package.json b/package.json index fc2426dc7..daf55aa83 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nucypher/nucypher-contracts", - "version": "0.25.0", + "version": "0.26.0-alpha.2", "license": "AGPL-3.0-or-later", "description": "Threshold Access Control (TACo) Smart Contracts", "author": "NuCypher", diff --git a/requirements.txt b/requirements.txt index 2006a458c..0ff479c3d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,37 +1,37 @@ -i https://pypi.org/simple aiohappyeyeballs==2.6.1; python_version >= '3.9' -aiohttp==3.12.15; python_version >= '3.9' +aiohttp==3.13.2; python_version >= '3.9' aiosignal==1.4.0; python_version >= '3.9' annotated-types==0.7.0; python_version >= '3.8' ape-etherscan @ git+https://github.com/derekpierre/ape-etherscan.git@9107d061ea34cdbb24a56d68831a2647ae29c1cc -ape-foundry==0.8.9; python_version >= '3.9' and python_version < '4' +ape-foundry==0.8.10; python_version >= '3.9' and python_version < '4' ape-infura==0.8.4; python_version >= '3.9' and python_version < '4' ape-polygon==0.8.0; python_version >= '3.9' and python_version < '4' ape-solidity==0.8.5; python_version >= '3.9' and python_version < '4' asttokens==2.4.1 -attrs==25.3.0; python_version >= '3.8' +attrs==25.4.0; python_version >= '3.9' base58==1.0.3 -bitarray==3.6.1 -black==25.1.0; python_version >= '3.9' +bitarray==3.8.0 +black==25.9.0; python_version >= '3.9' bump2version==1.0.1; python_version >= '3.5' cached-property==2.0.1; python_version >= '3.8' -cachetools==6.1.0; python_version >= '3.9' -cchecksum==0.3.1; python_version >= '3.8' and python_version < '4' -certifi==2025.8.3; python_version >= '3.7' -cffi==1.17.1; python_version >= '3.8' +cachetools==6.2.1; python_version >= '3.9' +cchecksum==0.3.5.dev0; python_version >= '3.8' and python_version < '4' +certifi==2025.10.5; python_version >= '3.7' +cffi==2.0.0; python_version >= '3.9' cfgv==3.4.0; python_version >= '3.8' chardet==5.2.0; python_version >= '3.7' -charset-normalizer==3.4.3; python_version >= '3.7' +charset-normalizer==3.4.4; python_version >= '3.7' ckzg==1.0.2 click==8.1.8; python_version >= '3.7' coincurve==21.0.0; python_version >= '3.9' colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' -cryptography==45.0.6; python_version >= '3.7' and python_full_version not in '3.9.0, 3.9.1' -cytoolz==1.0.1; python_version >= '3.8' +cryptography==46.0.3; python_version >= '3.8' and python_full_version not in '3.9.0, 3.9.1' +cytoolz==1.1.0; python_version >= '3.9' dataclassy==0.11.1; python_version >= '3.6' decorator==5.2.1; python_version >= '3.8' distlib==0.4.0 -eip712==0.2.13; python_version >= '3.9' and python_version < '4' +eip712==0.2.14; python_version >= '3.9' and python_version < '4' eth-abi==5.2.0; python_version >= '3.8' and python_version < '4' eth-account==0.11.3; python_version >= '3.8' and python_version < '4' eth-ape==0.8.36; python_version >= '3.9' and python_version < '4' @@ -39,105 +39,106 @@ eth-bloom==3.1.0; python_version >= '3.8' and python_version < '4' eth-hash[pycryptodome,pysha3]==0.7.1; python_version >= '3.8' and python_version < '4' eth-keyfile==0.9.1; python_version >= '3.8' and python_version < '4' eth-keys==0.7.0; python_version >= '3.8' and python_version < '4' -eth-pydantic-types==0.2.1; python_version >= '3.9' and python_version < '4' +eth-pydantic-types==0.2.2; python_version >= '3.9' and python_version < '4' eth-rlp==1.0.1; python_version >= '3.8' and python_version < '4' eth-tester[py-evm]==0.11.0b2; python_version >= '3.8' and python_version < '4' eth-typing==4.4.0; python_version >= '3.8' and python_version < '4' eth-utils==4.1.1; python_version >= '3.8' and python_version < '4' -ethpm-types==0.6.27; python_version >= '3.9' and python_version < '4' +ethpm-types==0.6.29; python_version >= '3.9' and python_version < '4' evm-trace==0.2.6; python_version >= '3.9' and python_version < '4' evmchains==0.1.5; python_version >= '3.8' -executing==2.2.0; python_version >= '3.8' -filelock==3.19.1; python_version >= '3.9' +executing==2.2.1; python_version >= '3.8' +filelock==3.20.0; python_version >= '3.10' flake8==7.3.0; python_version >= '3.9' -frozenlist==1.7.0; python_version >= '3.9' +frozenlist==1.8.0; python_version >= '3.9' hexbytes==0.3.1; python_version >= '3.7' and python_version < '4' -identify==2.6.13; python_version >= '3.9' -idna==3.10; python_version >= '3.6' -ijson==3.4.0; python_version >= '3.9' -iniconfig==2.1.0; python_version >= '3.8' +identify==2.6.15; python_version >= '3.9' +idna==3.11; python_version >= '3.8' +ijson==3.4.0.post0; python_version >= '3.9' +iniconfig==2.3.0; python_version >= '3.10' ipython==8.37.0; python_version >= '3.10' -isort==6.0.1; python_full_version >= '3.9.0' +isort==7.0.0; python_full_version >= '3.10.0' jedi==0.19.2; python_version >= '3.6' jsonschema==4.25.1; python_version >= '3.9' -jsonschema-specifications==2025.4.1; python_version >= '3.9' +jsonschema-specifications==2025.9.1; python_version >= '3.9' lazyasd==0.1.4 lru-dict==1.2.0 markdown-it-py==4.0.0; python_version >= '3.10' -matplotlib-inline==0.1.7; python_version >= '3.8' +matplotlib-inline==0.2.1; python_version >= '3.9' mccabe==0.7.0; python_version >= '3.6' mdurl==0.1.2; python_version >= '3.7' morphys==1.0 msgspec==0.19.0; python_version >= '3.9' -multidict==6.6.4; python_version >= '3.9' +multidict==6.7.0; python_version >= '3.9' mypy-extensions==1.1.0; python_version >= '3.8' nodeenv==1.9.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' -nucypher-core==0.15.0 +nucypher-core @ git+https://github.com/nucypher/nucypher-core.git@806bc81a658f107eddb26c179b04763b1b0cdbed#subdirectory=nucypher-core-python numpy==1.26.4; python_version >= '3.9' packaging==23.2; python_version >= '3.7' -pandas==2.3.2; python_version >= '3.9' +pandas==2.3.3; python_version >= '3.9' parsimonious==0.10.0 -parso==0.8.4; python_version >= '3.6' +parso==0.8.5; python_version >= '3.6' pathspec==0.12.1; python_version >= '3.8' pexpect==4.9.0; sys_platform != 'win32' and sys_platform != 'emscripten' -platformdirs==4.3.8; python_version >= '3.9' +platformdirs==4.5.0; python_version >= '3.10' pluggy==1.6.0; python_version >= '3.9' pre-commit==4.3.0; python_version >= '3.9' -prompt-toolkit==3.0.51; python_version >= '3.8' -propcache==0.3.2; python_version >= '3.9' -protobuf==6.32.0; python_version >= '3.9' +prompt-toolkit==3.0.52; python_version >= '3.8' +propcache==0.4.1; python_version >= '3.9' +protobuf==6.33.0; python_version >= '3.9' ptyprocess==0.7.0 pure-eval==0.2.3 -py-cid==0.3.0 +py-cid==0.3.1; python_version >= '3.10' py-ecc==8.0.0; python_version >= '3.8' and python_version < '4' py-evm==0.10.1b1; python_version >= '3.8' and python_version < '4' py-geth==5.6.0; python_version >= '3.8' and python_version < '4' py-multibase==1.0.3 py-multicodec==0.2.1 -py-multihash==0.2.3 py-solc-x==2.0.4; python_version >= '3.8' and python_version < '4' pycodestyle==2.14.0; python_version >= '3.9' -pycparser==2.22; python_version >= '3.8' +pycparser==2.23; python_version >= '3.8' pycryptodome==3.23.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' -pydantic==2.11.7; python_version >= '3.9' -pydantic-core==2.33.2; python_version >= '3.9' -pydantic-settings==2.10.1; python_version >= '3.9' +pydantic==2.12.4; python_version >= '3.9' +pydantic-core==2.41.5; python_version >= '3.9' +pydantic-settings==2.11.0; python_version >= '3.9' pyflakes==3.4.0; python_version >= '3.9' pygments==2.19.2; python_version >= '3.8' +pymultihash==0.8.2 pyproject-api==1.6.1; python_version >= '3.8' -pytest==8.4.1; python_version >= '3.9' +pytest==8.4.2; python_version >= '3.9' python-baseconv==1.2.2 python-dateutil==2.9.0.post0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2' -python-dotenv==1.1.1; python_version >= '3.9' +python-dotenv==1.2.1; python_version >= '3.9' +pytokens==0.3.0; python_version >= '3.8' pytz==2025.2 -pyunormalize==16.0.0; python_version >= '3.6' -pyyaml==6.0.2; python_version >= '3.8' -referencing==0.36.2; python_version >= '3.9' -regex==2025.7.34; python_version >= '3.9' +pyunormalize==17.0.0; python_version >= '3.8' +pyyaml==6.0.3; python_version >= '3.8' +referencing==0.37.0; python_version >= '3.10' +regex==2025.11.3; python_version >= '3.9' requests==2.32.5; python_version >= '3.9' rich==13.9.4; python_full_version >= '3.8.0' rlp==4.1.0; python_version >= '3.8' and python_version < '4' -rpds-py==0.27.0; python_version >= '3.9' +rpds-py==0.28.0; python_version >= '3.10' safe-pysha3==1.0.5; python_version >= '3.9' semantic-version==2.10.0; python_version >= '2.7' six==1.17.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2' sortedcontainers==2.4.0 -sqlalchemy==2.0.43; python_version >= '3.7' +sqlalchemy==2.0.44; python_version >= '3.7' stack-data==0.6.3 -toolz==1.0.0; python_version >= '3.8' +toolz==1.1.0; python_version >= '3.9' tox==4.15.1; python_version >= '3.8' tqdm==4.67.1; python_version >= '3.7' traitlets==5.14.3; python_version >= '3.8' trie==3.1.0; python_version >= '3.8' and python_version < '4' -types-requests==2.32.4.20250809; python_version >= '3.9' -typing-extensions==4.14.1; python_version >= '3.9' -typing-inspection==0.4.1; python_version >= '3.9' +types-requests==2.32.4.20250913; python_version >= '3.9' +typing-extensions==4.15.0; python_version >= '3.9' +typing-inspection==0.4.2; python_version >= '3.9' tzdata==2025.2; python_version >= '2' urllib3==2.5.0; python_version >= '3.9' varint==1.0.2 -virtualenv==20.34.0; python_version >= '3.8' +virtualenv==20.35.4; python_version >= '3.8' watchdog==3.0.0; python_version >= '3.7' -wcwidth==0.2.13 +wcwidth==0.2.14; python_version >= '3.6' web3[tester]==6.20.1; python_full_version >= '3.7.2' websockets==15.0.1; python_version >= '3.9' -yarl==1.20.1; python_version >= '3.9' +yarl==1.22.0; python_version >= '3.9' diff --git a/scripts/form_signing_cohort.py b/scripts/form_signing_cohort.py new file mode 100644 index 000000000..f5a698a45 --- /dev/null +++ b/scripts/form_signing_cohort.py @@ -0,0 +1,76 @@ +#!/usr/bin/python3 + +import click +from ape.cli import ConnectedProviderCommand, account_option, network_option + +from deployment import registry +from deployment.constants import ( + SUPPORTED_TACO_DOMAINS, TESTNET_PROVIDERS, +) +from deployment.params import Transactor +from deployment.types import MinInt + + +@click.command(cls=ConnectedProviderCommand, name="form-signing-cohort") +@account_option() +@network_option(required=True) +@click.option( + "--domain", + "-d", + help="TACo domain", + type=click.Choice(SUPPORTED_TACO_DOMAINS), + required=True, +) +@click.option( + "--duration", + "-t", + help="Duration of the cohort in seconds. Must be at least 24h.", + type=MinInt(60 * 60 * 24), + required=True, +) +@click.option( + "--threshold", + "-th", + help="The threshold number of signatures required to sign the message.", + type=MinInt(1), + required=True, +) +@click.option( + "--chain-id", + "-c", + help="The chain ID of the network where the cohort is being initiated.", + type=int, + required=True, +) +@click.option( + "--auto", + help="Automatically sign transactions.", + is_flag=True, +) +def cli( + domain, + account, + network, + duration, + threshold, + chain_id, + auto, +): + """ + Example: + + ape run form_signing_cohort -c 84532 -th 2 -t 2592000 --account lynx-deployer --domain lynx --network ethereum:sepolia:infura + """ + if domain not in TESTNET_PROVIDERS: + raise click.ClickException(f"Unsupported domain: {domain}. Supported domains are: {', '.join(TESTNET_PROVIDERS)}") + providers = TESTNET_PROVIDERS[domain] + + print(f"Initiating signing cohort on {domain}:{network} with account {account.address}...") + transactor = Transactor(account=account, autosign=auto) + signing_coordinator = registry.get_contract(domain=domain, contract_name="SigningCoordinator") + + result = transactor.transact( + signing_coordinator.initiateSigningCohort, + chain_id, account.address, providers, threshold, duration + ) + print(f"Signing cohort initiated with transaction: {result.txn_hash}") diff --git a/scripts/lynx/deploy_child_signing_infra.py b/scripts/lynx/deploy_child_signing_infra.py new file mode 100644 index 000000000..56dd207c1 --- /dev/null +++ b/scripts/lynx/deploy_child_signing_infra.py @@ -0,0 +1,100 @@ +#!/usr/bin/python3 +from pathlib import Path + +import click +from ape import networks, project +from ape.cli import ConnectedProviderCommand, network_option + +from deployment.constants import ARTIFACTS_DIR +from deployment.params import Deployer +from deployment.registry import ( + contracts_from_registry, + merge_registries, + registry_from_ape_deployments, +) + +VERIFY = False + + +@click.command(cls=ConnectedProviderCommand) +@network_option(required=True) +@click.option( + "--constructor-params-filepath", + "-f", + type=click.Path(dir_okay=False, exists=True, path_type=Path), + help="Constructor params filepath", + required=True, +) +def cli(network, constructor_params_filepath): + """ + This script deploys the Signing Infrastructure on the relevant L2 chain. + It can be reused for different child chains by providing the relevant constructor params file. + """ + deployer = Deployer.from_yaml(filepath=constructor_params_filepath, verify=VERIFY) + instances = contracts_from_registry(filepath=ARTIFACTS_DIR / "lynx.json", chain_id=11155111) + dispatcher = instances[project.SigningCoordinatorDispatcher.contract_type.name] + + # deploy bridge contracts + with networks.ethereum.sepolia.use_provider("infura"): + # L1 sender belongs on the root chain + l1_sender = deployer.deploy(project.OpL1Sender) + + l2_receiver = deployer.deploy(project.OpL2Receiver) + deployer.transact(l2_receiver.initialize, l1_sender.address) + + with networks.ethereum.sepolia.use_provider("infura"): + deployer.transact(l1_sender.initialize, l2_receiver.address) + + # deploy child contracts + signing_coordinator_child = deployer.deploy(project.SigningCoordinatorChild) + + _ = deployer.deploy(project.ThresholdSigningMultisig) + signing_multisig_clone_factory = deployer.deploy(project.ThresholdSigningMultisigCloneFactory) + + # for child allowed caller is the l2 receiver + deployer.transact( + signing_coordinator_child.initialize, + signing_multisig_clone_factory.address, + l2_receiver.address, + ) + + # register bridge contracts with dispatcher + child_chain_id = networks.active_provider.chain_id + with networks.ethereum.sepolia.use_provider("infura"): + # register with the dispatcher + deployer.transact( + dispatcher.register, + child_chain_id, + l1_sender.address, + signing_coordinator_child.address, + ) + + # store l1 sender deployment + l1_deployments = [l1_sender] + l1_temp_registry_filepath = ( + deployer.registry_filepath.parent + / deployer.registry_filepath.name.replace(".json", "_l1.json") + ) + registry_from_ape_deployments( + deployments=l1_deployments, output_filepath=l1_temp_registry_filepath + ) + + # base deployments + deployments = [ + l2_receiver, + signing_coordinator_child, + signing_multisig_clone_factory, + ] + deployer.finalize(deployments=deployments) + + # merge both for a single registry + merge_registries( + deployer.registry_filepath, l1_temp_registry_filepath, deployer.registry_filepath + ) + + # remove l1 deployment file + l1_temp_registry_filepath.unlink() + + +if __name__ == "__main__": + cli() diff --git a/scripts/lynx/deploy_root_signing_infra.py b/scripts/lynx/deploy_root_signing_infra.py new file mode 100644 index 000000000..8acf95516 --- /dev/null +++ b/scripts/lynx/deploy_root_signing_infra.py @@ -0,0 +1,67 @@ +#!/usr/bin/python3 + +from ape import chain, project +from eth.constants import ZERO_ADDRESS + +from deployment.constants import CONSTRUCTOR_PARAMS_DIR +from deployment.params import Deployer + +VERIFY = False +CONSTRUCTOR_PARAMS_FILEPATH = CONSTRUCTOR_PARAMS_DIR / "lynx" / "root-signing-infra.yml" + + +def main(): + """ + This script deploys the Signing Infrastructure on Lynx/Sepolia. + """ + + deployer = Deployer.from_yaml(filepath=CONSTRUCTOR_PARAMS_FILEPATH, verify=VERIFY) + + # deploy root contracts + signing_coordinator = deployer.deploy(project.SigningCoordinator) + + signing_coordinator_dispatcher = deployer.deploy(project.SigningCoordinatorDispatcher) + + deployer.transact( + signing_coordinator.initialize, + deployer.constants.HALF_HOUR_IN_SECONDS, + deployer.constants.MAX_DKG_SIZE, + signing_coordinator_dispatcher.address, + deployer.get_account().address, + ) + deployer.transact( + signing_coordinator.grantRole, + signing_coordinator.INITIATOR_ROLE(), + deployer.get_account().address, + ) + + # deploy child contracts on same root chain (sepolia) + signing_coordinator_child = deployer.deploy(project.SigningCoordinatorChild) + + _ = deployer.deploy(project.ThresholdSigningMultisig) + signing_multisig_clone_factory = deployer.deploy(project.ThresholdSigningMultisigCloneFactory) + + # for root allowed caller is the dispatcher (i.e. direct call) + deployer.transact( + signing_coordinator_child.initialize, + signing_multisig_clone_factory.address, + signing_coordinator_dispatcher.address, + ) + + # register the child contract to be called directly on L1 by dispatcher, + # without L1 sender + deployer.transact( + signing_coordinator_dispatcher.register, + chain.provider.chain_id, + ZERO_ADDRESS, + signing_coordinator_child.address, + ) + + deployments = [ + signing_coordinator, + signing_coordinator_dispatcher, + signing_coordinator_child, + signing_multisig_clone_factory, + ] + + deployer.finalize(deployments=deployments) diff --git a/scripts/lynx/upgrade_signing_coordinator.py b/scripts/lynx/upgrade_signing_coordinator.py new file mode 100644 index 000000000..112863b89 --- /dev/null +++ b/scripts/lynx/upgrade_signing_coordinator.py @@ -0,0 +1,32 @@ +#!/usr/bin/python3 + +from ape import project + +from deployment.constants import ARTIFACTS_DIR, CONSTRUCTOR_PARAMS_DIR +from deployment.params import Deployer +from deployment.registry import contracts_from_registry, merge_registries + +VERIFY = False +CONSTRUCTOR_PARAMS_FILEPATH = CONSTRUCTOR_PARAMS_DIR / "lynx" / "upgrade-signing-coordinator.yml" +LYNX_REGISTRY = ARTIFACTS_DIR / "lynx.json" + + +def main(): + """This script upgrades SigningCoordinator on Lynx/Sepolia.""" + + deployer = Deployer.from_yaml(filepath=CONSTRUCTOR_PARAMS_FILEPATH, verify=VERIFY) + instances = contracts_from_registry(filepath=ARTIFACTS_DIR / "lynx.json", chain_id=11155111) + signing_coordinator = deployer.upgrade( + project.SigningCoordinator, instances[project.SigningCoordinator.contract_type.name].address + ) + + deployments = [ + signing_coordinator, + ] + + deployer.finalize(deployments=deployments) + merge_registries( + registry_1_filepath=LYNX_REGISTRY, + registry_2_filepath=deployer.registry_filepath, + output_filepath=LYNX_REGISTRY, + ) diff --git a/scripts/set_signing_cohort_conditions.py b/scripts/set_signing_cohort_conditions.py new file mode 100644 index 000000000..79177d30a --- /dev/null +++ b/scripts/set_signing_cohort_conditions.py @@ -0,0 +1,85 @@ +#!/usr/bin/python3 + +import click +from ape.cli import ConnectedProviderCommand, account_option, network_option + +from deployment import registry +from deployment.constants import ( + SUPPORTED_TACO_DOMAINS, TESTNET_PROVIDERS, +) +from deployment.params import Transactor + + +@click.command(cls=ConnectedProviderCommand, name="set-cohort-conditions") +@account_option() +@network_option(required=True) +@click.option( + "--domain", + "-d", + help="TACo domain", + type=click.Choice(SUPPORTED_TACO_DOMAINS), + required=True, +) +@click.option( + "--cohort-id", + "-cid", + help="The cohort ID to set conditions on.", + type=int, + required=True, +) +@click.option( + "--chain-id", + "-c", + help="The chain ID of the network where the cohort is being initiated.", + type=int, + required=True, +) +@click.option( + "--auto", + help="Automatically sign transactions.", + is_flag=True, +) +@click.option( + "--condition-file", + "-cf", + help="Path to a JSON file containing the condition to be signed.", + type=click.Path(exists=True, dir_okay=False, readable=True), + required=False, +) +def cli( + domain, + account, + network, + auto, + cohort_id, + chain_id, + condition_file, +): + """ + Example: + + ape run set_signing_cohort_conditions --condition-file condition.txt -cid 2 -c 84532 --account lynx-deployer --domain lynx --network ethereum:sepolia:infura + """ + + with open(condition_file, 'r') as file: + condition = file.read().strip().encode("utf-8") + if not condition: + raise click.ClickException("Condition file is empty or not provided.") + + if domain not in TESTNET_PROVIDERS: + raise click.ClickException(f"Unsupported domain: {domain}. Supported domains are: {', '.join(TESTNET_PROVIDERS)}") + + print(f"Setting conditions for cohort {cohort_id} on {domain}:{network} with chain ID {chain_id}") + + transactor = Transactor(account=account, autosign=auto) + signing_coordinator = registry.get_contract(domain=domain, contract_name="SigningCoordinator") + + print("Setting conditions...") + print(f"Condition: {condition}") + print(f"Cohort ID: {cohort_id}, Chain ID: {chain_id}") + result = transactor.transact( + signing_coordinator.setSigningCohortConditions, + cohort_id, chain_id, condition, + ) + + print(f"Conditions set successfully: {result.transaction_hash.hex()}") diff --git a/scripts/signing_cohort_additional_chain.py b/scripts/signing_cohort_additional_chain.py new file mode 100644 index 000000000..ce3836591 --- /dev/null +++ b/scripts/signing_cohort_additional_chain.py @@ -0,0 +1,64 @@ +#!/usr/bin/python3 + +import click +from ape.cli import ConnectedProviderCommand, account_option, network_option + +from deployment import registry +from deployment.constants import SUPPORTED_TACO_DOMAINS +from deployment.params import Transactor + + +@click.command(cls=ConnectedProviderCommand) +@account_option() +@network_option(required=True) +@click.option( + "--domain", + "-d", + help="TACo domain", + type=click.Choice(SUPPORTED_TACO_DOMAINS), + required=True, +) +@click.option( + "--cohort-id", + "-i", + help="The cohort ID of the already formed cohort.", + type=int, + required=True, +) +@click.option( + "--chain-id", + "-c", + help="The chain ID of the network where the cohort is being initiated.", + type=int, + required=True, +) +@click.option( + "--auto", + help="Automatically sign transactions.", + is_flag=True, +) +def cli( + domain, + account, + chain_id, + cohort_id, + auto, +): + """ + Deploy a signing cohort on an additional chain for an already formed cohort. + + Example: + + ape run signing_cohort_additional_chain -d lynx -i 0 -c 84532 --network ethereum:sepolia:infura + """ + print( + f"Deploying signing cohort #{cohort_id} on additional chain {chain_id} " + f"with account {account.address}..." + ) + transactor = Transactor(account=account, autosign=auto) + signing_coordinator = registry.get_contract(domain=domain, contract_name="SigningCoordinator") + + result = transactor.transact( + signing_coordinator.deployAdditionalChainForSigningMultisig, chain_id, cohort_id + ) + print(f"Signing cohort deployed on chain {chain_id} with transaction: {result.txn_hash}") diff --git a/scripts/verify.py b/scripts/verify.py index 67a350669..ee81df4ef 100644 --- a/scripts/verify.py +++ b/scripts/verify.py @@ -11,7 +11,15 @@ @click.command(cls=ConnectedProviderCommand) @network_option(required=True) -@click.option("--contract-name", "-c", help="Contract to verify", type=click.STRING, required=True) +@click.option( + "--contract-name", + "-c", + "contract_names", + help="Contract to verify", + type=click.STRING, + required=True, + multiple=True, +) @click.option( "--domain", "-d", @@ -26,7 +34,7 @@ help="Registry filepath if the contract is not part of a common domain registry", required=False, ) -def cli(network, domain, contract_name, registry_filepath): +def cli(network, domain, contract_names, registry_filepath): """Verify a deployed contract.""" if not (bool(registry_filepath) ^ bool(domain)): raise click.BadOptionUsage( @@ -41,23 +49,29 @@ def cli(network, domain, contract_name, registry_filepath): chain_id = networks.active_provider.chain_id contracts = contracts_from_registry(registry_filepath, chain_id=chain_id) - try: - contract_instance = contracts[contract_name] - except KeyError: - raise ValueError( - f"Contract '{contract_name}' not found in registry, '{registry_filepath}', " - f"for chain {chain_id}" - ) + contract_instances = [] + for contract_name in contract_names: + try: + contract_instance = contracts[contract_name] + except KeyError: + raise ValueError( + f"Contract '{contract_name}' not found in registry, '{registry_filepath}', " + f"for chain {chain_id}" + ) + + # check whether contract is a proxy + proxy_info = networks.provider.network.ecosystem.get_proxy_info(contract_instance.address) + if proxy_info: + # we have an instance of a proxy contract, but need the underlying implementation + print( + f"Proxy contract detected; verifying implementation contract at {proxy_info.target}" + ) + contract_container = get_contract_container(contract_instance.contract_type.name) + contract_instance = contract_container.at(proxy_info.target) - # check whether contract is a proxy - proxy_info = networks.provider.network.ecosystem.get_proxy_info(contract_instance.address) - if proxy_info: - # we have an instance of a proxy contract, but need the underlying implementation - print(f"Proxy contract detected; verifying implementation contract at {proxy_info.target}") - contract_container = get_contract_container(contract_instance.contract_type.name) - contract_instance = contract_container.at(proxy_info.target) + contract_instances.append(contract_instance) - verify_contracts([contract_instance]) + verify_contracts(contract_instances) if __name__ == "__main__": diff --git a/setup.cfg b/setup.cfg index 742b1e282..32a8d325d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.25.0 +current_version = 0.26.0-alpha.2 commit = True tag = True parse = (?P\d+)\.(?P\d+)\.(?P\d+)(-(?P[^.]*)\.(?P\d+))? diff --git a/src/index.ts b/src/index.ts index 0a2fded87..1292497be 100644 --- a/src/index.ts +++ b/src/index.ts @@ -10,7 +10,7 @@ export interface DeployedContract { } // Only expose contracts that are used in the SDK -export const contractNames = ["Coordinator", "GlobalAllowList", "SubscriptionManager"] as const; +export const contractNames = ["Coordinator", "GlobalAllowList", "SigningCoordinator", "SubscriptionManager"] as const; export type ContractName = (typeof contractNames)[number]; @@ -27,9 +27,9 @@ export const domainRegistry: Record = { mainnet: mainnetRegistryJson, }; -export type Domain = "mainnet" | "oryx" | "tapir" | "lynx"; +export type Domain = "mainnet" | "tapir" | "lynx"; -export type ChainId = 1 | 5 | 137 | 80002; +export type ChainId = 1 | 137 | 80002 | 11155111; export type ChecksumAddress = `0x${string}`; diff --git a/test/registry.spec.ts b/test/registry.spec.ts index f19ab70f0..0e10eec59 100644 --- a/test/registry.spec.ts +++ b/test/registry.spec.ts @@ -2,14 +2,17 @@ import { describe, expect, it } from "vitest"; import { ChainId, type ContractName, contractNames, type Domain, getContract } from "../src"; -const testCases: Array<[string, number, ContractName]> = contractNames.flatMap((contract) => [ - ["lynx", 80002, contract], - ["tapir", 80002, contract], - ["mainnet", 137, contract], -]); +const polygonContractTestCases: Array<[string, number, ContractName]> = contractNames + // exclude SigningCoordinator which isn't on polygon + .filter((name) => name !== "SigningCoordinator") + .flatMap((contract) => [ + ["lynx", 80002, contract], + ["tapir", 80002, contract], + ["mainnet", 137, contract], + ]); describe("registry", () => { - it.each(testCases)( + it.each(polygonContractTestCases)( `should work for domain %s, chainId %i, contract %s`, (domain, chainId, contract) => { const contractAddress = getContract(domain as Domain, chainId as ChainId, contract); @@ -40,4 +43,14 @@ describe("registry", () => { const contractAddress2 = getContract("tapir", 80002, "Coordinator"); expect(contractAddress1).not.toEqual(contractAddress2); }); + + it("SigningCoordinator only present on corresponding ETH chain for lynx", () => { + // present for lynx + const contractAddress = getContract("lynx", 11155111, "SigningCoordinator"); + expect(contractAddress).toBeDefined(); + + // TODO update test when SigningCoordinator is deployed for other domains + expect(() => getContract("tapir", 11155111, "SigningCoordinator")).toThrow(); + expect(() => getContract("mainnet", 1, "SigningCoordinator")).toThrow(); + }); }); diff --git a/tests/application/conftest.py b/tests/application/conftest.py index 89da192ff..462ef3cd9 100644 --- a/tests/application/conftest.py +++ b/tests/application/conftest.py @@ -66,7 +66,7 @@ def encode_function_data(initializer=None, *args): @pytest.fixture() -def taco_application(project, creator, token, threshold_staking, oz_dependency, chain): +def taco_application(project, creator, token, threshold_staking, oz_dependency): contract = creator.deploy( project.TACoApplication, token.address, diff --git a/tests/conftest.py b/tests/conftest.py index a832f1f94..f5ebe6192 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -3,6 +3,7 @@ import pytest from ape import project +from hexbytes import HexBytes # Common constants G1_SIZE = 48 @@ -35,6 +36,16 @@ start=0, ) +ERC1271_MAGIC_VALUE_BYTES = bytes(HexBytes("0x1626ba7e")) +ERC1271_INVALID_SIGNATURE = bytes(HexBytes("0xffffffff")) + + +SigningRitualState = IntEnum( + "SigningRitualState", + ["NON_INITIATED", "AWAITING_SIGNATURES", "TIMEOUT", "ACTIVE", "EXPIRED", "AWAITING_CONDITIONS"], + start=0, +) + # Utility functions def transcript_size(shares, threshold): diff --git a/tests/test_signing_coordinator.py b/tests/test_signing_coordinator.py new file mode 100644 index 000000000..c82272a63 --- /dev/null +++ b/tests/test_signing_coordinator.py @@ -0,0 +1,453 @@ +import os + +import ape +import pytest +from eth.constants import ZERO_ADDRESS +from eth_account.messages import _hash_eip191_message, encode_defunct +from web3 import Web3 + +from tests.conftest import ERC1271_INVALID_SIGNATURE, ERC1271_MAGIC_VALUE_BYTES, SigningRitualState + +TIMEOUT = 1000 +MAX_DKG_SIZE = 31 +DURATION = 48 * 60 * 60 + +OTHER_CHAIN_ID_FOR_BRIDGE = 112233445566 + + +@pytest.fixture(scope="module") +def nodes(accounts): + return sorted(accounts[:MAX_DKG_SIZE], key=lambda x: x.address.lower()) + + +@pytest.fixture(scope="module") +def signers(accounts): + return sorted(accounts[MAX_DKG_SIZE : 2 * MAX_DKG_SIZE], key=lambda x: x.address.lower()) + + +@pytest.fixture(scope="module") +def initiator(accounts): + initiator_index = 2 * MAX_DKG_SIZE + 1 + assert len(accounts) >= initiator_index + return accounts[initiator_index] + + +@pytest.fixture(scope="module") +def deployer(accounts): + deployer_index = 2 * MAX_DKG_SIZE + 2 + assert len(accounts) >= deployer_index + return accounts[deployer_index] + + +@pytest.fixture() +def application(project, oz_dependency, deployer, nodes): + threshold_staking = deployer.deploy(project.ThresholdStakingForTACoApplicationMock) + + token = deployer.deploy(project.TestToken, 1_000_000) + + min_auth = Web3.to_wei(40_000, "ether") + taco_application_impl = deployer.deploy( + project.TACoApplication, + token.address, + threshold_staking.address, + min_auth, + 60 * 60 * 24, + 60 * 60 * 24 * 7, + 60 * 60 * 24 * 60, + 1000, + 60 * 60 * 24, + 2500, + ) + proxy = oz_dependency.TransparentUpgradeableProxy.deploy( + taco_application_impl.address, + deployer, + b"", + sender=deployer, + ) + taco_application = project.TACoApplication.at(proxy.address) + + threshold_staking.setApplication(taco_application.address, sender=deployer) + taco_application.initialize(sender=deployer) + + child_application = project.ChildApplicationForTACoApplicationMock.deploy( + taco_application.address, sender=deployer + ) + taco_application.setChildApplication(child_application.address, sender=deployer) + + # setup stakes / nodes + for n in nodes: + threshold_staking.setRoles(n, sender=n) + threshold_staking.authorizationIncreased(n, 0, min_auth, sender=n) + taco_application.bondOperator(n, n, sender=n) + child_application.confirmOperatorAddress(n, sender=deployer) + + return taco_application + + +@pytest.fixture() +def signing_coordinator( + project, + deployer, + initiator, + application, + oz_dependency, +): + contract = project.SigningCoordinator.deploy( + application.address, + sender=deployer, + ) + coordinator_proxy = oz_dependency.TransparentUpgradeableProxy.deploy( + contract.address, + deployer, + b"", + sender=deployer, + ) + signing_coordinator_proxy = project.SigningCoordinator.at(coordinator_proxy.address) + + # deploy proxied dispatcher + signing_coordinator_dispatcher = project.SigningCoordinatorDispatcher.deploy( + signing_coordinator_proxy.address, + sender=deployer, + ) + encoded_initializer_function = signing_coordinator_dispatcher.initialize.encode_input() + dispatcher_proxy = oz_dependency.TransparentUpgradeableProxy.deploy( + signing_coordinator_dispatcher.address, + deployer, + encoded_initializer_function, + sender=deployer, + ) + dispatcher_proxy_contract = project.SigningCoordinatorDispatcher.at(dispatcher_proxy.address) + + # initialize signing coordinator proxy + signing_coordinator_proxy.initialize( + TIMEOUT, + MAX_DKG_SIZE, + dispatcher_proxy_contract.address, + deployer.address, + sender=deployer, + ) + + signing_coordinator_proxy.grantRole( + signing_coordinator_proxy.INITIATOR_ROLE(), initiator, sender=deployer + ) + + return signing_coordinator_proxy + + +def _signing_coordinator_child_deployment(project, oz_dependency, deployer, allowed_caller): + contract = project.SigningCoordinatorChild.deploy( + sender=deployer, + ) + proxy = oz_dependency.TransparentUpgradeableProxy.deploy( + contract.address, + deployer, + b"", + sender=deployer, + ) + proxy_contract = project.SigningCoordinatorChild.at(proxy.address) + + threshold_signing_multisig = project.ThresholdSigningMultisig.deploy( + sender=deployer, + ) + signing_factory_contract = project.ThresholdSigningMultisigCloneFactory.deploy( + threshold_signing_multisig.address, + proxy_contract.address, + sender=deployer, + ) + + proxy_contract.initialize(signing_factory_contract.address, allowed_caller, sender=deployer) + + return proxy_contract + + +@pytest.fixture() +def signing_coordinator_child(chain, project, oz_dependency, deployer, signing_coordinator): + signing_coordinator_dispatcher = project.SigningCoordinatorDispatcher.at( + signing_coordinator.signingCoordinatorDispatcher() + ) + + _signing_coordinator_child = _signing_coordinator_child_deployment( + project, oz_dependency, deployer, signing_coordinator_dispatcher.address + ) + + # don't need a L1Sender for the same chain as signing coordinator + # current chain + signing_coordinator_dispatcher.register( + chain.chain_id, ZERO_ADDRESS, _signing_coordinator_child.address, sender=deployer + ) + + return _signing_coordinator_child + + +@pytest.fixture() +def mock_bridge_contracts(project, deployer, signing_coordinator): + mock_bridge_messenger = deployer.deploy(project.MockOpBridgeMessenger) + + l1_sender = deployer.deploy( + project.OpL1Sender, + signing_coordinator.signingCoordinatorDispatcher(), + mock_bridge_messenger.address, + 500_000, + ) + + l2_receiver = deployer.deploy(project.OpL2Receiver, mock_bridge_messenger.address) + l2_receiver.initialize(l1_sender.address, sender=deployer) + + l1_sender.initialize(l2_receiver.address, sender=deployer) + mock_bridge_messenger.initialize(l1_sender.address, sender=deployer) + + yield mock_bridge_messenger, l1_sender, l2_receiver + + +@pytest.fixture() +def other_chain_signing_coordinator_child( + project, oz_dependency, deployer, signing_coordinator, mock_bridge_contracts +): + _, l1_sender, l2_receiver = mock_bridge_contracts + + signing_coordinator_dispatcher = project.SigningCoordinatorDispatcher.at( + signing_coordinator.signingCoordinatorDispatcher() + ) + + _other_signing_coordinator_child = _signing_coordinator_child_deployment( + project, oz_dependency, deployer, l2_receiver.address + ) + + # need a L1Sender for the other chain + signing_coordinator_dispatcher.register( + OTHER_CHAIN_ID_FOR_BRIDGE, + l1_sender.address, + _other_signing_coordinator_child.address, + sender=deployer, + ) + + return _other_signing_coordinator_child + + +# +# Signing +# + + +def test_signing_ritual( + project, + chain, + deployer, + initiator, + nodes, + signers, + signing_coordinator, + signing_coordinator_child, + other_chain_signing_coordinator_child, +): + threshold = len(nodes) // 2 + 1 + tx = signing_coordinator.initiateSigningCohort( + chain.chain_id, initiator, nodes, threshold, DURATION, sender=initiator + ) + + signing_cohort_id = 0 + events = [event for event in tx.events if event.event_name == "InitiateSigningCohort"] + assert len(events) == 1 + event = events[0] + assert event.cohortId == signing_cohort_id + assert event.authority == initiator + assert event.chainId == chain.chain_id + assert event.participants == [n.address for n in nodes] + + signing_cohort_struct = signing_coordinator.signingCohorts(signing_cohort_id) + assert signing_cohort_struct["initiator"] == initiator + init, end = signing_cohort_struct[1], signing_cohort_struct["endTimestamp"] + assert end - init == DURATION + assert signing_cohort_struct["authority"] == initiator + assert signing_cohort_struct["totalSignatures"] == 0 + + assert signing_cohort_struct["numSigners"] == len(nodes) + assert signing_cohort_struct["threshold"] == threshold + + assert signing_coordinator.getChains(signing_cohort_id) == [chain.chain_id] + + for n in nodes: + assert signing_coordinator.isSigner(signing_cohort_id, n.address) + assert not signing_coordinator.getSigner( + signing_cohort_id, n.address + ).signingRequestStaticKey + + assert ( + signing_coordinator.getSigningCohortState(signing_cohort_id) + == SigningRitualState.AWAITING_SIGNATURES + ) + + signable_message = None + + # submit signatures + signing_request_static_keys = [os.urandom(42) for _ in nodes] + for i, node in enumerate(nodes): + signer = signers[i] + data_hash = signing_coordinator.getSigningCohortDataHash(signing_cohort_id, node.address) + signable_message = encode_defunct(data_hash) + signature = signer.sign_message(signable_message).encode_rsv() + tx = signing_coordinator.postSigningCohortData( + signing_cohort_id, signature, signing_request_static_keys[i], sender=node + ) + + events = [ + event for event in tx.events if event.event_name == "SigningCohortSignaturePosted" + ] + assert events == [ + signing_coordinator.SigningCohortSignaturePosted( + cohortId=signing_cohort_id, provider=node, signer=signer, signature=signature + ) + ] + + events = [event for event in tx.events if event.event_name == "SigningCohortDeployed"] + assert events == [ + signing_coordinator.SigningCohortDeployed( + cohortId=signing_cohort_id, + chainId=chain.chain_id, + ) + ] + + assert signing_coordinator.getSigningCohortState(signing_cohort_id) == SigningRitualState.ACTIVE + assert signing_coordinator.isCohortActive(signing_cohort_id) + + # submit conditions + time_condition = ( + b'{"version": "1.0.0", "condition": {"chain": 80002, "method": "blocktime", ' + b'"returnValueTest": {"comparator": ">", "value": 0}, "conditionType": "time"}}' + ) + + tx = signing_coordinator.setSigningCohortConditions( + signing_cohort_id, chain.chain_id, time_condition, sender=initiator + ) + events = [event for event in tx.events if event.event_name == "SigningCohortConditionsSet"] + assert events == [ + signing_coordinator.SigningCohortConditionsSet( + cohortId=signing_cohort_id, + chainId=chain.chain_id, + conditions=time_condition, + ) + ] + + assert signing_coordinator.getSigningCohortState(signing_cohort_id) == SigningRitualState.ACTIVE + assert signing_coordinator.isCohortActive(signing_cohort_id) + + for i, node in enumerate(nodes): + assert signing_coordinator.isSigner(signing_cohort_id, node.address) + signer = signing_coordinator.getSigner(signing_cohort_id, node.address) + assert signer.provider == node.address + assert signer.signerAddress == signers[i] + assert signer.signingRequestStaticKey == signing_request_static_keys[i] + + # check deployed multisig + assert ( + signing_coordinator.getSigningCoordinatorChild(chain.chain_id) + == signing_coordinator_child.address + ) + expected_multisig_address = project.ThresholdSigningMultisigCloneFactory.at( + signing_coordinator_child.signingMultisigFactory() + ).getCloneAddress(signing_cohort_id) + assert signing_coordinator_child.cohortMultisigs(signing_cohort_id) == expected_multisig_address + + cohort_multisig = project.ThresholdSigningMultisig.at(expected_multisig_address) + assert cohort_multisig.getSigners() == [n.address for n in signers] + assert cohort_multisig.threshold() == threshold + assert cohort_multisig.owner() == signing_coordinator_child.address + + # ensure signatures are valid for deployed cohort multisig + submitted_signatures = [] + data_hash = signing_coordinator.getSigningCohortDataHash(signing_cohort_id, node.address) + signable_message = encode_defunct(data_hash) + + # submit signatures + for i, node in enumerate(nodes): + signer = signers[i] + signature = signer.sign_message(signable_message).encode_rsv() + submitted_signatures.append(signature) + + data_hash = _hash_eip191_message(signable_message) + + # signatures must be all unique (no repeats) + repeated_signature = b"".join([submitted_signatures[0]] * threshold) + assert ( + cohort_multisig.isValidSignature(data_hash, repeated_signature) == ERC1271_INVALID_SIGNATURE + ) + + assert ( + cohort_multisig.isValidSignature(data_hash, b"".join(submitted_signatures)) + == ERC1271_MAGIC_VALUE_BYTES + ) + + # + # deploy multisig to another chain (cross-chain test) + # + + # deploy multisig to another chain + tx = signing_coordinator.deployAdditionalChainForSigningMultisig( + OTHER_CHAIN_ID_FOR_BRIDGE, signing_cohort_id, sender=initiator + ) + events = [event for event in tx.events if event.event_name == "SigningCohortDeployed"] + assert events == [ + signing_coordinator.SigningCohortDeployed( + cohortId=signing_cohort_id, + chainId=OTHER_CHAIN_ID_FOR_BRIDGE, + ) + ] + # new chain added + assert signing_coordinator.getChains(signing_cohort_id) == [ + chain.chain_id, + OTHER_CHAIN_ID_FOR_BRIDGE, + ] + + # try deploying to same chain again + with ape.reverts("Already deployed"): + signing_coordinator.deployAdditionalChainForSigningMultisig( + chain.chain_id, signing_cohort_id, sender=initiator + ) + + with ape.reverts("Already deployed"): + signing_coordinator.deployAdditionalChainForSigningMultisig( + OTHER_CHAIN_ID_FOR_BRIDGE, signing_cohort_id, sender=initiator + ) + + tx = signing_coordinator.setSigningCohortConditions( + signing_cohort_id, OTHER_CHAIN_ID_FOR_BRIDGE, time_condition, sender=initiator + ) + events = [event for event in tx.events if event.event_name == "SigningCohortConditionsSet"] + assert events == [ + signing_coordinator.SigningCohortConditionsSet( + cohortId=signing_cohort_id, + chainId=OTHER_CHAIN_ID_FOR_BRIDGE, + conditions=time_condition, + ) + ] + assert ( + signing_coordinator.getSigningCohortConditions(signing_cohort_id, OTHER_CHAIN_ID_FOR_BRIDGE) + == time_condition + ) + + # try setting conditions for undeployed chain + with ape.reverts("Not already deployed"): + signing_coordinator.setSigningCohortConditions( + signing_cohort_id, 999999, time_condition, sender=initiator + ) + + assert ( + signing_coordinator.getSigningCoordinatorChild(OTHER_CHAIN_ID_FOR_BRIDGE) + == other_chain_signing_coordinator_child.address + ) + other_chain_expected_multisig_address = project.ThresholdSigningMultisigCloneFactory.at( + other_chain_signing_coordinator_child.signingMultisigFactory() + ).getCloneAddress(signing_cohort_id) + assert ( + other_chain_signing_coordinator_child.cohortMultisigs(signing_cohort_id) + == other_chain_expected_multisig_address + ) + + # extend duration + additional_duration = 60 * 60 * 24 + current_end = signing_coordinator.signingCohorts(signing_cohort_id)["endTimestamp"] + _ = signing_coordinator.extendSigningCohortDuration( + signing_cohort_id, additional_duration, sender=deployer + ) + updated_end_timestamp = signing_coordinator.signingCohorts(signing_cohort_id)["endTimestamp"] + assert updated_end_timestamp == current_end + additional_duration diff --git a/tests/test_signing_coordinator_child.py b/tests/test_signing_coordinator_child.py new file mode 100644 index 000000000..86eb114bf --- /dev/null +++ b/tests/test_signing_coordinator_child.py @@ -0,0 +1,197 @@ +import os + +import ape +import pytest +from eth_utils import to_checksum_address + +NUM_SIGNERS = 5 +THRESHOLD = 2 + + +@pytest.fixture(scope="module") +def signers(accounts): + _accounts = [acc.address for acc in accounts[:NUM_SIGNERS]] + return _accounts + + +@pytest.fixture(scope="module") +def deployer(accounts): + deployer = accounts[NUM_SIGNERS + 1] + return deployer + + +@pytest.fixture(scope="module") +def allowed_caller(accounts): + return accounts[NUM_SIGNERS + 2] + + +@pytest.fixture(scope="module") +def unauthorized_caller(accounts): + return accounts[NUM_SIGNERS + 3] + + +@pytest.fixture() +def signing_coordinator_child( + project, oz_dependency, deployer, allowed_caller, threshold_signing_multisig_impl +): + contract = project.SigningCoordinatorChild.deploy( + sender=deployer, + ) + proxy = oz_dependency.TransparentUpgradeableProxy.deploy( + contract.address, + deployer, + b"", + sender=deployer, + ) + proxy_contract = project.SigningCoordinatorChild.at(proxy.address) + + signing_factory_contract = project.ThresholdSigningMultisigCloneFactory.deploy( + threshold_signing_multisig_impl.address, + proxy_contract.address, + sender=deployer, + ) + + proxy_contract.initialize(signing_factory_contract.address, allowed_caller, sender=deployer) + assert proxy_contract.allowedCaller() == allowed_caller.address + assert proxy_contract.signingMultisigFactory() == signing_factory_contract.address + assert proxy_contract.owner() == deployer.address + + return proxy_contract + + +@pytest.fixture(scope="module") +def threshold_signing_multisig_impl(project, deployer): + threshold_signing_multisig_impl = project.ThresholdSigningMultisig.deploy( + sender=deployer, + ) + return threshold_signing_multisig_impl + + +def test_set_multisig_factory( + project, + deployer, + allowed_caller, + unauthorized_caller, + signing_coordinator_child, + threshold_signing_multisig_impl, +): + new_factory_contract = project.ThresholdSigningMultisigCloneFactory.deploy( + threshold_signing_multisig_impl.address, + signing_coordinator_child.address, + sender=deployer, + ) + + # must be owner + with ape.reverts(f"account={unauthorized_caller.address}"): + signing_coordinator_child.setMultisigFactory( + new_factory_contract.address, sender=unauthorized_caller + ) + + with ape.reverts(f"account={allowed_caller.address}"): + signing_coordinator_child.setMultisigFactory( + new_factory_contract.address, sender=allowed_caller + ) + + signing_coordinator_child.setMultisigFactory(new_factory_contract.address, sender=deployer) + assert signing_coordinator_child.signingMultisigFactory() == new_factory_contract.address + + +def test_set_allowed_caller( + deployer, allowed_caller, unauthorized_caller, signing_coordinator_child +): + # must be owner + with ape.reverts(f"account={unauthorized_caller.address}"): + signing_coordinator_child.setAllowedCaller( + unauthorized_caller.address, sender=unauthorized_caller + ) + + with ape.reverts(f"account={allowed_caller.address}"): + signing_coordinator_child.setAllowedCaller(allowed_caller.address, sender=allowed_caller) + + assert signing_coordinator_child.owner() == deployer.address + signing_coordinator_child.setAllowedCaller(unauthorized_caller.address, sender=deployer) + assert signing_coordinator_child.allowedCaller() == unauthorized_caller.address + + +def test_deploy_cohort_multisig( + project, deployer, allowed_caller, signers, signing_coordinator_child +): + cohort_id = 42 + + # must be allowed caller + with ape.reverts("Unauthorized caller"): + signing_coordinator_child.deployCohortMultiSig( + cohort_id, signers, THRESHOLD, sender=deployer + ) + + signing_coordinator_child.deployCohortMultiSig( + cohort_id, signers, THRESHOLD, sender=allowed_caller + ) + cohort_42_multisig_address = signing_coordinator_child.cohortMultisigs(cohort_id) + cohort_42_multisig_contract = project.ThresholdSigningMultisig.at(cohort_42_multisig_address) + assert cohort_42_multisig_contract.getSigners() == signers + assert cohort_42_multisig_contract.threshold() == THRESHOLD + + # deploying again for the same cohort should fail + with ape.reverts("Multisig already deployed"): + signing_coordinator_child.deployCohortMultiSig( + cohort_id, signers, THRESHOLD, sender=allowed_caller + ) + + # deploy for other cohort + other_cohort_id = 43 + cohort_43_threshold = 1 + cohort_43_signers = [ + to_checksum_address(os.urandom(20)) for _ in range(cohort_43_threshold + 1) + ] + signing_coordinator_child.deployCohortMultiSig( + other_cohort_id, cohort_43_signers, cohort_43_threshold, sender=allowed_caller + ) + cohort_43_multisig_address = signing_coordinator_child.cohortMultisigs(other_cohort_id) + # different address from 1st one + assert cohort_43_multisig_address != cohort_42_multisig_address + + cohort_43_multisig_contract = project.ThresholdSigningMultisig.at(cohort_43_multisig_address) + assert cohort_43_multisig_contract.getSigners() == cohort_43_signers + assert cohort_43_multisig_contract.threshold() == cohort_43_threshold + + +def test_update_multisig_parameters( + project, deployer, allowed_caller, unauthorized_caller, signers, signing_coordinator_child +): + cohort_id = 100 + signing_coordinator_child.deployCohortMultiSig( + cohort_id, signers, THRESHOLD, sender=allowed_caller + ) + cohort_multisig_address = signing_coordinator_child.cohortMultisigs(cohort_id) + cohort_multisig_contract = project.ThresholdSigningMultisig.at(cohort_multisig_address) + + new_threshold = 3 + new_signers = [to_checksum_address(os.urandom(20)) for _ in range(NUM_SIGNERS + 2)] + + # must be allowed caller + with ape.reverts("Unauthorized caller"): + signing_coordinator_child.updateMultiSigParameters( + cohort_id, signers, new_threshold, True, sender=deployer + ) + + # must have already been deployed + with ape.reverts("Multisig not deployed"): + signing_coordinator_child.updateMultiSigParameters( + 11, signers, new_threshold, True, sender=allowed_caller + ) + + # don't replace, bulk add and update + signing_coordinator_child.updateMultiSigParameters( + cohort_id, new_signers, new_threshold, False, sender=allowed_caller + ) + assert cohort_multisig_contract.threshold() == new_threshold + assert len(cohort_multisig_contract.getSigners()) == len(signers) + len(new_signers) + assert set(cohort_multisig_contract.getSigners()) == set(signers).union(set(new_signers)) + + # totally replace + signing_coordinator_child.updateMultiSigParameters( + cohort_id, new_signers, new_threshold, True, sender=allowed_caller + ) + assert cohort_multisig_contract.threshold() == new_threshold + assert cohort_multisig_contract.getSigners() == new_signers diff --git a/tests/test_signing_coordinator_dispatcher.py b/tests/test_signing_coordinator_dispatcher.py new file mode 100644 index 000000000..819cf3d7e --- /dev/null +++ b/tests/test_signing_coordinator_dispatcher.py @@ -0,0 +1,197 @@ +import os + +import ape +import pytest +from ape.utils import ZERO_ADDRESS +from eth_utils import to_checksum_address + +NUM_SIGNERS = 5 +INITIAL_THRESHOLD = 2 + + +@pytest.fixture(scope="module") +def signers(accounts): + _accounts = [acc.address for acc in accounts[:NUM_SIGNERS]] + return _accounts + + +@pytest.fixture(scope="module") +def deployer(accounts): + deployer = accounts[NUM_SIGNERS + 1] + return deployer + + +@pytest.fixture(scope="module") +def signing_coordinator(project, deployer): + _signing_coordinator = project.SigningCoordinatorMock.deploy(sender=deployer) + return _signing_coordinator + + +@pytest.fixture() +def signing_coordinator_dispatcher(project, oz_dependency, signing_coordinator, deployer): + dispatcher = project.SigningCoordinatorDispatcher.deploy( + signing_coordinator.address, + sender=deployer, + ) + encoded_initializer_function = dispatcher.initialize.encode_input() + dispatcher_proxy = oz_dependency.TransparentUpgradeableProxy.deploy( + dispatcher.address, + deployer, + encoded_initializer_function, + sender=deployer, + ) + dispatcher_proxy_contract = project.SigningCoordinatorDispatcher.at(dispatcher_proxy.address) + + signing_coordinator.setDispatcher(dispatcher_proxy_contract.address, sender=deployer) + return dispatcher_proxy_contract + + +@pytest.fixture() +def signing_coordinator_child(project, deployer): + child = project.SigningCoordinatorChildMock.deploy( + sender=deployer, + ) + return child + + +@pytest.fixture() +def l1_sender(project, deployer): + _l1_sender = project.L1SenderMock.deploy( + sender=deployer, + ) + return _l1_sender + + +def test_dispatcher_register_unregister( + signing_coordinator_dispatcher, + deployer, + chain, +): + # register with zero address + with ape.reverts("Invalid L1 sender"): + # l1 sender must not be zero address + signing_coordinator_dispatcher.register( + 12, ZERO_ADDRESS, to_checksum_address(os.urandom(20)), sender=deployer + ) + + # register + chain_12 = 12 + l1_sender_chain_12 = to_checksum_address(os.urandom(20)) + child_chain_12 = to_checksum_address(os.urandom(20)) + signing_coordinator_dispatcher.register( + chain_12, l1_sender_chain_12, child_chain_12, sender=deployer + ) + + chain_13 = 13 + l1_sender_chain_13 = to_checksum_address(os.urandom(20)) + child_chain_13 = to_checksum_address(os.urandom(20)) + signing_coordinator_dispatcher.register( + chain_13, l1_sender_chain_13, child_chain_13, sender=deployer + ) + + # verify registration + sender, child = signing_coordinator_dispatcher.dispatchMap(chain_12) + assert sender == l1_sender_chain_12 + assert child == child_chain_12 + assert signing_coordinator_dispatcher.getSigningCoordinatorChild(chain_12) == child_chain_12 + + sender, child = signing_coordinator_dispatcher.dispatchMap(chain_13) + assert sender == l1_sender_chain_13 + assert child == child_chain_13 + assert signing_coordinator_dispatcher.getSigningCoordinatorChild(chain_13) == child_chain_13 + + # unregister + signing_coordinator_dispatcher.unregister(chain_12, sender=deployer) + sender, child = signing_coordinator_dispatcher.dispatchMap(chain_12) + assert sender == ZERO_ADDRESS + assert child == ZERO_ADDRESS + + sender, child = signing_coordinator_dispatcher.dispatchMap(chain_13) + assert sender == l1_sender_chain_13 + assert child == child_chain_13 + + # overwrite registration + new_l1_sender_chain_13 = to_checksum_address(os.urandom(20)) + new_child_chain_13 = to_checksum_address(os.urandom(20)) + signing_coordinator_dispatcher.register( + chain_13, new_l1_sender_chain_13, new_child_chain_13, sender=deployer + ) + sender, child = signing_coordinator_dispatcher.dispatchMap(chain_13) + assert sender == new_l1_sender_chain_13 + assert child == new_child_chain_13 + + # registering on same chain + current_chain = chain.chain_id + child_current_chain = to_checksum_address(os.urandom(20)) + with ape.reverts("L1 sender not needed for same chain"): + # l1 sender must be zero address + l1_sender_current_chain = to_checksum_address(os.urandom(20)) + signing_coordinator_dispatcher.register( + current_chain, l1_sender_current_chain, child_current_chain, sender=deployer + ) + + signing_coordinator_dispatcher.register( + current_chain, ZERO_ADDRESS, child_current_chain, sender=deployer + ) + sender, child = signing_coordinator_dispatcher.dispatchMap(current_chain) + assert sender == ZERO_ADDRESS + assert child == child_current_chain + + +def test_dispatcher_dispatch( + project, + signing_coordinator_dispatcher, + signing_coordinator_child, + signing_coordinator, + l1_sender, + signers, + deployer, +): + # register signing coordinator child for chain 42 + cohort_id = 1 + chain_id = 42 + signing_coordinator_dispatcher.register( + chain_id, l1_sender, signing_coordinator_child.address, sender=deployer + ) + + # register signing coordinator child for other chain 43 (other chain) + other_chain_id = 43 + other_chain_signing_coordinator_child = project.SigningCoordinatorChildMock.deploy( + sender=deployer, + ) + other_chain_l1_sender = project.L1SenderMock.deploy( + sender=deployer, + ) + signing_coordinator_dispatcher.register( + other_chain_id, + other_chain_l1_sender, + other_chain_signing_coordinator_child.address, + sender=deployer, + ) + + call_data = signing_coordinator_child.deployCohortMultiSig.encode_input( + cohort_id, signers, INITIAL_THRESHOLD + ) + tx = signing_coordinator.callDispatch(chain_id, call_data, sender=deployer) + assert tx.events == [signing_coordinator_child.CohortMultisigDeployed(cohort_id, ZERO_ADDRESS)] + + # call on other chain + call_data = other_chain_signing_coordinator_child.deployCohortMultiSig.encode_input( + cohort_id, signers, INITIAL_THRESHOLD + ) + tx = signing_coordinator.callDispatch(other_chain_id, call_data, sender=deployer) + assert tx.events == [ + other_chain_signing_coordinator_child.CohortMultisigDeployed(cohort_id, ZERO_ADDRESS) + ] + + # update multisig + new_threshold = 3 + call_data = signing_coordinator_child.updateMultiSigParameters.encode_input( + cohort_id, signers, new_threshold, True + ) + tx = signing_coordinator.callDispatch(chain_id, call_data, sender=deployer) + assert tx.events == [ + signing_coordinator_child.CohortMultisigUpdated( + cohort_id, ZERO_ADDRESS, signers, new_threshold, True + ) + ] diff --git a/tests/test_threshold_signing_multisig.py b/tests/test_threshold_signing_multisig.py new file mode 100644 index 000000000..06e79ed20 --- /dev/null +++ b/tests/test_threshold_signing_multisig.py @@ -0,0 +1,310 @@ +import os +import random + +import ape +import pytest +from eth_account.messages import _hash_eip191_message, encode_defunct + +from tests.conftest import ERC1271_INVALID_SIGNATURE, ERC1271_MAGIC_VALUE_BYTES + +NUM_SIGNERS = 5 +INITIAL_THRESHOLD = 2 + + +@pytest.fixture(scope="module") +def initial_signers(accounts): + _accounts = accounts[:NUM_SIGNERS] + _accounts = sorted([acc for acc in _accounts], key=lambda x: int(x.address, 16)) + return _accounts + + +@pytest.fixture(scope="module") +def new_signers(accounts): + _accounts = accounts[NUM_SIGNERS : 2 * NUM_SIGNERS] + _accounts = sorted(_accounts, key=lambda x: int(x.address, 16)) + return _accounts + + +@pytest.fixture(scope="module") +def deployer(accounts): + deployer = accounts[2 * NUM_SIGNERS + 1] + return deployer + + +@pytest.fixture() +def threshold_signing_multisig(project, deployer, initial_signers): + multisig = project.ThresholdSigningMultisig.deploy(sender=deployer) + multisig.initialize( + [signer.address for signer in initial_signers], + INITIAL_THRESHOLD, + deployer.address, + sender=deployer, + ) + + return multisig + + +def test_signing_multisig_initialization( + threshold_signing_multisig, + initial_signers, + deployer, +): + multisig = threshold_signing_multisig + + assert set(multisig.getSigners()) == set([signer.address for signer in initial_signers]) + assert multisig.threshold() == INITIAL_THRESHOLD + assert multisig.owner() == deployer.address + + +def test_signing_multisig_add_signer( + threshold_signing_multisig, + initial_signers, + new_signers, + deployer, +): + multisig = threshold_signing_multisig + + new_signer = new_signers[0] + multisig.addSigner(new_signer.address, sender=deployer) + + assert new_signer.address in multisig.getSigners() + assert multisig.isSigner(new_signer.address) is True + assert len(multisig.getSigners()) == len(initial_signers) + 1 + + +def test_signing_multisig_remove_signer( + threshold_signing_multisig, + initial_signers, + deployer, +): + multisig = threshold_signing_multisig + + signer_to_remove = initial_signers[0] + multisig.removeSigner(signer_to_remove.address, sender=deployer) + + assert signer_to_remove.address not in multisig.getSigners() + assert multisig.isSigner(signer_to_remove.address) is False + assert len(multisig.getSigners()) == len(initial_signers) - 1 + + +def test_signing_multisig_set_threshold( + threshold_signing_multisig, + initial_signers, + deployer, +): + multisig = threshold_signing_multisig + + new_threshold = INITIAL_THRESHOLD + 1 + multisig.changeThreshold(new_threshold, sender=deployer) + + assert multisig.threshold() == new_threshold + + +def test_signing_multisig_unauthorized_access( + threshold_signing_multisig, + initial_signers, + new_signers, +): + multisig = threshold_signing_multisig + + unauthorized_user = new_signers[0] + + with ape.reverts(f"account={unauthorized_user.address}"): + multisig.addSigner(new_signers[1].address, sender=unauthorized_user) + + with ape.reverts(f"account={unauthorized_user.address}"): + multisig.removeSigner(initial_signers[0].address, sender=unauthorized_user) + + with ape.reverts(f"account={unauthorized_user.address}"): + multisig.changeThreshold(3, sender=unauthorized_user) + + with ape.reverts(f"account={unauthorized_user.address}"): + new_signer = new_signers[0] + multisig.replaceSigner( + initial_signers[0].address, new_signer.address, sender=unauthorized_user + ) + + +def test_signing_multisig_threshold_limits( + threshold_signing_multisig, + initial_signers, + deployer, +): + multisig = threshold_signing_multisig + + # Test setting threshold to zero + with ape.reverts("Invalid threshold"): + multisig.changeThreshold(0, sender=deployer) + + # Test setting threshold greater than number of signers + with ape.reverts("Invalid threshold"): + multisig.changeThreshold(len(initial_signers) + 1, sender=deployer) + + +def test_signing_multisig_replace_signer( + threshold_signing_multisig, + initial_signers, + new_signers, + deployer, +): + multisig = threshold_signing_multisig + + signer_to_replace = initial_signers[0] + new_signer = new_signers[0] + + multisig.replaceSigner(signer_to_replace.address, new_signer.address, sender=deployer) + + assert signer_to_replace.address not in multisig.getSigners() + assert multisig.isSigner(signer_to_replace.address) is False + assert new_signer.address in multisig.getSigners() + assert multisig.isSigner(new_signer.address) is True + assert len(multisig.getSigners()) == len(initial_signers) + + +def test_signing_multisig_is_valid_signature( + threshold_signing_multisig, + initial_signers, + deployer, +): + multisig = threshold_signing_multisig + + message = b"Test message" + signable_message = encode_defunct(primitive=message) + data_hash = _hash_eip191_message(signable_message) + + # Simulate signatures from initial signers + signatures = b"" + for signer in initial_signers[:INITIAL_THRESHOLD]: + signature = signer.sign_message(signable_message).encode_rsv() + signatures += signature + + is_valid = multisig.isValidSignature(data_hash, signatures) + assert is_valid == ERC1271_MAGIC_VALUE_BYTES + + with ape.reverts("Invalid threshold of signatures"): + insufficient_threshold_signatures = signatures[:-65] + _ = multisig.isValidSignature(data_hash, insufficient_threshold_signatures) + + is_valid = multisig.isValidSignature(data_hash, os.urandom(len(signatures))) + assert is_valid != ERC1271_MAGIC_VALUE_BYTES + assert is_valid == ERC1271_INVALID_SIGNATURE + + +def test_signing_multisig_update_parameters_bulk_replacement( + threshold_signing_multisig, + initial_signers, + new_signers, + deployer, +): + new_threshold = INITIAL_THRESHOLD + 1 + threshold_signing_multisig.updateMultiSigParameters( + [signer.address for signer in new_signers], + new_threshold, + True, # totally replace old signers + sender=deployer, + ) + + updated_signers = set(threshold_signing_multisig.getSigners()) + assert len(updated_signers) == NUM_SIGNERS + assert updated_signers == set([signer.address for signer in new_signers]) + assert threshold_signing_multisig.threshold() == new_threshold + for old_signer in initial_signers: + assert old_signer.address not in updated_signers + assert threshold_signing_multisig.isSigner(old_signer.address) is False + + message = b"Test message" + signable_message = encode_defunct(primitive=message) + data_hash = _hash_eip191_message(signable_message) + + # check that old signers can no longer perform actions + # simulate signatures from old signers + old_signatures = b"" + for signer in initial_signers[:INITIAL_THRESHOLD]: + signature = signer.sign_message(signable_message).encode_rsv() + old_signatures += signature + with ape.reverts("Invalid threshold of signatures"): + _ = threshold_signing_multisig.isValidSignature(data_hash, old_signatures) + + # try again with updated threshold - should still fail + old_signatures = b"" + for signer in initial_signers[:new_threshold]: + signature = signer.sign_message(signable_message).encode_rsv() + old_signatures += signature + is_valid = threshold_signing_multisig.isValidSignature(data_hash, old_signatures) + assert is_valid != ERC1271_MAGIC_VALUE_BYTES + assert is_valid == ERC1271_INVALID_SIGNATURE + + # check the new signers can successfully sign + # simulate signatures from new signers + new_signatures = b"" + for signer in new_signers[:new_threshold]: + signature = signer.sign_message(signable_message).encode_rsv() + new_signatures += signature + is_valid = threshold_signing_multisig.isValidSignature(data_hash, new_signatures) + assert is_valid == ERC1271_MAGIC_VALUE_BYTES + + +def test_signing_multisig_update_parameters_bulk_change_no_replacement( + threshold_signing_multisig, + initial_signers, + new_signers, + deployer, +): + new_threshold = INITIAL_THRESHOLD + 1 + threshold_signing_multisig.updateMultiSigParameters( + [signer.address for signer in new_signers], + new_threshold, + False, # don't replace, bulk add + sender=deployer, + ) + + updated_signers = set(threshold_signing_multisig.getSigners()) + # both original and new signers are valid + assert len(updated_signers) == NUM_SIGNERS * 2 + for signer in initial_signers: + assert signer.address in updated_signers + assert threshold_signing_multisig.isSigner(signer.address) is True + for signer in new_signers: + assert signer.address in updated_signers + assert threshold_signing_multisig.isSigner(signer.address) is True + assert threshold_signing_multisig.threshold() == new_threshold + + message = b"Test message" + signable_message = encode_defunct(primitive=message) + data_hash = _hash_eip191_message(signable_message) + + # check that original signers can still sign + # simulate signatures from old signers + original_signatures = b"" + for signer in initial_signers[:INITIAL_THRESHOLD]: + signature = signer.sign_message(signable_message).encode_rsv() + original_signatures += signature + with ape.reverts("Invalid threshold of signatures"): + _ = threshold_signing_multisig.isValidSignature(data_hash, original_signatures) + + # try again with updated threshold - should pass + original_signatures = b"" + for signer in initial_signers[:new_threshold]: + signature = signer.sign_message(signable_message).encode_rsv() + original_signatures += signature + is_valid = threshold_signing_multisig.isValidSignature(data_hash, original_signatures) + assert is_valid == ERC1271_MAGIC_VALUE_BYTES + + # simulate signatures from new signers + new_signatures = b"" + for signer in new_signers[:new_threshold]: + signature = signer.sign_message(signable_message).encode_rsv() + new_signatures += signature + is_valid = threshold_signing_multisig.isValidSignature(data_hash, new_signatures) + assert is_valid == ERC1271_MAGIC_VALUE_BYTES + + # signature mix of old and new signers still valid + all_signers = [*initial_signers, *new_signers] + random_signers = random.sample(all_signers, NUM_SIGNERS) + random_signers = sorted(random_signers, key=lambda x: int(x.address, 16)) + mixed_signatures = b"" + for signer in random_signers: + signature = signer.sign_message(signable_message).encode_rsv() + mixed_signatures += signature + is_valid = threshold_signing_multisig.isValidSignature(data_hash, mixed_signatures) + assert is_valid == ERC1271_MAGIC_VALUE_BYTES