From ce8a00a39fe797d23e5f6748dc94297608d2f7de Mon Sep 17 00:00:00 2001 From: tadeohepperle <62739623+tadeohepperle@users.noreply.github.com> Date: Mon, 22 Apr 2024 00:20:21 +0000 Subject: [PATCH] Update Artifacts (auto-generated) --- artifacts/demo_chain_specs/polkadot.json | 11 +- artifacts/polkadot_metadata_full.scale | Bin 288423 -> 413307 bytes artifacts/polkadot_metadata_small.scale | Bin 59334 -> 90484 bytes artifacts/polkadot_metadata_tiny.scale | Bin 37597 -> 58477 bytes .../src/full_client/codegen/polkadot.rs | 18415 +++++++++++++--- 5 files changed, 14848 insertions(+), 3578 deletions(-) diff --git a/artifacts/demo_chain_specs/polkadot.json b/artifacts/demo_chain_specs/polkadot.json index 9fb30fb369..72c7a8f6fa 100644 --- a/artifacts/demo_chain_specs/polkadot.json +++ b/artifacts/demo_chain_specs/polkadot.json @@ -34,7 +34,8 @@ "/dns/dot14.rotko.net/tcp/35214/wss/p2p/12D3KooWPyEvPEXghnMC67Gff6PuZiSvfx3fmziKiPZcGStZ5xff", "/dns/dot14.rotko.net/tcp/33214/p2p/12D3KooWPyEvPEXghnMC67Gff6PuZiSvfx3fmziKiPZcGStZ5xff", "/dns/ibp-boot-polkadot.luckyfriday.io/tcp/30333/p2p/12D3KooWEjk6QXrZJ26fLpaajisJGHiz6WiQsR8k7mkM9GmWKnRZ", - "/dns/ibp-boot-polkadot.luckyfriday.io/tcp/30334/wss/p2p/12D3KooWEjk6QXrZJ26fLpaajisJGHiz6WiQsR8k7mkM9GmWKnRZ" + "/dns/ibp-boot-polkadot.luckyfriday.io/tcp/30334/wss/p2p/12D3KooWEjk6QXrZJ26fLpaajisJGHiz6WiQsR8k7mkM9GmWKnRZ", + "/dns/boot-polkadot.luckyfriday.io/tcp/443/wss/p2p/12D3KooWAdyiVAaeGdtBt6vn5zVetwA4z4qfm9Fi2QCSykN1wTBJ" ], "chainType": "Live", "forkBlocks": null, @@ -43,10 +44,10 @@ }, "id": "polkadot", "lightSyncState": { - "babeEpochChanges": "0x0480df609c40171d0f62924a7d83db3a5c52c2f78dbe0dab0497b8786e659872e8daff340101734e031100000000d35703110000000004877d77dc713f5db844a860efb4ea0372343b3deca76cc7fa0827780217a6c4d33609350101d3570311000000003361031100000000046204e22a5bed51dced77343ac746411fa965babf73ef76b57e185eebd64f32af8d123501013361031100000000936a03110000000000000c6204e22a5bed51dced77343ac746411fa965babf73ef76b57e185eebd64f32af8d123501011f2100000000000033610311000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000e033368bc2edee96d72e43448824a642d53939c6c190693971b05ccd1054464a01000000000000004ceef9b2b8e3b5cd971f7557c3a3ad02c9c7a7bbc7365c2db5622fa74853790d0100000000000000aca7a86b6fcf25daa7f0767bfe36b284f3100dc1ee4dcc971fbb3244bb57221c01000000000000004ea4871b3ccdd1276ee604eb0e06aa4a62536dfe8fb053042a8f36caddb94c510100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b01000000000000006869737a2873891c0e4ef80a69e331f64ffc3663c9f3cdf86b440bb41827a252010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000a6f10752adf745ad55866031836194ad027ed8d6710d9853ef62982bcf45fd0e010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec326540100000000000000ac8b2b59f77eb5f3725961767878166a3817747018f18cf48c933e284320b90e0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c0100000000000000caa53cf3e8ff5604d82bac45868bf3e25115f7e8f4d1cdfada68f8487d03e91b01000000000000000219b9856c2d50592c3821d7df9329795c9f6bc1e8d62b76072a4289617e5a060100000000000000e4ba5ffce05c90e6a5eea52b15922b6b3a78d13ca98f53fdbe08e5c24ce3c8410100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000001ee57665488b5ad6f7358157b73009a4ec4b14b4a03c976487e188f54bff7d640100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b01000000000000004c50abd9279d48439dc8f93aaf679e47981f25372b63d838786dcaf7a3f8d0740100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e093601000000000000002803ef26679fce0495aa4066e053c4fa9cda5bfb54e24497fcb1bcef2902cb400100000000000000125becf853d8dc03bc97114ca0c751f6045bd7ef5580e58d32e3b47d7ac5b60301000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000562fd7529c92f9370dd6d7ce60d06ea4a826cbefa238231993ecfc9e7725ca240100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f06787717010000000000000090708d1a49ef0acfea32147a109d08d9aa15ee975b5237d56ca9b8e324108d0f0100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e0100000000000000d6152835cb59040a40a5a4ee3a4d481937b7ee9d4a5649abeac6c535d9e177080100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000ee0c4369d7e5dca53a68ef223db7c858f2a97f47394c7bc678a8edf719a49e13010000000000000024efac2829d615703c5375dae24d394207fdd26d9522bad7af6bac64ede127020100000000000000ac0596c32a2144b2214a588fa0dc2e589dd829395a569b1f60ee8db6a2b5b111010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e702101000000000000000e76ad5033ec80da424503f80ce2bff64d8cad0e807d7c6516a369b46ed0355f01000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000bad91c9aefe173441dae1f273e55090706d412b0723d39bd6c3af053feb183200100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c5390100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b010000000000000092bb282d46ed819e46fb3ee929f7662354fd095b67a8ed51326b47e83f86653a010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000012e4e8f29b147f5596fa9f59ccdd35467884318f010063feac87e8985b00ba7f010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e5101000000000000004628f93047462b43ec0886f2c7d7318ddad1764fd32af4f32ef0b2dcfa4b297a010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000005673f82330a1ee6e6889f745fe15c353f5f8989e4a281e8aa53e38ce1e74556d01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa740100000000000000a64dd29103d43e3e898a41f3630ff88b2420953febb931c70ff543673efa251b010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000c473d994ae0f9b8532523f5ebc52014bb3fad20e68770fceaf80fa105cbefd0d0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d010000000000000002ecd96c1f4fe196d53f262e75770f1a81c80b5764b01383fb77e20684f2096d0100000000000000fcccf8e328b4cc968af52a23f6c960b5e34241047b630c19a0661ace6b9c273b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b010000000000000094af0a39f196a145c9406ace38b2b2b9b9ccec2bf2da2e95d0b0b8507b6f38560100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a520100000000000000187fcd65da5b05c572bd1809b465ee23d8139deca61327a33a1cbbeccd5b335a01000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000125f4bb2b8d56e62b303ed525cce2e08f1baf016c3e89f28df7f61a3222ddf4e010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000566948c62b699e382e5379592d1ad3e1823640d386936142cb9b82915ed02d1801000000000000009493e6de34e09c9679b6dca602e38d8c07abb77b3cc487ae3a80661968caa37f0100000000000000dab69c099895a293508bafd5bd96a1f5ed7193012d71d546d4792f6452bec619010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000ba78c26db96a9ce3ccc2980dfef7346042ade9769f95afaea559f784af167a5d0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d4540100000000000000dafd1b81e8401d6715a61ca7c3d32920b24cd28a8708ecdb65b5e7c557d14c4401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d010000000000000032f75d00cbb3125b7bbbea02cefa67be8dad66d54e84f7c116ddd0dd2e3d9f490100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f6100100000000000000104b41830f092484a00f2d595b8aac969bca6cbf7f386efdd0f79ee9a8c0201101000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c840010000000000000042bbfd10e95a6a1a57b34cbe01ab26605536797742d6d24394ebe95f87bd925c010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000f6147fc504809de982f75aa2a806945bad883bf3854f6cdecf6f8a7b79b998540100000000000000009463e59f6b021a1dbdbf65e56f568ac5736baf96470440d7123605a4bcd93f0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000084a7633f080e6223b983763cc426583d4bd923709b327a38e5ebf4167f6767770100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a252010000000000000052b41700df65ea66ffc6cbae47c04a2f20618f5d62ce1ac9304313373d39fe440100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000e4a9f30dd10e786b66881c8811a0e1042df8b7bfa90ee55cbce2f4a9d1dcff5a01000000000000002ea8960211dab2883e7b15dc18336ccf12f096572c66831279c9a5e2492ef51b01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e6601000000000000005c9b116ed7527b0521213299bee8025e89136d819295fa16ef7cf4f4b86887490100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e01000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e002b608a4148a8616e5435dfaa8681d0012bd78fea4502541249d97f56acc640100000000000000a8731d355eefdfbdb7fb12cfa5a280c0b1e408aca264ef585d42bf97fcfba1160100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed5264010000000000000022350f7b389967ec6e8c8b6c56ac75a138db742abcff27b1d6b3bfab894d187201000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000eedea8652413b5a97c1eda13e1e050b777bd0a8ca31dafd63aeab576a68fb75e01000000000000001836b6f7bcdf39ec4f786ee982799a549605b62f384a74981bf9de018c26fd430100000000000000245a9f1c784e83aa6e1a22b7a560de42348ae1c3402060929d669f110da1b7490100000000000000dc4ae9ca42fe496af7a466de59735813691d9c050f3256c3d4a96664cb6f9f6701000000000000005c25d331b2e023d12ee512689c3ea95edaadc300c9dc804e98806117f2edf57c01000000000000006205ea8c9da2e39792b9504100d0ce7eec4b9c732297afea3c2a885fe4f5832401000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000c63e31fd558807e07f9c7dc51f8fa8110679bb1b1cf5585e56d0b6164179b9790100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000dcb8d42bd4e3b7b597542ea3dbbc6ac36058a9b73ca50b23bcc7fe19d08bbc580100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c2301000000000000001e534cbbe982369a968006efa465cf2a16807a88a5c877d45f090192ea619c60010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000fe9d62e17387326c0e4b75697b2f0fbdff9506992e745d61b4c536c4dc10f57d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f0100000000000000464d95a7c8cce76af088d8f781e3073fc194333ab20956b4dd2c25d4a29ac56d01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b200100000000000000fc6b68c2f556cb4bbfb09cea4ee39e47aceb7809408e38ae4696d4caeed3c91b01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000005c3615a5e2072a618f0e434f7c572f4e4b1a89348dfe0f7939c99de095d54a55010000000000000006adb1e6e78084fd5e5df37fafc180d1ed84377ca41de3b5ca43b764f0cb190901000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000005e0fa84f762f7d6e4c4b0c18a86e1b7da6cb4fe7dfcf6b5c0056a7ccd8eb201401000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000006eebb90d453e3e26540730fe99339d907a0e46365f6f2c8e2bd1a2dc83c2897e010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000000f79cec5a6b6b70f768ed05e94d2cfd70b13bc58fa16e62d742ee49aabe967e010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000009295a1f023157921d346b73484b120d46048382107015aa9ed998f1fae95970e01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f076010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000d8de542a748c14224ee7faa16157727c852ce502a45b408de0975c88a39c690f0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f01000000000000008af88ab005ea3b1a0b3412054c721e574c4b4469e231aa487d9132946e42bb690100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b0100000000000000e08b1d1e40c5452afab2df7f9ce391eab8fbe0096e9fe744c9b72c414127722f010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a50030100000000000000163687f38841bbbd2b93787f7f65cc74a2ab94478888abce52207e1b81f46c4d0100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000002c6ef636d3bba8ef79dfc0e6d77bcb38426b54c92b764b29115d25f3af9c871601000000000000007a661c99fd40492b4893407b03822464e7d4853e9ba47fc9e9960c3800d6725f01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000dc0aaa8a9d617e5d1ce58d8279747ac87766edfe7028c9c5a8793ea3ba9c94450100000000000000386f18b82ffe824f7ee1fda0f511d5112dee1c677bee0069f3d8e3d8be1a321d010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000e4e005984bbae507a03d158ea8ca3a87505ae3e8723d8f5bfffccb63a23ea61c01000000000000008a40c3acc862dcac958866b738b304be7d84c33d9420b0747eb82aaa21b8c40c010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e0100000000000000769d9f8b45bcbed8fd84b86d2203ee20d199212007387b10216f8fd9441dfa28010000000000000092c996c1fedd09190bb0fa8cc79e4075ad79eca3d6895d2a99d20e6f89e4182b0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c4601000000000000004aa3c1b56e8c58951fb89119ce93f6dc3d42f114ee1679cc9bbb154d57f422360100000000000000b81bd21787e12343691c1fd404bb7f939d53b3c067a82aedcc0b0aca1e8fc17b0100000000000000a8c366514ae829385912b04b0192e934a20045b36cf1911bccc4c064d6d3c461010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000002e1c4e3a1474325086c1ebf51c0cb6d335242921c645b7d0e070d9aa092afa68010000000000000012bfb35bdbc174f07745b29eb649c6c896fa7f38b13a728fedc4a4853a75014e01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000024ad842dcdc5f4d84262c6aee5116e88116fb191dbbd1331453202d3583b1f440100000000000000c2a54db27458236d0902be95fe0e09227a0c07320855f1f1ead7e58bcaf0e3090100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000da132f2f832c8e2a4e268b4faa923d9449c94ebe66f03fa0ac4303f2ceb1b05301000000000000007e0da5500e4e91faec6b7c3763c52058a7a9350be3009f2fe00a8e3bf0c59e790100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c01000000000000009623ad5bd17b75cc58839c76474636ad5675c519e15f090ec008eb626db73b14010000000000000092fa7c1aa1320b16bf2fd9a0e11a9faf91c02ecaab551ff29bd77958206dca68010000000000000004000000000000000280df609c40171d0f62924a7d83db3a5c52c2f78dbe0dab0497b8786e659872e8daff3401011d21000000000000734e0311000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000e033368bc2edee96d72e43448824a642d53939c6c190693971b05ccd1054464a01000000000000004ceef9b2b8e3b5cd971f7557c3a3ad02c9c7a7bbc7365c2db5622fa74853790d0100000000000000aca7a86b6fcf25daa7f0767bfe36b284f3100dc1ee4dcc971fbb3244bb57221c0100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b01000000000000006869737a2873891c0e4ef80a69e331f64ffc3663c9f3cdf86b440bb41827a252010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000a6f10752adf745ad55866031836194ad027ed8d6710d9853ef62982bcf45fd0e01000000000000004eac292b47117bc6f534374e202ab80c0d3738db05910a29bf263408d547661c010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec326540100000000000000ac8b2b59f77eb5f3725961767878166a3817747018f18cf48c933e284320b90e0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c0100000000000000caa53cf3e8ff5604d82bac45868bf3e25115f7e8f4d1cdfada68f8487d03e91b01000000000000003057a5ccdbce651c71b1ce9d48e9fa23e6720e8e2bbf52f65a0ed14e4a6f3f700100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000001ee57665488b5ad6f7358157b73009a4ec4b14b4a03c976487e188f54bff7d640100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b01000000000000004c50abd9279d48439dc8f93aaf679e47981f25372b63d838786dcaf7a3f8d074010000000000000072a85a9dcc0af833b5a21a51ecbc4a9855c2bef8848e080ed70ac48cd1efdd5f0100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e093601000000000000002803ef26679fce0495aa4066e053c4fa9cda5bfb54e24497fcb1bcef2902cb400100000000000000125becf853d8dc03bc97114ca0c751f6045bd7ef5580e58d32e3b47d7ac5b60301000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a010000000000000080c4603361b35d83eb9195126bfd81d8f1c49182c48e8f18e7ea772ff2bfd9400100000000000000562fd7529c92f9370dd6d7ce60d06ea4a826cbefa238231993ecfc9e7725ca240100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f06787717010000000000000090708d1a49ef0acfea32147a109d08d9aa15ee975b5237d56ca9b8e324108d0f0100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000ee0c4369d7e5dca53a68ef223db7c858f2a97f47394c7bc678a8edf719a49e13010000000000000024efac2829d615703c5375dae24d394207fdd26d9522bad7af6bac64ede1270201000000000000001c5981afeb58dd37f7ea785c1ac804fa790b9ec8a098b7d80ef2342dbb41d06c0100000000000000ac0596c32a2144b2214a588fa0dc2e589dd829395a569b1f60ee8db6a2b5b111010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e702101000000000000000e76ad5033ec80da424503f80ce2bff64d8cad0e807d7c6516a369b46ed0355f01000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000bad91c9aefe173441dae1f273e55090706d412b0723d39bd6c3af053feb183200100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c5390100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b010000000000000092bb282d46ed819e46fb3ee929f7662354fd095b67a8ed51326b47e83f86653a010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000012e4e8f29b147f5596fa9f59ccdd35467884318f010063feac87e8985b00ba7f010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e51010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000005673f82330a1ee6e6889f745fe15c353f5f8989e4a281e8aa53e38ce1e74556d01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa74010000000000000006a45181daed2665c4725d23a29578240c003af72848d0d088359abec0a62d110100000000000000a64dd29103d43e3e898a41f3630ff88b2420953febb931c70ff543673efa251b010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000c473d994ae0f9b8532523f5ebc52014bb3fad20e68770fceaf80fa105cbefd0d0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d010000000000000002ecd96c1f4fe196d53f262e75770f1a81c80b5764b01383fb77e20684f2096d0100000000000000fcccf8e328b4cc968af52a23f6c960b5e34241047b630c19a0661ace6b9c273b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b010000000000000094af0a39f196a145c9406ace38b2b2b9b9ccec2bf2da2e95d0b0b8507b6f38560100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a520100000000000000187fcd65da5b05c572bd1809b465ee23d8139deca61327a33a1cbbeccd5b335a01000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000125f4bb2b8d56e62b303ed525cce2e08f1baf016c3e89f28df7f61a3222ddf4e010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000566948c62b699e382e5379592d1ad3e1823640d386936142cb9b82915ed02d1801000000000000009493e6de34e09c9679b6dca602e38d8c07abb77b3cc487ae3a80661968caa37f0100000000000000dab69c099895a293508bafd5bd96a1f5ed7193012d71d546d4792f6452bec619010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000ba78c26db96a9ce3ccc2980dfef7346042ade9769f95afaea559f784af167a5d01000000000000001a6ae3ba55d3b68146f9b366df0ff4300d8e4cab26dc3892c1207c783caac92f0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d45401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f6100100000000000000104b41830f092484a00f2d595b8aac969bca6cbf7f386efdd0f79ee9a8c0201101000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c840010000000000000042bbfd10e95a6a1a57b34cbe01ab26605536797742d6d24394ebe95f87bd925c010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000009463e59f6b021a1dbdbf65e56f568ac5736baf96470440d7123605a4bcd93f0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000084a7633f080e6223b983763cc426583d4bd923709b327a38e5ebf4167f6767770100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a2520100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000e4a9f30dd10e786b66881c8811a0e1042df8b7bfa90ee55cbce2f4a9d1dcff5a0100000000000000c6ac76a6bb70dfe6f7bf1e96793c011842148482eb1320b8deeaf0a8d1f1c12101000000000000002ea8960211dab2883e7b15dc18336ccf12f096572c66831279c9a5e2492ef51b01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e660100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e01000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e002b608a4148a8616e5435dfaa8681d0012bd78fea4502541249d97f56acc640100000000000000a8731d355eefdfbdb7fb12cfa5a280c0b1e408aca264ef585d42bf97fcfba1160100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed5264010000000000000022350f7b389967ec6e8c8b6c56ac75a138db742abcff27b1d6b3bfab894d187201000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a5240100000000000000eedea8652413b5a97c1eda13e1e050b777bd0a8ca31dafd63aeab576a68fb75e01000000000000001836b6f7bcdf39ec4f786ee982799a549605b62f384a74981bf9de018c26fd430100000000000000245a9f1c784e83aa6e1a22b7a560de42348ae1c3402060929d669f110da1b7490100000000000000dc4ae9ca42fe496af7a466de59735813691d9c050f3256c3d4a96664cb6f9f6701000000000000005c25d331b2e023d12ee512689c3ea95edaadc300c9dc804e98806117f2edf57c01000000000000006205ea8c9da2e39792b9504100d0ce7eec4b9c732297afea3c2a885fe4f5832401000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000c63e31fd558807e07f9c7dc51f8fa8110679bb1b1cf5585e56d0b6164179b9790100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000dcb8d42bd4e3b7b597542ea3dbbc6ac36058a9b73ca50b23bcc7fe19d08bbc580100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c2301000000000000001e534cbbe982369a968006efa465cf2a16807a88a5c877d45f090192ea619c60010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c4914201000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b200100000000000000fc6b68c2f556cb4bbfb09cea4ee39e47aceb7809408e38ae4696d4caeed3c91b01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000005c3615a5e2072a618f0e434f7c572f4e4b1a89348dfe0f7939c99de095d54a55010000000000000006adb1e6e78084fd5e5df37fafc180d1ed84377ca41de3b5ca43b764f0cb190901000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000005e0fa84f762f7d6e4c4b0c18a86e1b7da6cb4fe7dfcf6b5c0056a7ccd8eb201401000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000006eebb90d453e3e26540730fe99339d907a0e46365f6f2c8e2bd1a2dc83c2897e010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000000f79cec5a6b6b70f768ed05e94d2cfd70b13bc58fa16e62d742ee49aabe967e010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000009295a1f023157921d346b73484b120d46048382107015aa9ed998f1fae95970e01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000f0c0cc64f8973ebc2322273e684b4f73f412503f124c130be0be1589718cdd780100000000000000c2ee94dce21b2c360a47081a4f30a9c9c14a6fa6cb71ca69a44e23116015c033010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a01000000000000009a2efedf54df076e24d204b3921a835a47cd3afa7cc50a25b756bc6d72a13c470100000000000000d8de542a748c14224ee7faa16157727c852ce502a45b408de0975c88a39c690f01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d1097401998560100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f01000000000000008af88ab005ea3b1a0b3412054c721e574c4b4469e231aa487d9132946e42bb690100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000c69e90c4bd0bd56246bbc856d4f2f3dbffd2d4e0d7afc92b7a0516e452db30290100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de320100000000000000b64ba96a10f5387463bc1d09b8fc05a810215959727960267a6ba046ecb32942010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b0100000000000000e08b1d1e40c5452afab2df7f9ce391eab8fbe0096e9fe744c9b72c414127722f010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a50030100000000000000163687f38841bbbd2b93787f7f65cc74a2ab94478888abce52207e1b81f46c4d0100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe83233001000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000002c6ef636d3bba8ef79dfc0e6d77bcb38426b54c92b764b29115d25f3af9c871601000000000000007a661c99fd40492b4893407b03822464e7d4853e9ba47fc9e9960c3800d6725f01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000dc0aaa8a9d617e5d1ce58d8279747ac87766edfe7028c9c5a8793ea3ba9c94450100000000000000386f18b82ffe824f7ee1fda0f511d5112dee1c677bee0069f3d8e3d8be1a321d010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000e4e005984bbae507a03d158ea8ca3a87505ae3e8723d8f5bfffccb63a23ea61c01000000000000008a40c3acc862dcac958866b738b304be7d84c33d9420b0747eb82aaa21b8c40c010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e0100000000000000769d9f8b45bcbed8fd84b86d2203ee20d199212007387b10216f8fd9441dfa280100000000000000f814da51f3b4325f169ab9aa49354dac5666473330b3e0fb19268962eee96706010000000000000054a672d14f2d201c99ca725fae26f20cee76af6cc7f1113feeb82e837bc59c4d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c460100000000000000b81bd21787e12343691c1fd404bb7f939d53b3c067a82aedcc0b0aca1e8fc17b0100000000000000a8c366514ae829385912b04b0192e934a20045b36cf1911bccc4c064d6d3c461010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d610100000000000000a61667ea6442054b56111477f57ecf39b6e90480bfadf54c3e6cb5ac3a3e275801000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000002e1c4e3a1474325086c1ebf51c0cb6d335242921c645b7d0e070d9aa092afa68010000000000000012bfb35bdbc174f07745b29eb649c6c896fa7f38b13a728fedc4a4853a75014e01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000024ad842dcdc5f4d84262c6aee5116e88116fb191dbbd1331453202d3583b1f440100000000000000c2a54db27458236d0902be95fe0e09227a0c07320855f1f1ead7e58bcaf0e3090100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000da132f2f832c8e2a4e268b4faa923d9449c94ebe66f03fa0ac4303f2ceb1b0530100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c01000000000000009623ad5bd17b75cc58839c76474636ad5675c519e15f090ec008eb626db73b14010000000000000043b942134983bc52d73b298f4623aedf1a6b2081fae9cff0f3852ee83ca9b2e60100000000000000040000000000000002877d77dc713f5db844a860efb4ea0372343b3deca76cc7fa0827780217a6c4d336093501011e21000000000000d3570311000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000008008c1b7061a2402634fc15d3849e2913863beb9f55024bc8cc7fa7d6e397817010000000000000024a51a9bdb67213626d1b52bd8dbc0e9b94ea88ea417aa17b56212d1cea3e1780100000000000000e033368bc2edee96d72e43448824a642d53939c6c190693971b05ccd1054464a01000000000000004ceef9b2b8e3b5cd971f7557c3a3ad02c9c7a7bbc7365c2db5622fa74853790d0100000000000000aca7a86b6fcf25daa7f0767bfe36b284f3100dc1ee4dcc971fbb3244bb57221c01000000000000004ea4871b3ccdd1276ee604eb0e06aa4a62536dfe8fb053042a8f36caddb94c510100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000009cb389c209afbebda2b12113e0266b3d30f46e2a91aaf4451c193d640288357101000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f7201000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b01000000000000006869737a2873891c0e4ef80a69e331f64ffc3663c9f3cdf86b440bb41827a252010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f700100000000000000a6f10752adf745ad55866031836194ad027ed8d6710d9853ef62982bcf45fd0e010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec326540100000000000000ac8b2b59f77eb5f3725961767878166a3817747018f18cf48c933e284320b90e0100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c0100000000000000caa53cf3e8ff5604d82bac45868bf3e25115f7e8f4d1cdfada68f8487d03e91b01000000000000000219b9856c2d50592c3821d7df9329795c9f6bc1e8d62b76072a4289617e5a060100000000000000e4ba5ffce05c90e6a5eea52b15922b6b3a78d13ca98f53fdbe08e5c24ce3c8410100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc35310010000000000000072ed7192625403acef94aa9189f9f179deb89e60478816ca96c79b742f757e750100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c0100000000000000e07d5b19d98a6f8ef5c964b507fcd88f500a2a0a9afd5cffe9d4e3f74d83b27f01000000000000001ee57665488b5ad6f7358157b73009a4ec4b14b4a03c976487e188f54bff7d640100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b01000000000000004c50abd9279d48439dc8f93aaf679e47981f25372b63d838786dcaf7a3f8d0740100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000006ec27dfa7ac9d35eb002c55d3e4d56b4df928dd5c44323ac228305741c9e093601000000000000002803ef26679fce0495aa4066e053c4fa9cda5bfb54e24497fcb1bcef2902cb400100000000000000125becf853d8dc03bc97114ca0c751f6045bd7ef5580e58d32e3b47d7ac5b60301000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000562fd7529c92f9370dd6d7ce60d06ea4a826cbefa238231993ecfc9e7725ca240100000000000000a20797f3a8669a909adb22a3aee2844dba82d231cc33f5d9be0e2c533cb82a6701000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f06787717010000000000000090708d1a49ef0acfea32147a109d08d9aa15ee975b5237d56ca9b8e324108d0f0100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e0100000000000000d6152835cb59040a40a5a4ee3a4d481937b7ee9d4a5649abeac6c535d9e177080100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c560100000000000000ee0c4369d7e5dca53a68ef223db7c858f2a97f47394c7bc678a8edf719a49e13010000000000000024efac2829d615703c5375dae24d394207fdd26d9522bad7af6bac64ede127020100000000000000ac0596c32a2144b2214a588fa0dc2e589dd829395a569b1f60ee8db6a2b5b111010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e702101000000000000000e76ad5033ec80da424503f80ce2bff64d8cad0e807d7c6516a369b46ed0355f01000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000bad91c9aefe173441dae1f273e55090706d412b0723d39bd6c3af053feb183200100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c5390100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b010000000000000092bb282d46ed819e46fb3ee929f7662354fd095b67a8ed51326b47e83f86653a010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb5501000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000b288a9832e07bef83c5a8ca72c5a5583b321672ba7c6cdd44a971f855d32d95c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000012e4e8f29b147f5596fa9f59ccdd35467884318f010063feac87e8985b00ba7f010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e5101000000000000004628f93047462b43ec0886f2c7d7318ddad1764fd32af4f32ef0b2dcfa4b297a010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000005673f82330a1ee6e6889f745fe15c353f5f8989e4a281e8aa53e38ce1e74556d01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa740100000000000000a64dd29103d43e3e898a41f3630ff88b2420953febb931c70ff543673efa251b010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000c473d994ae0f9b8532523f5ebc52014bb3fad20e68770fceaf80fa105cbefd0d0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d010000000000000002ecd96c1f4fe196d53f262e75770f1a81c80b5764b01383fb77e20684f2096d0100000000000000fcccf8e328b4cc968af52a23f6c960b5e34241047b630c19a0661ace6b9c273b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b010000000000000094af0a39f196a145c9406ace38b2b2b9b9ccec2bf2da2e95d0b0b8507b6f38560100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d24010000000000000086c1922e4ed392d72e0fbc0ee28e7ec0a8ba2b33470330a606cec9a159a79626010000000000000036465f4be77147914969ea78f8e39610310679011dfbb6137dab12e18a687a520100000000000000187fcd65da5b05c572bd1809b465ee23d8139deca61327a33a1cbbeccd5b335a01000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000125f4bb2b8d56e62b303ed525cce2e08f1baf016c3e89f28df7f61a3222ddf4e010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000566948c62b699e382e5379592d1ad3e1823640d386936142cb9b82915ed02d1801000000000000009493e6de34e09c9679b6dca602e38d8c07abb77b3cc487ae3a80661968caa37f0100000000000000dab69c099895a293508bafd5bd96a1f5ed7193012d71d546d4792f6452bec619010000000000000004734733edcd9cf662389208fb8ccb5f274a7db8187ccc53dc84250f8599d54d01000000000000004e1b48e67c1e62e46add39fa523b956946228ea0f08bd9d20ced798cfc9a0f5b0100000000000000ba78c26db96a9ce3ccc2980dfef7346042ade9769f95afaea559f784af167a5d0100000000000000faa6ae896c2d1040e495acbdcd8d90a02ccb17ba6e507efa2f7deacb3b28466e0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000907ff7ac1e6c451d236c05c8d3f85640d9f9472d6a30115fc26135dae020e6380100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb190100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d4540100000000000000dafd1b81e8401d6715a61ca7c3d32920b24cd28a8708ecdb65b5e7c557d14c4401000000000000005eac8ac37c95fc11921839550a30ef071bbc80fb10ea1482cc67818e184d544a0100000000000000ea2b17bd1b69a7b442dd000db0f12f0bd4bf7a87a540427986bd32f3d3bd55580100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d010000000000000032f75d00cbb3125b7bbbea02cefa67be8dad66d54e84f7c116ddd0dd2e3d9f490100000000000000d6acabff06fe9a6ccf02f780f33902672fae0f038d8e19ee234ce28a0b6a01410100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f6100100000000000000104b41830f092484a00f2d595b8aac969bca6cbf7f386efdd0f79ee9a8c0201101000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c840010000000000000042bbfd10e95a6a1a57b34cbe01ab26605536797742d6d24394ebe95f87bd925c010000000000000040b77fd8fcabe868dc7f2a08bf14c67e4d433886c3cd3738d1b0b9c649bafc230100000000000000f6147fc504809de982f75aa2a806945bad883bf3854f6cdecf6f8a7b79b998540100000000000000009463e59f6b021a1dbdbf65e56f568ac5736baf96470440d7123605a4bcd93f0100000000000000b633c47d126eceb0e36d788370ebaa179b0c7a3a21cf5f1421bfac40c895ed3c010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd878010000000000000084a7633f080e6223b983763cc426583d4bd923709b327a38e5ebf4167f6767770100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e010000000000000022333a4409728530184f55b95171d2ddcec037603382fc7d6443b1f7b96c813601000000000000009acfd215519f40156749868afc8d56e015759f71cf183fe68382e8c02c75b2510100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d01000000000000005ce79c3ad8a0e1806e863f0858c28a81408d19870a62ac0316b3e6345cbb5f76010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000b672ee2f0f9183585ac4875368a0defda6d3c81927fbfc34bbacc7481058cb4b010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a252010000000000000052b41700df65ea66ffc6cbae47c04a2f20618f5d62ce1ac9304313373d39fe440100000000000000767cb742c94b22fff80da70a4ea77069aecde7ded53fbf5d957b01196924cd2d0100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea8400100000000000000e4a9f30dd10e786b66881c8811a0e1042df8b7bfa90ee55cbce2f4a9d1dcff5a01000000000000002ea8960211dab2883e7b15dc18336ccf12f096572c66831279c9a5e2492ef51b01000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e6601000000000000005c9b116ed7527b0521213299bee8025e89136d819295fa16ef7cf4f4b86887490100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd0401000000000000004cb98af1a70e917453f5dea682917e7b3077ea9d41dda7764433258a9d5db54b01000000000000002a0fda136ae348db338b87bed349145a94ce091227774b0542e533a83d1ba455010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e01000000000000006a5607bc375d7ac0908e7643ea2e89dbe42f4f805c2fb6e2a22d0385c1232b310100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c9665430801000000000000007eb2b0b6adbe5a5bad38f46db207f94c896d419661f4ab8f21e302a543df9b11010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e002b608a4148a8616e5435dfaa8681d0012bd78fea4502541249d97f56acc640100000000000000a8731d355eefdfbdb7fb12cfa5a280c0b1e408aca264ef585d42bf97fcfba1160100000000000000c4c5fe47a568c2fe4876eafd5e0093dcc31b450eb87bfe58397dfae2a590d4650100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed5264010000000000000022350f7b389967ec6e8c8b6c56ac75a138db742abcff27b1d6b3bfab894d187201000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a52401000000000000004a1069d2203a75cd1078c39de35c16a6c4c12acbad34f1cba8efc065f80398610100000000000000eedea8652413b5a97c1eda13e1e050b777bd0a8ca31dafd63aeab576a68fb75e01000000000000001836b6f7bcdf39ec4f786ee982799a549605b62f384a74981bf9de018c26fd430100000000000000245a9f1c784e83aa6e1a22b7a560de42348ae1c3402060929d669f110da1b7490100000000000000dc4ae9ca42fe496af7a466de59735813691d9c050f3256c3d4a96664cb6f9f6701000000000000005c25d331b2e023d12ee512689c3ea95edaadc300c9dc804e98806117f2edf57c01000000000000006205ea8c9da2e39792b9504100d0ce7eec4b9c732297afea3c2a885fe4f5832401000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000c63e31fd558807e07f9c7dc51f8fa8110679bb1b1cf5585e56d0b6164179b9790100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000dcb8d42bd4e3b7b597542ea3dbbc6ac36058a9b73ca50b23bcc7fe19d08bbc580100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c2301000000000000001e534cbbe982369a968006efa465cf2a16807a88a5c877d45f090192ea619c60010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000f853a1534a3af56217661420536dd7bea0db6f6db843d8fead77c308ed7dcc7c010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b73010000000000000050d2e3ed042861cfddfecfb31d47caa1927064cb0372213a3015b2acdf1dd1450100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e7630100000000000000140fbeeabfb02dede7214a17c2cf78279d076c80d962431f35d1105c87b8d95501000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c491420100000000000000fe9d62e17387326c0e4b75697b2f0fbdff9506992e745d61b4c536c4dc10f57d01000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f0100000000000000464d95a7c8cce76af088d8f781e3073fc194333ab20956b4dd2c25d4a29ac56d01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b200100000000000000fc6b68c2f556cb4bbfb09cea4ee39e47aceb7809408e38ae4696d4caeed3c91b01000000000000000884c85734b971a88cd94d86d3c62fdf163256a0387e15e2d36d8f25523a77480100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000121f9d8ba85d89e3c6f9a0fedcdfc9b05cc40a6d3324eff6e8a58aec5f52590501000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e852901000000000000005c3615a5e2072a618f0e434f7c572f4e4b1a89348dfe0f7939c99de095d54a55010000000000000006adb1e6e78084fd5e5df37fafc180d1ed84377ca41de3b5ca43b764f0cb190901000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000005e0fa84f762f7d6e4c4b0c18a86e1b7da6cb4fe7dfcf6b5c0056a7ccd8eb201401000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a8567001000000000000006eebb90d453e3e26540730fe99339d907a0e46365f6f2c8e2bd1a2dc83c2897e010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000000f79cec5a6b6b70f768ed05e94d2cfd70b13bc58fa16e62d742ee49aabe967e010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000002a4b2935b657f9ec563642ab0f34e223ef594cc70c856b9bd70fbe0837215600100000000000000c280e82e46ecabc4d68169e292c59cef96432f25fe849b8a147db5ca0ce7e17b010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000009295a1f023157921d346b73484b120d46048382107015aa9ed998f1fae95970e01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f076010000000000000010e37a12fc6ed768d1a2d33c8abc6db675381dfe69c832abb77d9ba2341b3c4a0100000000000000d8de542a748c14224ee7faa16157727c852ce502a45b408de0975c88a39c690f0100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f01000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f01000000000000008af88ab005ea3b1a0b3412054c721e574c4b4469e231aa487d9132946e42bb690100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de32010000000000000022376791bf19fefac611324d27bc6acb4b7f7eec713c186adbeda5a1e1b88f340100000000000000bc8f93a45201992fa9d04355095d03adeb5ff1aea206425eae4f902ffd47fe200100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b0100000000000000e08b1d1e40c5452afab2df7f9ce391eab8fbe0096e9fe744c9b72c414127722f010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a50030100000000000000163687f38841bbbd2b93787f7f65cc74a2ab94478888abce52207e1b81f46c4d0100000000000000e0b770b1bcf7deb030ee75d5bad6ec1ebfe06ded0fc406a8520a9650fe832330010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a46301000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d01000000000000002c6ef636d3bba8ef79dfc0e6d77bcb38426b54c92b764b29115d25f3af9c871601000000000000007a661c99fd40492b4893407b03822464e7d4853e9ba47fc9e9960c3800d6725f01000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf460100000000000000dc0aaa8a9d617e5d1ce58d8279747ac87766edfe7028c9c5a8793ea3ba9c94450100000000000000386f18b82ffe824f7ee1fda0f511d5112dee1c677bee0069f3d8e3d8be1a321d010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000e4e005984bbae507a03d158ea8ca3a87505ae3e8723d8f5bfffccb63a23ea61c01000000000000008a40c3acc862dcac958866b738b304be7d84c33d9420b0747eb82aaa21b8c40c010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e0100000000000000769d9f8b45bcbed8fd84b86d2203ee20d199212007387b10216f8fd9441dfa28010000000000000092c996c1fedd09190bb0fa8cc79e4075ad79eca3d6895d2a99d20e6f89e4182b0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad2102010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c4601000000000000004aa3c1b56e8c58951fb89119ce93f6dc3d42f114ee1679cc9bbb154d57f422360100000000000000b81bd21787e12343691c1fd404bb7f939d53b3c067a82aedcc0b0aca1e8fc17b0100000000000000a8c366514ae829385912b04b0192e934a20045b36cf1911bccc4c064d6d3c461010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b3040100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000002e1c4e3a1474325086c1ebf51c0cb6d335242921c645b7d0e070d9aa092afa68010000000000000012bfb35bdbc174f07745b29eb649c6c896fa7f38b13a728fedc4a4853a75014e01000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c010000000000000024ad842dcdc5f4d84262c6aee5116e88116fb191dbbd1331453202d3583b1f440100000000000000c2a54db27458236d0902be95fe0e09227a0c07320855f1f1ead7e58bcaf0e3090100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e0100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000da132f2f832c8e2a4e268b4faa923d9449c94ebe66f03fa0ac4303f2ceb1b05301000000000000007e0da5500e4e91faec6b7c3763c52058a7a9350be3009f2fe00a8e3bf0c59e790100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000309ab613bea03c4431f7602c937f5a4d17e2102db6fc7f77e32f7a245041b90c01000000000000009623ad5bd17b75cc58839c76474636ad5675c519e15f090ec008eb626db73b1401000000000000003519910296cbdb58e14288f16abf93393ffb8c9c91baa60093d1a7764459b6cc0100000000000000040000000000000002", - "babeFinalizedBlockWeight": 5057865, - "finalizedBlockHeader": "0x5a979217b503aa78e90ebcae20f6f220a4bc4ed6d776942fb850bcda517989e6a64bd4040e16472342dec8607f270f2d6ce99ceacb891aaddceaa3d7eace37129bca3338e2f6d0766dc5fcfc489eaa7a5d8284183494f34caa74847fed5c4fd8e05cbf290c0642414245b50103c9000000305803110000000098f2bd8c49c25f3a3ef98d184934741cd144aaf6d1ff9dd46479f449786a3d2941fb3a6b91133bd27200e607d83ce69787200ef74cf2708e876705e0657a9408debff3ab5bba7ae0c88832de6beee0f14de74abdf86218035889d763234fd00c04424545468403eb7277261742e27bca09f32dba2deb3ad262a859449d9bea27887340ba819a9205424142450101eaa77bb7093126995fc6905e2a89ee5d68de063bfae58eaaee9044deb42bef2372c3964800c13860b60bccf420d69bdbb6d1ea9cfdc58bfb9ea3ba0881236783", - "grandpaAuthoritySet": "0xa5046f706506065685b322054d22e8a1f23ca9df75c32a88dda5214ad58b553b4cca01000000000000008a239af78d4659897af698b5670533fa6d215864be8c41e3a2fc4309f9f83dcb0100000000000000e2b9e72d9202e99526fa626d9a6651dfd7c1daec8fc6ba1130af96f7d21a42da010000000000000056b838dd2005e499be47ceef086df4ca9c5fbc1f81968391c31af062a8a8bef301000000000000004a3fc0fe1020c7f460c7bd23d0b657c03368552b2f0a12d80a1c406fd066e0db01000000000000009b992b5e9b99eb2cd3b2b648d6db81ed722a2feb4938d998b58dcb5d159fadfa0100000000000000a8b2ff688a9b1709f0371b49fe31d4d5a362d3fa11f64fcdc2941df9351edebe01000000000000003255f477781804204f24ddfd080346b0e75c7c5a92b37cec1fbbe79fa93407b001000000000000005a40b78008713bef1a35714bd32e0ec4c8905dd0728aeb4943280efe766936080100000000000000907fc1295e137738f8862d34490ad0746b80926e236e05ef8b958084f1d91a850100000000000000e8d7333e457fa740db924866152f31c3bfa6124c0367b0878a61aff2d5d6e27e0100000000000000426b2be4596a759a15028d84e08c5c56440e6cede68d088f47c671cc3387c3e6010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc68760100000000000000e511d441d6d3c822cb276bb2a14b1c8071d9fe1995802383fb5dcf8a92edcfc2010000000000000003e385d1bbcaeed57930ff625035cd65781e3fe9de1d350d783ba261e678c0ac0100000000000000be2235b9d9c9164f494dd688000fb569a37d5c47912ef99b9ebda9318d13345e010000000000000049c0902ee37b569482da5474a15458b5dee16102fbc09b45878bb05f4a717acf01000000000000000e0ac68072ac35b8f19f98d13385b6eb75cf6fd4d513d9a2abfe9711b19883bb01000000000000007818639057900f8fb58e3aa8180f6108c251884a9fcb8041ca645cf612bc1eda0100000000000000a8dbfc6cb88ac105e25b9dc7f11e883631824647cd4d0c18014bb6239627b2900100000000000000ed7a7ea18c2d3b3effd9e8d7031592bc99517ca321c1faf7370f7d6d0fdebc47010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b0100000000000000890f5c296681b8c23038b3d36a491ca9e0e7e809e6455b2bcd28a13700f81abb010000000000000098df914cfd089eee8993fbfbd1522d6a31700c98bdc3a31cf69014a0ac123ecf010000000000000045ee96016a01c74778a6589fb2934ee9d83fd7a9e36509c4ef794d3d4f309bc60100000000000000f7e159462ec9dc0e54c6f6b8a83c4b551ee91613cad4208bbd563f16418328710100000000000000acd71d4269b3ba2a9de822d494c4d841708e1519c08de41d7fc6153eaf48da8101000000000000007c1024f3b93e54cb1cdde0d2f685e2e16cadabe59e407ebc45eabb07efebca6101000000000000000f42866aa6927f1c5916a8a1a5a5cba2d88e1fff957d80df701617d93ee6407801000000000000005cba2c6f569da1edc3778308da406f266aa53140381dbb3f14f22909ba6e30040100000000000000dac2e90de824b109043f70818d53eabe05e79d518bda504e951d7f4056b0b2720100000000000000652f455eb3d30486151c716a4031bc02bd00254ef3e8290fd29f946d958a46b60100000000000000589fc35b132ef9d7ed9a6787a203e5a3a37f8cd6c775f47ac5e589d55d381a64010000000000000044d68d3dbde0fbc3d667b7a004882caa9413b54785d820dc3654aff3a5b8e57d0100000000000000dccafad8bba5affbc80095564afc9376881907073a060979fabbb962bef08d56010000000000000078774f4f6130efaa55b5a06d1ef94ca420739dff79cbc24074bba841053e0aa20100000000000000aa3be8112cdf851411fe9e00fe9ef0a6b58217326ba7c1ab7ed9ce8a34620b250100000000000000c1c1ff5f66fefb5c0849e3b2333411d1f7e9dd4888600e334e7a33623f15fa360100000000000000f23b0362de32f952573d64c1f52ac4b8db0a7e15e7ad49a0c81d8f15b1f2ca8e0100000000000000594f51d31b1ae51a8c8ec48f5ab2428607440dd9c8f690ea377e99444529acb501000000000000002f40f2660559a4472aa7d2b5dac22c8925b9baeaec9fa2463cef2a77eb9d3a1b0100000000000000fa2c21f1a03638d4cb35202102240c2b85f5667924d5838cc503721117049da601000000000000008c461493dcd314f4b384169f3741954d8cde37bc8ad988149e40ddf18b4b95e101000000000000008aabd4f6d7ecec7a749c83fc7be33f3b4818cca6f93a4927b4964900df9454e50100000000000000fcc0d954c7d519851e0094cd9a015b4789022a37091e3a04791d0731bd85f0d301000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd750100000000000000a2a4af2a11ae7ba812fcc32845583d0354a0f2ffb1271a53c9a976a0f47fff440100000000000000214ce2bd2912889eca3c69f45a3677989d66e20c3b26a52bbd378a4a71f5aa05010000000000000058e304af91397247f704ce95d60845629aa59a50fba1c13896bb2300708db47201000000000000008663371a5899d5e7a8bc99b9a6ce24c8c3f5f1149c1e70accf9560405c1a5bf201000000000000003d28789c6d574f3aa6d14360471901c5bf8255d072c2209fa22ac773bd32e5bf010000000000000099f574f1c57e766376a6976ceb3f44ea0420be7426d5c55b016a91e34091a0980100000000000000cc0c6a91c7971438b621cd9a3bd37a67f52ec4093336585d1e2c73416195e28a0100000000000000de52bfa88c4a76bb22fbebb0f078dfcc5a327034e0044e8f8034f2a96e7adfef0100000000000000bf3fd3d4065b306638662c3e789d830a63d9b343cef5f863d346058387844b58010000000000000005197187ac7eb8d0a3cfadd32f1a7fb662e7e4a16ea718af3f1e4437b865205b01000000000000007d09497b4d65162d28d4940f8eaf8342798e7794ec0f5028d163fea6156cb4f30100000000000000a5aa8fc244c0d6036f96ca0585214448d94a124157dad6a09b585d1638c2362d01000000000000007c077f9fbba618995d7df802a578934d36a5c0bec16dfcbaa7bce3879b4c44ce0100000000000000b98c920666586f392d129d480e78a965764ac82de45e691589b3aab7831a7f020100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad39010000000000000034a18d21097f479eecbe51b91c522a798582caafc787134bab6888854742406e010000000000000027791275ae7d4735aa45e70210663067f7d268aa57126a26044c8f6d8572a7d80100000000000000f7c9f4bc8669969246cfb748ac6996db6cd4c1fc634d981a1093b2c3d7a2eadf0100000000000000576fd85592b4e01e1cb10b2ff002aee632e6e8fa7dfadb39cb788ee22854a73f0100000000000000f001e2e99b378fa4f2d1a50b28c3fcefcd7da3a66314af1280fb7f9cb429dd38010000000000000083a8ca034fded71f681224d5f905b69084b17a51c18f0a06aeff60e868898bb20100000000000000a9f24f0208a21e8cda4e450c72074f20d76a927bb80fa4418e480e0b59575c6b0100000000000000c8185ca8ae6330a1e03490e132163adf517f76402ecac6881a51c8a14ed62f940100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000081b1fce3ee9e31723f1023eaa9f8793e8663e72c50fbb0fbcea9bc78bacc491b01000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b01000000000000004bb953c285fc6de7ef27baf835e8d905e60d86fb1bca0e52af8323e9d1ff219d010000000000000050f9fd6c0623020debb7843bcb832ee1d80db9b156d8e6083ccebd434fe9794701000000000000002d575e29f7c1ea23bce864823ab34822606c5f0207bd18f471c9881a8c0e9d990100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000002cd51e09c3197e04155b78f3d97742ceffface390dc46f81f2613a94b2e483fd0100000000000000affb713ecdae328aa4436756f6a3e8add6b274d5ef1cc19d7aa69ab82c80e472010000000000000052912b3dfd0ccacd00586b97f1abe32431a2f6fa9c2b3bb17837a1ecde61728001000000000000008a2b50acd1a4955fc814bf6720c7427902a6ce709f3a2d7c17c55b67f6f1c0630100000000000000ff80f99fcf0f4072402a4e522aecd41ff231c5b579d978d0383dda0407ee498b01000000000000007c4082f9595014d2c938afd242c5f4a285bf8d488ff134e60ca42e3efee5761001000000000000006565187c86eca2aaf37db6d59405535a5e6dd85e2743a07ebf50e55c2b7fbc890100000000000000aa674be249403288a8078e209231e764e3679f2f66a1070ea5d9b5b420fc53ab0100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd0100000000000000c68c7e0bafb7f0fb65a79f7517684f7693e7ae6435fb72773c3c52438c669e6f0100000000000000f42c2e2a4157d51d22d5997dea1342f65e1882e207fd0e64e8e5d44330857eef01000000000000001a13a82af5e22b9863c01e5f0f6bdcebc4a295934e339fa915cada1d5eba7eb80100000000000000c8be78d05f652edd0a64a5865455de36d0fadb0d91c470fd344f8de23c8a6b9c01000000000000006ad5224d5c8f7fb3ae15dcb3766c0956ca627a6c91e93c4e770a2908e8f5901501000000000000006faa2a994a276a5d8d029db32b4c05375412db8844ec0a1ecbbcce729f308e9c0100000000000000f5fef7a87c9f3917fd28640907ce59ad26f33e41baa25d8ead8033ae0b944d7901000000000000005d0124063ede3e49f037df33948477235e5a58f93f8b98bf7203f25e11d4f0b40100000000000000225c0d8471ce0f8bd50aea0e5c48b863788729eb6c06aa8f171adc6ce51bec850100000000000000e4dc36bfd9f67865042b7f3bfb4a07891f7b757b1a37c1ba7dc6e395f3e4657f010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f010000000000000033346b5629c0c499b8cce8b797ee9a312d06155fbe898c8a4a09777ecf8ba91c01000000000000007448b6f6db7cfffd8650a1f3f08ddad1e114321ea770c9cfe6154882f586edb50100000000000000eea0e8d1a0aae5e5cd38dda0e172b49f8ea02287fd7d2ca79ffcdf6e593a2831010000000000000037483029302a84623f0a8db165fbed905b0a4fc25e7cfb56e975a0e98336a59b010000000000000053b5918f72e73f92f32b578d1b602f0cc554d98bee8c4e131ef0ac7a63399fb401000000000000002f4ab94586b2ba3b4983962b30aaa4faff06b6cd67ff1b6df06af0d9fcf34d2a0100000000000000587473ac474bbd8c99d14bec88d614426944b5c84dbf2912abac7610741560ff01000000000000001935d43843c66ecf76a9f4c4229de9ed7c172f52aa53d1a279f2856a736661b801000000000000004b1289d5bcb7ebef732dc630d99150de770499877ea75f9dd3e693871beacb3a0100000000000000cdeaed45451971dcdcf886df977f31b3c004c497037d9940bcbbf2bd6dd2e3340100000000000000cc5dc1c5155dfcf43ee8dc4443292e966cb3226aea4fdf88e73daa259d66b6730100000000000000f14cb581296c3261284a2ed4e5a85dc0280e5618cc8dc1e76d8ab4ab415ecdd30100000000000000096e6c93e51502bdb63438d1cc1207bc5fa4cc1a1330b152ce46ca62f0c88ffd0100000000000000be5a92b1661a385bbb5d42b4c53e5182988a80759eaeb5b76928f5ad726bd4920100000000000000c05f72a55f91f613b2da541ae27eb6053e80f267c906c135a4ebd848ecfb49db0100000000000000ec295fb809e22c332aa36a57afe05f2c093b2d13e52b0971d8265c5514e4e969010000000000000098237d7b68db1bb6e79c5174523a8806a88fe0fe427b40199b984216800517d30100000000000000efb5f1e4c4ba37f8c159d452d897c607a58518b8355a8454620b3e3ccc3271230100000000000000099a9eb71f9cb1b7d15eae384790b4ec35045a19acea1730ba62f3e7caf31e8b0100000000000000d34560b879f8f4dd8d2fbd4f6d51b9b6f41b76656860646fcef4e1498859a190010000000000000061914b4dba0a1e42e692016cb74943266b257339008ffed4644231a2b48df21a0100000000000000a703a37bd5d93619bfb6ad72c24840b396b2ddb8700db2e1d372a82363ec7d580100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000081bbaa3313b09e3b0ea2817c3e968a33587ec8928539c3f3a6d0e65644612f4901000000000000003d884e3f58913c10c26d8af2a095e231079a3a0b69f775052f7173ff1c3ace2e0100000000000000c13b603b5fe774d98e59c26fac03f8096ccc42c57d0cbc6a443b4f07a3c077920100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb010000000000000090c47bdd7fcfa4f8ad90f21b09e45cc97ed7c8313f3d6e09e055c2b2d3fd277c0100000000000000f916634f9fd7e54374e30ac6b722ad1793c13cb2d5f2ad38769eaca2f79d414b01000000000000007ba967a2dae0d8839cf44710591db994d18e53b25ec6d0f861da0037c4a4366a0100000000000000222ee6c6a6c62d56cadb4eaad5104d595fe962fbbdd551c81562d3b5092129070100000000000000f1fb51ab1445fe4d14cd9a8c9248557fd1c9b669b9d7d72f5de4cad4ce120c08010000000000000055ca63358082034ddaf76b75f41a396081dd4f39a61eff13f7575e506e10335601000000000000000aadf1b2009026f8f5dd75d532e91dc756fd47572aa0f3c15d26790e6d6b2f2701000000000000005b64aaae945b4c5f90242dc5d9892f452dee7b41262adc26b494637953faee1b010000000000000050e16d897010823670148ef157d77933bc1721d82c45e80eb73b46b12b5daab601000000000000000228d7fc42b304906518cbd91d73a5384c4893de6cbfe1e7346999df642d3d000100000000000000db9e49a8dc2d75fc63151f9dadc11b7d2d435b9625f62747928fbf7f1be8506f010000000000000082e6b6bf1f275c59fbde0dad91393ae690d5e644d11d23898a9ccfdda025920a01000000000000008ea2528e80e6b0d60f6efa538840d0f00d1067a924f29fd51ad68c0aec3fde7801000000000000001bfc78866edf1c38c02c1d1fbea39a2a33f46227dca527ed002d96532e61114a0100000000000000d761043f405069ac01285f1ff258450aac675f08d906b1ae0a1ce54eabcb36d901000000000000000dfbc1b5757e1f0ba348f8af64fb631aaff86cd21fa0529e0bb1fbab250879260100000000000000e0c32c0314862bd3897796069a8b781ed1fe1a375575a8fe7b8c468f620c77a20100000000000000d791b58285e2c4f17c82a518e099812d2a3f63e1090f1cb2576e2c7695ee24970100000000000000de74612da9080d47be35bf4ded2094e23c1de14477114ddcd7b76b815456ec0c0100000000000000d3b3d9703a265a51a137b9de348587c645a168981ef3e01c9dc482856751b8ef010000000000000003dd543dddd6ad00137ddf94a218bfa19d2f08b4365d696765dc25deef76598b0100000000000000cfb9f7f1fcf903a51af729ed1647aee928630e148990309f9dc9f3b14b114b7601000000000000005216ff912251cd2bcf9db256b3927e737cf909e4b53a375586dad21bb7b907ef0100000000000000d14a779884de1b2fbf079b8e47e8c0edb1c29e282996899a4eab5aaf1f4f41130100000000000000b5b64e522ece2a1a3325f95082e33bbf5832e6116d378ac0f437b7b49727292401000000000000004bf6037c3820cb7468601051701164948b7f7cbbe1ac8cad97e809c76170dddf0100000000000000fe7280b7fd8850f810d56d30b0e3811aaf9bd4d4417fed9a704d9fdcc1f7c80b010000000000000061f8830d235dc8b50288a606b3570c8335eefac47874c26a45f170cd29a5dd3301000000000000001ec0811cbe4f2ea1e5a714d3ba08c6d7fdec138bcc6406da3c6cd32f1686616d0100000000000000faf22cf4b053a1a03afeea03d07a83a4693d0ce0838d68721de18d2e93f91e9701000000000000001edfbf4f258a7c9ee7a6195a728c2a4989338a0f9c3b5c9b799abecc8630562b01000000000000008b7baa89dbac95969a0042fa876a37eaccfcecd3591c4d7ed0e8051aea814cfa01000000000000004715211e268489d1eeccfbd8a5e67235244322c17127226184448741ae332ba10100000000000000b58b8af4f9a5c18d5e97d22ed2098cf2e6cae587400859041059ca8afeced7450100000000000000ddac76c2a61c9aef4a9b3247aa0953187533f346466f02840235662440d2945c0100000000000000055c25dcc9cf8a08ad007ed9c8afb0ba53cebd129a20f194d272535ca9fa06490100000000000000cc8db7467349129a20ab4ba7e705044216651c0eba9d39f1054849edbcd677af0100000000000000982d9e3cc8ef3f8d99638b6f9df32c82356e1cd88f123d1e586a604d1d4b0cb401000000000000009cfeed14dd2f96550a0e7edebd9c9a8c8b1d8f7efdd1abca01987654239f3c860100000000000000736925c31654df870fbc29437c9b2a488ac3262e5d80798534ad00c43a61e54701000000000000008404cabeb0674765bb77af690fa838ba28fa2045d602994a89f07680f4851c83010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b8cf76a8082d518016ea5588be57b64e156ed23b0f72248975522c23d15ef16101000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a9801000000000000003a1e82e30d0eead0b6f4b8a23422d260890d9aabdc2901c81ec459ead88ed7980100000000000000056986ef8b6f0f9e092e29540e8d220b40bed9e459e7b9d0247e0e156601e3c20100000000000000620c78305072857b43dadced80ebc057dbfc82b58c14c7b63372ef02140867650100000000000000546ce2099b3863d2d75324d5866bfd5324d8ee4701a99dd53528f8a8c898ca48010000000000000046b45ec0a71351bec5563187491fa73d602d68d56b9faf3d59ba80c1fe66268601000000000000005d50d6099c7c88f367568fa473b44785acccd030251627cb371de16e5fa704260100000000000000301b983e5e1320b7c9ff0f2525121b9f3007f68c273ba8ff662b7244f1f95f210100000000000000ef5b937d1eb14d07785430ca8efb57cb965060fac808b9a25ab9d4ab52cf0ad10100000000000000a85e95b303450b71e03368ab702fe362ddb6710e9f374e0814f65fe4b46bd3f20100000000000000064d822e098e64fcaefe184a6038701fffb2f68dacf64f9c2d007fd58da92d0601000000000000009e4dc072780c293ebda8107e014d03b3dea3d3f14bc9d02cb0c9c0776ce63b990100000000000000d3ed238f520c7ce95663aeb66448e9bd02d68779471be8b8f0fb28265b44ad510100000000000000b1fb5116f8c92bf1d763969194db84f09eaac810117f40a8f84410dd54d6518f010000000000000081a47767e6abad1d3c805d4eedb10a226dd9efb967d5f78f8ac4cec55027f1ac010000000000000028139ae721b771cf57d5afa58579d8dc0f04f04c1e1b631cac64a9fdfaf8b5250100000000000000c5f7618b9d80d894e37364f041cc37cb1350386bc5e236dc91a41948e976c0e60100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a46810100000000000000c924ec7ef0e00e00c269291948df5b8e7c8df7694049dced2aa7775871670e2d01000000000000000d8e0ceb31d11634ff50f20c90d57239a9307602e221baa190c784b144a7eb980100000000000000cab191a66c54e412fbe7fbc074ea0d916279d55d856d870d15bdf88c00538dda01000000000000000428e3ccdba17d779ffba05c9ec7a6264187d13bf89b6009e97200474ad3439701000000000000004c43a374e6b3e6f7d6c5a6b8518ae0d0d232a1c46d63af8fbc800045a14cbe930100000000000000c34f62968a87b2e4a9340a75004029dff5777a020f60fb287f08038491881f220100000000000000f54bb82d58c665ce3289b8765c40e60d84f74da663c164c38e16784d5c142b2c0100000000000000607737116e62ba11852c68515933afb8165f3174d594eef6d01dd7eaddb60ec30100000000000000dea32ed7afbb5b31cb45b6e5daff40fb33e80042994d8d6527ee262e32fb2131010000000000000065dc4c53802befd2acfc3d6d3f66eeb84947e5c15fc7a2165a375352a4faace101000000000000007c39d28f80a16bf0cedb70e36c5ac9063dd9b513c5fbbe2c2222389f428921340100000000000000bdee8597e248688fddc627ad9c95cbebf7d3b5f248b9a742aa2d8e761fa365050100000000000000a128a73c5eaa1803618a75bc368c38e4c5cd40999cb72d615b8af1d30cb8cf1d010000000000000020270811c3dc453f37b27d958ef7ad7dd4c7f217c83f94bd0ecd84c60018a8660100000000000000f595e043c5f1974fe8467f514a656265c4e64896b47c6dedddd35bbdcff2bded010000000000000020869a63e7a343094ad0b4ffaa3d83344ffec8c7fb9b177008f78d17eda7dcbf0100000000000000f549e094ce2c081069b7a39b67a13a00899882b79ed9ce8c63b2599cbb09009501000000000000003ee731da725307266b32393e3d353b49dcf27f3b55220edbe210af3094f1b2940100000000000000d64083c00178b8dd224afade9792fed8076031bdfe9efc5b8128e6372a9261e201000000000000001c6842f07fb07b318a8d00ce6258844374f8e894853ae5fd4a85c867d3fc32e30100000000000000417e120dbfd0297d59458b48407b62570987f1e907dd6dfa9a20bfe64eb489d80100000000000000443bd12fcb944a0e19b2f76ddd066a713a99d2dd3530a5f39275300d11ac9659010000000000000098b4b43d718a523ea7af6b507221638443f55e676b5e69f22bbf28b6e2d970740100000000000000be724139e9bdd099b70f7edab7d1acf0d05fa1a4ca212f5e2958d31f4272dcda0100000000000000134cf4720486824c6a27fa7892c8d82e805653ba1d98480267ec284a76b792c20100000000000000c3150e4ca47e7bc6486f198bf0a742a18ab0871bb1efa34e82c4ce81f27926670100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f0100000000000000316bafdefb60951da2738d6c9c2ef1866d139b34b5eab6944d6bae754dd3fb110100000000000000b65475766e6229c87ff34263f5ca58525ab133962bc599ca0eab096ff296f4e60100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d0100000000000000c1b58624231cd77b450e0be515a576e8863cf47822e19b1bdf89bccfe65d41410100000000000000a51a49fa663cbea3b953fee99f911391d75d638349a2681e30759820c6f3c60b010000000000000042f47dad5949be7b7b8f81faaec17b1b53465b01b9f8f81e6a45f2fc74e12daf01000000000000007a1291795805dbe300425311ae50ed698450b1912b62e5b5a3264c68bfa970760100000000000000826fea075408d2c9331974dad61f4fedb0a7a306711c696997bc63b4b0e73e4c0100000000000000e0df5b2f299314d2d419b46d15c3c8a739182d91c3d4b98cd16c013c3a25c04b01000000000000003f2c01a2e1e996a73582943fd0749ec223b2ea8129513a2c5c4b52bedc1f75a6010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af01000000000000001701236903f6e923b35630f99bc6334e29df55d03a136d8acd93bac92f32045b0100000000000000853ba986f8785e8fc1a2ae2fb86f17cc91886d931182ccb8d148379a35cbf02701000000000000009bbc024bfe4f072b94735afda064dc3c7da2b4bc0c50cfad44722543583a372e010000000000000086dee2a2c1977cb6ff99dde8fc5b0cb10dcac44b50b19b80f8252899b091c84b0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf010000000000000021235f4afb5b0d8ea5123cd4be4205ed27dc25e5e08813563e47f363590928400100000000000000c7009be830fe78c42f12f0753923131d16300bac230650001636b6a546cf0aa30100000000000000348e8bacc2d40191a6a00e137c745a422ff8fb03148d2ff9cad75efbb7a670140100000000000000768d47629bf074d88ded200706ce2f2ae38434c192129d1736ef8f6af01562b20100000000000000d227434a77cd7b7127c039eb9995aeb025a242c36ca7116372c7c8fe5bc921b50100000000000000510a0c61dca3e1044d3540c08272054462c6353aac4dc06cda265753b126b38501000000000000005db4206baa8706a1b1de0ac7edacbd2a2c93452481808b8fe6c582265b57a60d0100000000000000761ce3eef4bd0d15601aef70728f54ca72a9859e90841c3d02d5060201671878010000000000000000132d9e682cf8d45ce8efd4bef165a26da5d1349ea1fe9f51abd6dc762272020100000000000000f4d2f2eefe0c1c49856517be1829a9c54ec4de2dad8825dc5e366446729c160901000000000000001262625cc59c0e4b7548904c31a02231a601305881a231d4dea45eec6cbbbdcc0100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb01000000000000006ad4bc289673029ab44f3045eb6fdd3589d05e0e5fd76ee017f650a662f898fb0100000000000000a82f563264d1892dd46873205d03c098d8b03f53e21c797839737e4e5f66a87e010000000000000059dadf17dc0f84c1c334e6a815a04bdfcd0988a3f3bcb713c66ae29e17276cc60100000000000000297dc7cf28b3d40a42c5e8faac876bf7227c670e6e031dd0e0537f4fb70e6fbe010000000000000043601ae31cf5b03cb49395dda13809f7398d8670ee4d2172b14a1ab05986ac3b0100000000000000e7f57bd0bc756f24574e3a77c90616adb393e9d4ffceb2c63df19f605cb6a0240100000000000000f8e030baff510f2092279467b1f4b20a75da6d941011355269545f5a2dd66ec80100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b6301000000000000002ef11bc5ce1e7b53f788ba01ba581b9171ef36449719ff3eb20973342a4a82850100000000000000ab45f730dd495f657b61b2777091fa8cd11b5a626bea2b514e5e6118021037970100000000000000b79f919442f4ca5ac9195fd09a1239b1a80bd225f8372f1b36a24a8c55de61f201000000000000002832b59000d2027d2bf57fdb40da04bd8aac1498923397517181cc487a92815201000000000000000cd7067f96a2d63fa72065302432f48690485fa5f47c9afab17123e0482785230100000000000000f6f23ae9bb4c269a5959d51f9173270ddefcc354b63de77b672bce58cabe60c8010000000000000049d34c7034103f19bbeb2c8029d96c82c753b088fccef038e7c5b009eb46d6e701000000000000004ab3fb4afcd05ee5df8e2bdc39a0a7ec1008355062b9d493fda9158a29f8bee40100000000000000be223d49fdccd102646c9b0d62130fbc8e7f0324d55a3eabaaffb5ed1616795a010000000000000062a91ffda8611ffce3edeb628ea6d3b8b12e5b2448beda6da8334e77a9ecbdd7010000000000000071893ca83ebe6ee06c3eb10dcbfaf70d8267959f6159b4ca36929a69604cadbc0100000000000000785825ab051127e981a7154947645df9d67416ea2499048815ed5f7aa358a21c010000000000000006cfc80018342011eef81de0346bbc3997cd97f04dcbeccaa30bd4529388976701000000000000004ad600cc461daf6d287d5d2ff0791f74fd7c6aab5714ad50340187a7ce509ea90100000000000000f9909408f9201a13dc8b04796d715d89beaab7dca5b7f3aad244165bbdb1a6810100000000000000b059f42934ee377fa5377a5886e2846c28556fb85e6488b8bf21c09c86b80b19010000000000000026cdfb88461d7125f438c599e062799219b385bacca93f3cdbe5418c9d4d499301000000000000000f19c3ed807ad5f2b7546f5e6c5e9bb934835d54ed1f4f989540b86a2ca02b550100000000000000e4c1d1377894eee032e1a60dbac6252e23f35bbb43ce51d5f98652cfee58d5bf0100000000000000666bc268601f06ff4b004b1509bf379603d3f4b7ea684f9638060c0ee5d400620100000000000000f2e75ee2303b2cf903b882c9888cc1c51f978abd58ba88354dcdad717f4b8a590100000000000000b426ef68c50245a003dd068c5c086fc9012c08a7f9ec53fbf7df4318261c8c2c0100000000000000e7931a825260ba7d4fdb5f4990d39a71e2a8b215a776ebf770102ca772f103a3010000000000000095fde7b91441fae9d2a6360d30228392519293be5e78cf3305667595cb15e566010000000000000096847258e5fdd261a8df1b3958366b29d28363aeb96a71c2b705e4c8864b97e10100000000000000e7eb7de26e0e24fd528fbbcecf837f26579784dfd4db512c9237e281113973870100000000000000eaaf51c4db0ac374aee2c43ce34866dbce4db52f43096392566898f8570d988f01000000000000000f256655890491ea13673e6cc79f06f3b44303badee1b5785fbca168337c9f5e0100000000000000fe76110186e8a72cb09ec93757b5447cc21d543888903f50e95c68dbea91b0630100000000000000716a181407939b3ea68289e09265d3b9d8a8f21ba7d9f50d8ef8a86fa3c0fd0301000000000000008e3d1c8c0261e193e87403c8959919ef035ba39175d3ba22f31190303601412e0100000000000000e2cbfcc26562b49e656aed7d837a26fe0f9802db088b10330227b6147e150012010000000000000094416582fe359e0a310da59bf93df8ff9665b89071d4977a9a9f3390b75c0c450100000000000000ac5230e4338aa51c44ab6a0fb903e6fd914fd029dab8f7ca447be54ceba749340100000000000000a76b32c8c28cce206ddf70ff3ad591ed01a0067f9f9baa77f9052ce938d359c701000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd8801000000000000007fab4769c41af85b9de8e784d3b1cda093fc0a8dffcdff21e914c62f131c77580100000000000000d2f1b3b5f7eb1b0d8328911d9ec920327d7a30729e80c1238f86dfe27c4fa347010000000000000078a2957fa87dcd755360693156976dc31d1ca27a869e032fb1a2d46ae06fd8d10100000000000000e38a7e0b1d2bad01565b8536e0851dd4daabdcf5a4ab415eee0357082d95d3550100000000000000841584e602ab975c936fe7c2025fcea2b5a0061e839b1ad96528942b33d0974b0100000000000000ca35d63347f9deafb433ec20ef8c469bf2e21dc5e67c0c048a5a04fa369424ac0100000000000000ef2deb3b9bae4be70f74994a67307177057e2e173061cf30bb25e5f8e620b06c0100000000000000daffd43670286cbddbf38953e6e33ba093f8c719e9fbf0a4aa76ff3ee97df307010000000000000098763eb72b3f7dbb7a793bd1d4367af5f072ff45a1a6eae0e002e1eaa24c5d550100000000000000b07738d501326a26acec24adfc2284f2f617e4042c738f7c0f15dc1c9006652801000000000000006d698963e0fa3c04ef2b32f638e0176e053cd021f6a49b55a4a4ebd4d5fbb11701000000000000002929dacc53614cea1848e7ba20fdeed7cb0bd81571aa72dfb63dfc84d3965d2b010000000000000031a46e639e57d1a11119b17f76617a35b3606d206fb5c3e87710f464f7a57de5010000000000000056b2cda89223ce64d8abd543ad66552bb84be82fb45e0ad6333e714eb20e5518010000000000000087070000000000000001e9123501001d1e00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e115019306000000000000331016019406000000000000664816019506000000000000998016019606000000000000d5b81601970600000000000093cb16019806000000000000f3d4160199060000000000000ff116019a06000000000000cd0317019b06000000000000492917019c06000000000000a33217019d06000000000000444517019e060000000000003a6117019f06000000000000117d1701a0060000000000001c991701a10600000000000059d11701a2060000000000008c091801a306000000000000c2411801a4060000000000001e4b1801a50600000000000037671801a606000000000000f2791801a7060000000000001fb21801a806000000000000dec41801a90600000000000056ea1801aa0600000000000005fd1801ab0600000000000079221901ac06000000000000b25a1901ad06000000000000e5921901ae06000000000000f9ca1901af060000000000005df01901b00600000000000017031a01b1060000000000003a3b1a01b206000000000000e64d1a01b30600000000000044731a01b406000000000000a37c1a01b50600000000000078ab1a01b6060000000000006ee31a01b706000000000000921b1b01b806000000000000be531b01b9060000000000001d5d1b01ba06000000000000ec8b1b01bb0600000000000009c41b01bc06000000000000e5fb1b01bd06000000000000f1331c01be06000000000000ef6b1c01bf06000000000000a39a1c01c006000000000000fba31c01c106000000000000f2db1c01c206000000000000f8131d01c306000000000000df4b1d01c40600000000000075831d01c506000000000000aaa81d01c6060000000000003bbb1d01c7060000000000002fd71d01c80600000000000017f31d01c90600000000000067fc1d01ca06000000000000ad211e01cb06000000000000fb2a1e01cc0600000000000052341e01cd06000000000000da621e01ce06000000000000c87e1e01cf06000000000000b09a1e01d00600000000000089d21e01d1060000000000000fe51e01d2060000000000005fee1e01d3060000000000003b0a1f01d406000000000000f8411f01d50600000000000098541f01d606000000000000ac5d1f01d70600000000000094791f01d8060000000000006eb11f01d90600000000000038e91f01da060000000000000b212001db06000000000000e6582001dc06000000000000c8902001dd0600000000000062a32001de060000000000007ac82001df060000000000001cdb2001e0060000000000005d002101e10600000000000021382101e206000000000000f76f2101e3060000000000003d792101e406000000000000cea72101e50600000000000095df2101e6060000000000006e172201e706000000000000334f2201e80600000000000085582201e90600000000000010872201ea06000000000000eea22201eb06000000000000cbbe2201ec06000000000000a9da2201ed060000000000009ef62201ee060000000000003d092301ef06000000000000782e2301f0060000000000000c412301f1060000000000005e4a2301f20600000000000045662301f3060000000000003b822301f406000000000000299e2301f506000000000000fed52301f606000000000000990d2401f7060000000000002c202401f806000000000000173c2401f90600000000000063452401fa06000000000000fd572401fb060000000000002a7d2401fc0600000000000000b52401fd06000000000000b8ec2401fe0600000000000037242501ff06000000000000155c25010007000000000000e69325010107000000000000a6cb25010207000000000000630326010307000000000000b30c260104070000000000000916260105070000000000005b1f26010607000000000000523b260107070000000000004857260108070000000000002d732601090700000000000018ab26010a07000000000000fdc626010b07000000000000ede226010c070000000000008d1127010d07000000000000e31a27010e07000000000000cc5227010f07000000000000ac8a270110070000000000004b9d2701110700000000000090c22701120700000000000087fa27011307000000000000583228011407000000000000fe6928011507000000000000557328011607000000000000f4a128011707000000000000ced9280118070000000000007d1129011907000000000000414929011a070000000000001a8129011b07000000000000deb829011c07000000000000bff029011d07000000000000a8282a011e070000000000008b602a011f07000000000000dc692a0120070000000000002d732a0121070000000000007a7c2a012207000000000000198f2a01230700000000000069982a01240700000000000003ab2a0125070000000000004ab42a0126070000000000009ebd2a01270700000000000041d02a012807000000000000e7e22a01290700000000000089f52a012a0700000000000023082b012b07000000000000cb1a2b012c0700000000000018242b012d070000000000006b2d2b012e07000000000000ba362b012f070000000000000e402b013007000000000000af522b013107000000000000035c2b0132070000000000004c652b0133070000000000009b6e2b013407000000000000e4772b013507000000000000abaf2b013607000000000000f8b82b01370700000000000052c22b013807000000000000f0d42b0139070000000000008de72b013a0700000000000081032c013b070000000000005e1f2c013c070000000000004a3b2c013d0700000000000037572c013e070000000000000a8f2c013f070000000000005e982c014007000000000000eeaa2c0141070000000000007fbd2c014207000000000000d2c62c014307000000000000b6fe2c0144070000000000008f362d014507000000000000426e2d014607000000000000d9a52d014707000000000000a0dd2d0148070000000000003df02d0149070000000000004f152e014a07000000000000971e2e014b07000000000000e2272e014c0700000000000035312e014d07000000000000cb432e014e07000000000000174d2e014f07000000000000a57b2e015007000000000000f8842e015107000000000000e0bc2e015207000000000000bdf42e0153070000000000009d2c2f015407000000000000e9352f015507000000000000353f2f015607000000000000cf512f0157070000000000006e642f0158070000000000001b772f015907000000000000659c2f015a070000000000005bd42f015b0700000000000001e72f015c07000000000000470c30015d07000000000000464430015e07000000000000904d30015f07000000000000e456300160070000000000003b6030016107000000000000327c30016207000000000000d68e300163070000000000002d983001640700000000000032b430016507000000000000faeb30016607000000000000f12331016707000000000000c65b310168070000000000001c6531016907000000000000bb9331016a0700000000000002b931016b07000000000000a4cb31016c07000000000000870332016d07000000000000721f32016e070000000000006b3b32016f07000000000000675732017007000000000000647332017107000000000000ab7c3201720700000000000042ab32017307000000000000eebd320174070000000000003be33201750700000000000088ec32017607000000000000281b330177070000000000003d5333017807000000000000df6533017907000000000000d28133017a07000000000000248b33017b0700000000000012c333017c07000000000000b4f133017d0700000000000007fb33017e07000000000000fb1634017f07000000000000e93234018007000000000000914534018107000000000000c26a34018207000000000000117434018307000000000000b98634018407000000000000ada23401850700000000000092da340186070000000000008d123501" + "babeEpochChanges": "0x0401f62d3cf277b91001ac3103e759d13d61d70ea8c0bc8aef70c2c70200315b9601ea370101733c061100000000d34506110000000004c43327dd6b89cd8a1dfbfd8163edb2a14a577534f1bbb117107d99a63d80486b5cf3370101d345061100000000334f0611000000000432d6a307467f307dc5a3286d6637ed6653fcfe0c2b39e114cd46c0c705ebbc3fb7fc370101334f061100000000935806110000000000000c01f62d3cf277b91001ac3103e759d13d61d70ea8c0bc8aef70c2c70200315b9601ea3701016d21000000000000733c0611000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000006c9c53f3824abe976dedc2792e1c6b8cc55c317eed2f30916c3229b60e5792060100000000000000ec8fcbae6ca9d402b51bb0bde913f0c29769d8d1b9653f4933db117890fe3872010000000000000034b9bf86acb3f518dd359690e3c47c50c7418fd2cb0ebd8c7cab6dfe2dea095b01000000000000004ea4871b3ccdd1276ee604eb0e06aa4a62536dfe8fb053042a8f36caddb94c510100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000003a36963a41de2036872df1c499f45acc0e7179457316ec2d99a6018e078f6a0501000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e01000000000000005c29ec682e4d6837b594eefc3ec54712e332bed3e1482c4ad16462f46e1edb0e01000000000000004e66face3c69993a0030ee7c7b2fff1a941ab11e523c11b4cf1713b3796349100100000000000000c0698e756d794ed2451fe14a44153707bba5210aea0c3b2c027cd2f5c7edbf4001000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b01000000000000004414b26982f378e237eb9094dd7891d7656e4b78ac61d4534ebd1325a9c94504010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f70010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec326540100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c0100000000000000caa53cf3e8ff5604d82bac45868bf3e25115f7e8f4d1cdfada68f8487d03e91b01000000000000003057a5ccdbce651c71b1ce9d48e9fa23e6720e8e2bbf52f65a0ed14e4a6f3f700100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc3531001000000000000001abb26ba0076d5e001abdcf18d4454fe25c5076bc5ceb1b8f35d6041670c265f0100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c01000000000000001ee57665488b5ad6f7358157b73009a4ec4b14b4a03c976487e188f54bff7d6401000000000000008610e1f00a1eba67d13225867c1f2972e60604e49bea7e5c1b10b29d4841b84a0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b01000000000000004c50abd9279d48439dc8f93aaf679e47981f25372b63d838786dcaf7a3f8d074010000000000000072a85a9dcc0af833b5a21a51ecbc4a9855c2bef8848e080ed70ac48cd1efdd5f0100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000000ee4b76ec5fabf011e00bc27b36039f3d397e021e8bcacf9532c90fc419fca0a01000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000acfd0e585d89c54d57bdbcfcbef574217ce0997c82fab720b2d4e12ce61bd3610100000000000000562fd7529c92f9370dd6d7ce60d06ea4a826cbefa238231993ecfc9e7725ca2401000000000000008ef93e538ce16500f27b4c9a10ef7b02a46d8a9624778d0f83b9f7d8b560466501000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f06787717010000000000000090708d1a49ef0acfea32147a109d08d9aa15ee975b5237d56ca9b8e324108d0f0100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c56010000000000000024efac2829d615703c5375dae24d394207fdd26d9522bad7af6bac64ede12702010000000000000058ca41f3fb960be9f54fcbfba3961d37709552b4b248bcd1f7f820ae3aaabc070100000000000000e487051ee8f32b1f8d0af5e897b49730512303471416e689ccfd0bc3f726f447010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e702101000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000bad91c9aefe173441dae1f273e55090706d412b0723d39bd6c3af053feb183200100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b0100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b010000000000000092bb282d46ed819e46fb3ee929f7662354fd095b67a8ed51326b47e83f86653a010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb550100000000000000220d3f26072ad42aa5ca04b7253284d185f8bf95650faa170cbda8d7a47ea84a01000000000000001081bee090d8e63a5fbe5cfddec37bce3fd08a3411d42f57e6ac6c78ee2d2c5a01000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000d051b4dfed8fdb829387340e3127a51b0d96127ed5837d044bd3344650e30b0c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000012e4e8f29b147f5596fa9f59ccdd35467884318f010063feac87e8985b00ba7f010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e51010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000005673f82330a1ee6e6889f745fe15c353f5f8989e4a281e8aa53e38ce1e74556d01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa740100000000000000a64dd29103d43e3e898a41f3630ff88b2420953febb931c70ff543673efa251b010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000c473d994ae0f9b8532523f5ebc52014bb3fad20e68770fceaf80fa105cbefd0d0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d010000000000000002ecd96c1f4fe196d53f262e75770f1a81c80b5764b01383fb77e20684f2096d0100000000000000fcccf8e328b4cc968af52a23f6c960b5e34241047b630c19a0661ace6b9c273b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000ea5f39a2c4fe3caf9e91f3efa5602b4746d5a9c945371f9a3e75b7b8b787fe450100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d240100000000000000483121b03dee3c339898579611a968f6382ac2a0acf3da8b9e428b2817c8de3801000000000000002c15f94cb3c23fc41d8fcdb453ffacabdfdd1f5e9f6dea494549d06896ee8d23010000000000000050f3e6382021e3c7ee097307d03933571ad45bd056c0eacc86b9ed5174dbd52e01000000000000006cb2f0f0e5fe70eb547a0814ca5346f59f7f2ca74c00714aad555157cd5a29490100000000000000187fcd65da5b05c572bd1809b465ee23d8139deca61327a33a1cbbeccd5b335a01000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000001285919470b092c61b3deaa9ad83226d41f36d58f0ca5f2e14d11d0724f6f00a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000f85f12f4fb92075bc59a1711f35e8f3c8313ff08028d2af80a79b3682a3785590100000000000000a6cd7eca570e90e2efeeda8f1c09480884a073c66fc7c41b2464e11822b12f0c0100000000000000125f4bb2b8d56e62b303ed525cce2e08f1baf016c3e89f28df7f61a3222ddf4e010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000566948c62b699e382e5379592d1ad3e1823640d386936142cb9b82915ed02d1801000000000000009493e6de34e09c9679b6dca602e38d8c07abb77b3cc487ae3a80661968caa37f01000000000000007acafc914dcd1ac429f85e4a1c89580c0bb58b8c67b3cb6924643eca63ce306c010000000000000036184dd6af78dcf4c568359a8e0f72c6a9c51f66eb0b7a9e27456e0b6edea36b01000000000000001a6ae3ba55d3b68146f9b366df0ff4300d8e4cab26dc3892c1207c783caac92f0100000000000000582030a59816ace3ab2c2b8c66ca50a69991899df57096da6f6ca8a49b16550f0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000d82f4f85b1a8eff4e77f709e29f3fe18e9187a2a6fdb84de17b9b3f53a59536f0100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000daeb270a28cecb3752e26270b136566efbb5109ee0bae5e69d91d9bf7d58c9550100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb19010000000000000052e8debcf395bfd2669cdd1cb32f35d7b655a4761f0508751db390aedf2517040100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d4540100000000000000dafd1b81e8401d6715a61ca7c3d32920b24cd28a8708ecdb65b5e7c557d14c440100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000002c4df89d1869f79ae7c9ac36bb355361d5cf3bcf201076476ac961aad535c46d0100000000000000104b41830f092484a00f2d595b8aac969bca6cbf7f386efdd0f79ee9a8c0201101000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c840010000000000000068f3e478d28f00ce97dcbcce5e9cff5674f6b3d8b06f7dd8be7b5f3b6f1b555d0100000000000000009463e59f6b021a1dbdbf65e56f568ac5736baf96470440d7123605a4bcd93f0100000000000000667f7af26c8dd32504777bb2a259a26757808ead5155f3f098558a70d90c575b010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd8780100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e0100000000000000081b0b2be787b16ce685b01ce226d2d9b31379d291c337c400f11c254368660a0100000000000000f69945c37cab30652616de730c6c9af87df24d2dc13f1c1154b58ba53fdca27e010000000000000066a1f2d6065a221392fe7793303a11dd454adbed327fc7395d7a69be69d79a59010000000000000020a16c4dcdb2a546624222a27f099cf5bcecb3b18919bb01c71ed76fca94b0670100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d010000000000000046c5d9750776edafdced20206ffe4b799489f6de9e0983eeb3a9fb6485c7e2220100000000000000f875192456a53adc29b095319d261874ec86a4f35b37330e96a19b2a7fb36670010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000829f64b96b37d0aa283fe99a6d2150069bcbb6be61d076f23b3992b6c1fe6756010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a252010000000000000052b41700df65ea66ffc6cbae47c04a2f20618f5d62ce1ac9304313373d39fe440100000000000000fea10f819b1e9a66130a2f9783c5a014c4faea5501432358597d8c1fa851a0370100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea84001000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e66010000000000000016f34c9e6687012c42f9c02de75b9499849fe771f2ad2e666f965dc6627735540100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd040100000000000000c6856d6e331bb8f1dfe061d4fd679115a6513926be52de2297fdd60a699b633501000000000000009eb1b5beb8b5ca4613c17e6d41996337b26e0ca7289d2f52df05997020eddc50010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e0100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c96654308010000000000000004efb918028f583768356118e9457c36583319eca6d53536596714e782f1596d010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e002b608a4148a8616e5435dfaa8681d0012bd78fea4502541249d97f56acc640100000000000000a8731d355eefdfbdb7fb12cfa5a280c0b1e408aca264ef585d42bf97fcfba1160100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed5264010000000000000022350f7b389967ec6e8c8b6c56ac75a138db742abcff27b1d6b3bfab894d187201000000000000008c1548bb1c08a22a73fc056e7e8c66d8110ef5e6803c1d3a0b2c860f864d4d2101000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a5240100000000000000eedea8652413b5a97c1eda13e1e050b777bd0a8ca31dafd63aeab576a68fb75e01000000000000001836b6f7bcdf39ec4f786ee982799a549605b62f384a74981bf9de018c26fd430100000000000000245a9f1c784e83aa6e1a22b7a560de42348ae1c3402060929d669f110da1b7490100000000000000dc4ae9ca42fe496af7a466de59735813691d9c050f3256c3d4a96664cb6f9f6701000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000c63e31fd558807e07f9c7dc51f8fa8110679bb1b1cf5585e56d0b6164179b9790100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c2301000000000000001e534cbbe982369a968006efa465cf2a16807a88a5c877d45f090192ea619c600100000000000000a8799cec2aeeea9f33bafbcd60c947d0bcf3b1c9be450c43f63004e16a857e72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000fcf8c8db78fab04b332758bb6edb9fde68e74ee228c1eac78812cd80adce1273010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b730100000000000000522ac8207ac3c869ca31085f31a5d26da4362597650fe91048665e868724522e0100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e76301000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c4914201000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000ae91c31922f356569c76a9cd203ba71b3eadedac2d8d001feebf43a39ccd10370100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000002acc31e6fad7d566b446cde6ae5ac91bf9427bad13825cd3ad65887c6a792b4f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000509f915fe6f099fb5807c03be526a055dbb7565c35831a7dd76d6e506d493c4601000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e8529010000000000000034e658d19575dfcb8b27a747917d14806939f0a44eb148e28991150a87641c24010000000000000006adb1e6e78084fd5e5df37fafc180d1ed84377ca41de3b5ca43b764f0cb19090100000000000000a496ba57e511f86ff4cf264f9fd7bd3595b37ae55ad671c7790574c87d40415201000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a85670010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000000f79cec5a6b6b70f768ed05e94d2cfd70b13bc58fa16e62d742ee49aabe967e010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000066367dc21d99167386ed0d0018a18b23a1f7531aba9f6e1d299a43446c86201f010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000009295a1f023157921d346b73484b120d46048382107015aa9ed998f1fae95970e01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000322dcdf3a5f50091af8b876983da0e0e98e358339e6033cdb865cd64995f8613010000000000000088c32710e8a71cf0e9dc4b3b411cf05f7a55daed6f034c999e5f6d4284a4291c0100000000000000c6fbf5153c7b8dd896e8daab854560e2ab669890479fed689ca39f210fe880080100000000000000d8de542a748c14224ee7faa16157727c852ce502a45b408de0975c88a39c690f01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d1097401998560100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f0100000000000000243fc8a61c1f7d74f8e90a8cedb03056041aea1feb71e12bf7b60439cbdd136201000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f0100000000000000300e83228ad8dd39853b6ffad85290d909b1ef1ec4067f631be5da6432aebb050100000000000000224c5b7c7674050aeafd9bb5e710a8c0ba497cda375cc3daa5a16c171a5f445d01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f01000000000000008af88ab005ea3b1a0b3412054c721e574c4b4469e231aa487d9132946e42bb690100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000c69e90c4bd0bd56246bbc856d4f2f3dbffd2d4e0d7afc92b7a0516e452db30290100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de3201000000000000009a3b32b7cc94b119b2753d77d4f38b0e63900a5633773105a551de5b22670e7a01000000000000008e3509e2bcb4497b4bd7b09dbc1d5647212386afc663222f97602067211607160100000000000000a877af86b958cb961cc97cc61fc35602350a87cf9cccefb09dd91f9f792919250100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b01000000000000001810712fbe92f2394892a99e3a825490baf1efaf7a3dd1c9bd0e58da0d671133010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a50030100000000000000163687f38841bbbd2b93787f7f65cc74a2ab94478888abce52207e1b81f46c4d0100000000000000c22b3fe29c3b9eef11a6db4c79ebac692efa4e3a9e4a48affdc415275ce38764010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a463010000000000000000ac029d5e4ce570bafb50b677fed13d43eefcf0075b3ae2520be959c9782f1201000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000ceed28227bff3be87c1a5736f80e425d4a2f79de9edf49f620371fadfbb5e35e01000000000000002c6ef636d3bba8ef79dfc0e6d77bcb38426b54c92b764b29115d25f3af9c871601000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf46010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000e4e005984bbae507a03d158ea8ca3a87505ae3e8723d8f5bfffccb63a23ea61c01000000000000008a40c3acc862dcac958866b738b304be7d84c33d9420b0747eb82aaa21b8c40c010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e01000000000000003490ec62718bc9bd599da2e617059a14a935b6e74a880b6104e9e9806d7e5f45010000000000000092c996c1fedd09190bb0fa8cc79e4075ad79eca3d6895d2a99d20e6f89e4182b010000000000000054a672d14f2d201c99ca725fae26f20cee76af6cc7f1113feeb82e837bc59c4d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad210201000000000000008cb6cde120dd30eb4558ca02e386c43fe94e1dbf1c19fe224b9ac5f7f59ae655010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c46010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000000c3653094fa7896fc85cfdeec42e1a6e462ef5400c09aa7649f10a6c5d3876430100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000229fcd7685d064b9c265aaa3a771582b6600cef963f57af160b34a81c9f84a6901000000000000000abc8efdf09139f1ab9a05ed08b53892f8b9505d299f20c7455539579c2dce690100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e010000000000000044a59cda9b667b713695b267cb7cfc3e783457827f7b82cf3b9e7fe82d50b85d01000000000000008c25d077f2b88ff32aeb8c16d114c73b38c280b79d93f0d0a5ebd0e5af2c7e270100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000bc3cdcf9f41b5f3f073a7f6a29931a6be12fbcdfc1dfe7145c4e0a527e9e243c0100000000000000da132f2f832c8e2a4e268b4faa923d9449c94ebe66f03fa0ac4303f2ceb1b053010000000000000096776e9dad14b2ece6fcddc7ee29a19c27f7d7baddf3e02a493a332d90b4020c0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000cc840ae0117378161b86a52baa6decb97ccfc1101325256f178ba8f67761671d01000000000000009623ad5bd17b75cc58839c76474636ad5675c519e15f090ec008eb626db73b14010000000000000021403f96f9897429aafcd43a1a01d70838cd72d65bb722d447a5fe35c87e0b91010000000000000004000000000000000232d6a307467f307dc5a3286d6637ed6653fcfe0c2b39e114cd46c0c705ebbc3fb7fc3701016f21000000000000334f0611000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000006c9c53f3824abe976dedc2792e1c6b8cc55c317eed2f30916c3229b60e5792060100000000000000ec8fcbae6ca9d402b51bb0bde913f0c29769d8d1b9653f4933db117890fe3872010000000000000034b9bf86acb3f518dd359690e3c47c50c7418fd2cb0ebd8c7cab6dfe2dea095b01000000000000004ea4871b3ccdd1276ee604eb0e06aa4a62536dfe8fb053042a8f36caddb94c510100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000003a36963a41de2036872df1c499f45acc0e7179457316ec2d99a6018e078f6a0501000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e01000000000000005c29ec682e4d6837b594eefc3ec54712e332bed3e1482c4ad16462f46e1edb0e01000000000000004e66face3c69993a0030ee7c7b2fff1a941ab11e523c11b4cf1713b3796349100100000000000000c0698e756d794ed2451fe14a44153707bba5210aea0c3b2c027cd2f5c7edbf4001000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b01000000000000004414b26982f378e237eb9094dd7891d7656e4b78ac61d4534ebd1325a9c94504010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f70010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec326540100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c0100000000000000caa53cf3e8ff5604d82bac45868bf3e25115f7e8f4d1cdfada68f8487d03e91b01000000000000003057a5ccdbce651c71b1ce9d48e9fa23e6720e8e2bbf52f65a0ed14e4a6f3f700100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc3531001000000000000001abb26ba0076d5e001abdcf18d4454fe25c5076bc5ceb1b8f35d6041670c265f0100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c01000000000000001ee57665488b5ad6f7358157b73009a4ec4b14b4a03c976487e188f54bff7d6401000000000000008610e1f00a1eba67d13225867c1f2972e60604e49bea7e5c1b10b29d4841b84a0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b01000000000000004c50abd9279d48439dc8f93aaf679e47981f25372b63d838786dcaf7a3f8d074010000000000000072a85a9dcc0af833b5a21a51ecbc4a9855c2bef8848e080ed70ac48cd1efdd5f0100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000000ee4b76ec5fabf011e00bc27b36039f3d397e021e8bcacf9532c90fc419fca0a01000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000acfd0e585d89c54d57bdbcfcbef574217ce0997c82fab720b2d4e12ce61bd3610100000000000000562fd7529c92f9370dd6d7ce60d06ea4a826cbefa238231993ecfc9e7725ca2401000000000000008ef93e538ce16500f27b4c9a10ef7b02a46d8a9624778d0f83b9f7d8b560466501000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f06787717010000000000000090708d1a49ef0acfea32147a109d08d9aa15ee975b5237d56ca9b8e324108d0f0100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c56010000000000000024efac2829d615703c5375dae24d394207fdd26d9522bad7af6bac64ede12702010000000000000058ca41f3fb960be9f54fcbfba3961d37709552b4b248bcd1f7f820ae3aaabc070100000000000000e487051ee8f32b1f8d0af5e897b49730512303471416e689ccfd0bc3f726f447010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e702101000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000bad91c9aefe173441dae1f273e55090706d412b0723d39bd6c3af053feb183200100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b0100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b010000000000000092bb282d46ed819e46fb3ee929f7662354fd095b67a8ed51326b47e83f86653a010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb550100000000000000220d3f26072ad42aa5ca04b7253284d185f8bf95650faa170cbda8d7a47ea84a01000000000000001081bee090d8e63a5fbe5cfddec37bce3fd08a3411d42f57e6ac6c78ee2d2c5a01000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000d051b4dfed8fdb829387340e3127a51b0d96127ed5837d044bd3344650e30b0c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000012e4e8f29b147f5596fa9f59ccdd35467884318f010063feac87e8985b00ba7f010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e51010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000005673f82330a1ee6e6889f745fe15c353f5f8989e4a281e8aa53e38ce1e74556d01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa740100000000000000a64dd29103d43e3e898a41f3630ff88b2420953febb931c70ff543673efa251b010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000c473d994ae0f9b8532523f5ebc52014bb3fad20e68770fceaf80fa105cbefd0d0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d010000000000000002ecd96c1f4fe196d53f262e75770f1a81c80b5764b01383fb77e20684f2096d0100000000000000fcccf8e328b4cc968af52a23f6c960b5e34241047b630c19a0661ace6b9c273b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000ea5f39a2c4fe3caf9e91f3efa5602b4746d5a9c945371f9a3e75b7b8b787fe450100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d240100000000000000483121b03dee3c339898579611a968f6382ac2a0acf3da8b9e428b2817c8de3801000000000000002c15f94cb3c23fc41d8fcdb453ffacabdfdd1f5e9f6dea494549d06896ee8d23010000000000000050f3e6382021e3c7ee097307d03933571ad45bd056c0eacc86b9ed5174dbd52e01000000000000006cb2f0f0e5fe70eb547a0814ca5346f59f7f2ca74c00714aad555157cd5a29490100000000000000187fcd65da5b05c572bd1809b465ee23d8139deca61327a33a1cbbeccd5b335a01000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000001285919470b092c61b3deaa9ad83226d41f36d58f0ca5f2e14d11d0724f6f00a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000f85f12f4fb92075bc59a1711f35e8f3c8313ff08028d2af80a79b3682a3785590100000000000000a6cd7eca570e90e2efeeda8f1c09480884a073c66fc7c41b2464e11822b12f0c0100000000000000125f4bb2b8d56e62b303ed525cce2e08f1baf016c3e89f28df7f61a3222ddf4e010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000566948c62b699e382e5379592d1ad3e1823640d386936142cb9b82915ed02d1801000000000000009493e6de34e09c9679b6dca602e38d8c07abb77b3cc487ae3a80661968caa37f01000000000000007acafc914dcd1ac429f85e4a1c89580c0bb58b8c67b3cb6924643eca63ce306c010000000000000036184dd6af78dcf4c568359a8e0f72c6a9c51f66eb0b7a9e27456e0b6edea36b01000000000000001a6ae3ba55d3b68146f9b366df0ff4300d8e4cab26dc3892c1207c783caac92f0100000000000000582030a59816ace3ab2c2b8c66ca50a69991899df57096da6f6ca8a49b16550f0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000d82f4f85b1a8eff4e77f709e29f3fe18e9187a2a6fdb84de17b9b3f53a59536f0100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000daeb270a28cecb3752e26270b136566efbb5109ee0bae5e69d91d9bf7d58c9550100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb19010000000000000052e8debcf395bfd2669cdd1cb32f35d7b655a4761f0508751db390aedf2517040100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d4540100000000000000dafd1b81e8401d6715a61ca7c3d32920b24cd28a8708ecdb65b5e7c557d14c440100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000002c4df89d1869f79ae7c9ac36bb355361d5cf3bcf201076476ac961aad535c46d0100000000000000104b41830f092484a00f2d595b8aac969bca6cbf7f386efdd0f79ee9a8c0201101000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c840010000000000000068f3e478d28f00ce97dcbcce5e9cff5674f6b3d8b06f7dd8be7b5f3b6f1b555d0100000000000000009463e59f6b021a1dbdbf65e56f568ac5736baf96470440d7123605a4bcd93f0100000000000000667f7af26c8dd32504777bb2a259a26757808ead5155f3f098558a70d90c575b010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd8780100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e0100000000000000081b0b2be787b16ce685b01ce226d2d9b31379d291c337c400f11c254368660a0100000000000000f69945c37cab30652616de730c6c9af87df24d2dc13f1c1154b58ba53fdca27e010000000000000066a1f2d6065a221392fe7793303a11dd454adbed327fc7395d7a69be69d79a59010000000000000020a16c4dcdb2a546624222a27f099cf5bcecb3b18919bb01c71ed76fca94b0670100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d010000000000000046c5d9750776edafdced20206ffe4b799489f6de9e0983eeb3a9fb6485c7e2220100000000000000f875192456a53adc29b095319d261874ec86a4f35b37330e96a19b2a7fb36670010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000829f64b96b37d0aa283fe99a6d2150069bcbb6be61d076f23b3992b6c1fe6756010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a252010000000000000052b41700df65ea66ffc6cbae47c04a2f20618f5d62ce1ac9304313373d39fe440100000000000000fea10f819b1e9a66130a2f9783c5a014c4faea5501432358597d8c1fa851a0370100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea84001000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e66010000000000000016f34c9e6687012c42f9c02de75b9499849fe771f2ad2e666f965dc6627735540100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd040100000000000000c6856d6e331bb8f1dfe061d4fd679115a6513926be52de2297fdd60a699b633501000000000000009eb1b5beb8b5ca4613c17e6d41996337b26e0ca7289d2f52df05997020eddc50010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e0100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c96654308010000000000000004efb918028f583768356118e9457c36583319eca6d53536596714e782f1596d010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e002b608a4148a8616e5435dfaa8681d0012bd78fea4502541249d97f56acc640100000000000000a8731d355eefdfbdb7fb12cfa5a280c0b1e408aca264ef585d42bf97fcfba1160100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed5264010000000000000022350f7b389967ec6e8c8b6c56ac75a138db742abcff27b1d6b3bfab894d187201000000000000008c1548bb1c08a22a73fc056e7e8c66d8110ef5e6803c1d3a0b2c860f864d4d2101000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a5240100000000000000eedea8652413b5a97c1eda13e1e050b777bd0a8ca31dafd63aeab576a68fb75e01000000000000001836b6f7bcdf39ec4f786ee982799a549605b62f384a74981bf9de018c26fd430100000000000000245a9f1c784e83aa6e1a22b7a560de42348ae1c3402060929d669f110da1b7490100000000000000dc4ae9ca42fe496af7a466de59735813691d9c050f3256c3d4a96664cb6f9f6701000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000c63e31fd558807e07f9c7dc51f8fa8110679bb1b1cf5585e56d0b6164179b9790100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c2301000000000000001e534cbbe982369a968006efa465cf2a16807a88a5c877d45f090192ea619c600100000000000000a8799cec2aeeea9f33bafbcd60c947d0bcf3b1c9be450c43f63004e16a857e72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000fcf8c8db78fab04b332758bb6edb9fde68e74ee228c1eac78812cd80adce1273010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b730100000000000000522ac8207ac3c869ca31085f31a5d26da4362597650fe91048665e868724522e0100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e76301000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c4914201000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000ae91c31922f356569c76a9cd203ba71b3eadedac2d8d001feebf43a39ccd10370100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000002acc31e6fad7d566b446cde6ae5ac91bf9427bad13825cd3ad65887c6a792b4f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000509f915fe6f099fb5807c03be526a055dbb7565c35831a7dd76d6e506d493c4601000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e8529010000000000000034e658d19575dfcb8b27a747917d14806939f0a44eb148e28991150a87641c24010000000000000006adb1e6e78084fd5e5df37fafc180d1ed84377ca41de3b5ca43b764f0cb19090100000000000000a496ba57e511f86ff4cf264f9fd7bd3595b37ae55ad671c7790574c87d40415201000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a85670010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000000f79cec5a6b6b70f768ed05e94d2cfd70b13bc58fa16e62d742ee49aabe967e010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000066367dc21d99167386ed0d0018a18b23a1f7531aba9f6e1d299a43446c86201f010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000009295a1f023157921d346b73484b120d46048382107015aa9ed998f1fae95970e01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000322dcdf3a5f50091af8b876983da0e0e98e358339e6033cdb865cd64995f8613010000000000000088c32710e8a71cf0e9dc4b3b411cf05f7a55daed6f034c999e5f6d4284a4291c0100000000000000c6fbf5153c7b8dd896e8daab854560e2ab669890479fed689ca39f210fe880080100000000000000d8de542a748c14224ee7faa16157727c852ce502a45b408de0975c88a39c690f01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d1097401998560100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f0100000000000000243fc8a61c1f7d74f8e90a8cedb03056041aea1feb71e12bf7b60439cbdd136201000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f0100000000000000300e83228ad8dd39853b6ffad85290d909b1ef1ec4067f631be5da6432aebb050100000000000000224c5b7c7674050aeafd9bb5e710a8c0ba497cda375cc3daa5a16c171a5f445d01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f01000000000000008af88ab005ea3b1a0b3412054c721e574c4b4469e231aa487d9132946e42bb690100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000c69e90c4bd0bd56246bbc856d4f2f3dbffd2d4e0d7afc92b7a0516e452db30290100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de3201000000000000009a3b32b7cc94b119b2753d77d4f38b0e63900a5633773105a551de5b22670e7a01000000000000008e3509e2bcb4497b4bd7b09dbc1d5647212386afc663222f97602067211607160100000000000000a877af86b958cb961cc97cc61fc35602350a87cf9cccefb09dd91f9f792919250100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b01000000000000001810712fbe92f2394892a99e3a825490baf1efaf7a3dd1c9bd0e58da0d671133010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a50030100000000000000163687f38841bbbd2b93787f7f65cc74a2ab94478888abce52207e1b81f46c4d0100000000000000c22b3fe29c3b9eef11a6db4c79ebac692efa4e3a9e4a48affdc415275ce38764010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a463010000000000000000ac029d5e4ce570bafb50b677fed13d43eefcf0075b3ae2520be959c9782f1201000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000ceed28227bff3be87c1a5736f80e425d4a2f79de9edf49f620371fadfbb5e35e01000000000000002c6ef636d3bba8ef79dfc0e6d77bcb38426b54c92b764b29115d25f3af9c871601000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf46010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000e4e005984bbae507a03d158ea8ca3a87505ae3e8723d8f5bfffccb63a23ea61c01000000000000008a40c3acc862dcac958866b738b304be7d84c33d9420b0747eb82aaa21b8c40c010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b0100000000000000c2ed17e0bd49dd177c594eee4bb2096b66e2d02975d06acb8bb25e8178d5664201000000000000003490ec62718bc9bd599da2e617059a14a935b6e74a880b6104e9e9806d7e5f45010000000000000092c996c1fedd09190bb0fa8cc79e4075ad79eca3d6895d2a99d20e6f89e4182b010000000000000054a672d14f2d201c99ca725fae26f20cee76af6cc7f1113feeb82e837bc59c4d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad210201000000000000008cb6cde120dd30eb4558ca02e386c43fe94e1dbf1c19fe224b9ac5f7f59ae655010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c46010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000000c3653094fa7896fc85cfdeec42e1a6e462ef5400c09aa7649f10a6c5d3876430100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000229fcd7685d064b9c265aaa3a771582b6600cef963f57af160b34a81c9f84a6901000000000000000abc8efdf09139f1ab9a05ed08b53892f8b9505d299f20c7455539579c2dce690100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e010000000000000044a59cda9b667b713695b267cb7cfc3e783457827f7b82cf3b9e7fe82d50b85d01000000000000008c25d077f2b88ff32aeb8c16d114c73b38c280b79d93f0d0a5ebd0e5af2c7e270100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000bc3cdcf9f41b5f3f073a7f6a29931a6be12fbcdfc1dfe7145c4e0a527e9e243c0100000000000000da132f2f832c8e2a4e268b4faa923d9449c94ebe66f03fa0ac4303f2ceb1b053010000000000000096776e9dad14b2ece6fcddc7ee29a19c27f7d7baddf3e02a493a332d90b4020c0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000cc840ae0117378161b86a52baa6decb97ccfc1101325256f178ba8f67761671d01000000000000009623ad5bd17b75cc58839c76474636ad5675c519e15f090ec008eb626db73b140100000000000000d04b5e50e1ff2f10e1055b348b921af0cc6f9cf50ba70d4671a9d47fe0131c880100000000000000040000000000000002c43327dd6b89cd8a1dfbfd8163edb2a14a577534f1bbb117107d99a63d80486b5cf33701016e21000000000000d3450611000000006009000000000000a50432904ec260963195582a1d339f9fbd2d5d76f551160105c922423cad0d94482f010000000000000076441c448aefcf40a72128edc9b44a4f7ef9c267c503e98f5f9c72d5e9e92f000100000000000000526e055ade4ac425e9b5f93ce4394601335d3599a5b742603126d78ce99a4a540100000000000000d0e8ddfdeacd8e163b01ca4da1a4e856312b0de412b492247070f2721f7d803801000000000000006c9c53f3824abe976dedc2792e1c6b8cc55c317eed2f30916c3229b60e5792060100000000000000ec8fcbae6ca9d402b51bb0bde913f0c29769d8d1b9653f4933db117890fe3872010000000000000034b9bf86acb3f518dd359690e3c47c50c7418fd2cb0ebd8c7cab6dfe2dea095b01000000000000004ea4871b3ccdd1276ee604eb0e06aa4a62536dfe8fb053042a8f36caddb94c510100000000000000ba395fcb33327501109ed40712c7a372d25bf3339edfabe2a1964fb7b5d4d82401000000000000003a36963a41de2036872df1c499f45acc0e7179457316ec2d99a6018e078f6a0501000000000000004c9886e2e62ee92a6778d6a7928052732044b64fa61969cd8e37f3f7e3406f720100000000000000c056f1879c1fd443e38244c26ef138218b3e43e70b1cb84bd7242e354cc9ee0e01000000000000005c29ec682e4d6837b594eefc3ec54712e332bed3e1482c4ad16462f46e1edb0e01000000000000004e66face3c69993a0030ee7c7b2fff1a941ab11e523c11b4cf1713b3796349100100000000000000c0698e756d794ed2451fe14a44153707bba5210aea0c3b2c027cd2f5c7edbf4001000000000000005237e4509f24bc9e8bf9bfd78b594219d86853ae16601f692f10c9b16b88f83b01000000000000004414b26982f378e237eb9094dd7891d7656e4b78ac61d4534ebd1325a9c94504010000000000000098192016f83ef2fe74dba1ecc6526efc61b79f3177c00dc7c053160391858f70010000000000000078c35105ea4cd9d6ea0ba91b2c19e78f60931bef5918c1bd2e14259229e7c330010000000000000006d2846642c835b0fb1ff1ef908449376aa8e7c0f3352e55da9a1e97e9528b230100000000000000f8a681118ea0bb9dfde2813ce5144eeb5cee881c27883de1c0c759255ec326540100000000000000e67c524e443cda4cd27dfcce70488a5d23a93c8c46a5e83ef5a69eff3a02fa5a0100000000000000a42289d68c963358f3c450a850242bb53121e73e17f0e2ea2b93327446bea33c0100000000000000caa53cf3e8ff5604d82bac45868bf3e25115f7e8f4d1cdfada68f8487d03e91b01000000000000003057a5ccdbce651c71b1ce9d48e9fa23e6720e8e2bbf52f65a0ed14e4a6f3f700100000000000000a8e470f2339e3ed0da456780dd9207e9c6a02459238ec3057a6ade01fd6cd60a01000000000000005c7f05d77f853f3eb8d4989fce36d0808b6d2b881e26f13c01e939b5d489a57d01000000000000002addf696d5a42b0a3dada689731e00c991db936909df869ac6600662abc3531001000000000000001abb26ba0076d5e001abdcf18d4454fe25c5076bc5ceb1b8f35d6041670c265f0100000000000000b4ffe3c5959ff37c11c6f19d91926cb97aa4bf0f604919e1753bb55664d061680100000000000000bc4c9b5425f9a2aa09e3239332c702dedbfffa2b9f4cc1b978b307fc1fa1337c01000000000000001ee57665488b5ad6f7358157b73009a4ec4b14b4a03c976487e188f54bff7d6401000000000000008610e1f00a1eba67d13225867c1f2972e60604e49bea7e5c1b10b29d4841b84a0100000000000000be18787b5177e58664cd893fdaa20a3ca1bc9f1acbbb15036b046ae49c17c15b01000000000000004c50abd9279d48439dc8f93aaf679e47981f25372b63d838786dcaf7a3f8d074010000000000000072a85a9dcc0af833b5a21a51ecbc4a9855c2bef8848e080ed70ac48cd1efdd5f0100000000000000c49cfd152ce3ac1fa142b3b6e720cb173eb7f43c82f021418253a070036f870c01000000000000000ee4b76ec5fabf011e00bc27b36039f3d397e021e8bcacf9532c90fc419fca0a01000000000000009237113cf97fee5fafbeb82de593f6125e9c498bd59f0369625f46b326c7d9170100000000000000722d7d57085c250af633f2d461874d59aebc8021eb1112ec8805db5ddea53e5a0100000000000000acfd0e585d89c54d57bdbcfcbef574217ce0997c82fab720b2d4e12ce61bd3610100000000000000562fd7529c92f9370dd6d7ce60d06ea4a826cbefa238231993ecfc9e7725ca2401000000000000008ef93e538ce16500f27b4c9a10ef7b02a46d8a9624778d0f83b9f7d8b560466501000000000000006a1274b6748bf822ba80c9a9416abd3cf591b7aee6adabb8359b7dbed8ebb3770100000000000000dc1274e0689c7a3eac31b41ce352719529e65c01f26999f74ce17c9905fce87401000000000000009c9bc1074cf465c0dd39f74bfdf16a67f81339ba2ad117a0c7030b4f06787717010000000000000090708d1a49ef0acfea32147a109d08d9aa15ee975b5237d56ca9b8e324108d0f0100000000000000d8b38c77823eb1912bf8b743cca6c655ea1844ee468fbd78b394bf222bf8bc2001000000000000007251d6c376064f07f27d2532b05c091bd0978067b078c9f8d9984fd4216bdd4b0100000000000000487c6aad1cc26893dc7e498916a4c23d303f098c04b0a8b0c8242fbb7e73a16e010000000000000088f9a16886165d00612032cb1b36669ad62b7325536f499191e711134c71b6070100000000000000bc4b95226de4e10f91e0254cfe4541232252deaa347f567df124aba81bac4d3f01000000000000001eb833e31087d6baffee4e7f1d9a8e3b7013ea392c81f74313a354ba82e92f6b01000000000000009c8c7c8c91df0ed53864f69017d530b5ebda3ab4bde3c67027e70893213d533a010000000000000018ec239eec5457ba11a41518e7c5f98266d1bdbd67602641d04706f95dba5c56010000000000000024efac2829d615703c5375dae24d394207fdd26d9522bad7af6bac64ede12702010000000000000058ca41f3fb960be9f54fcbfba3961d37709552b4b248bcd1f7f820ae3aaabc070100000000000000e487051ee8f32b1f8d0af5e897b49730512303471416e689ccfd0bc3f726f447010000000000000028a027ca1c0bdeebfc8fce85ac4bac48cc072523d9c4a86b4f2594f9142e7e3b010000000000000042e4c41a899dfb238649e5b17dc232c2699353635d60e6a3bdcd71f9b82cda300100000000000000ce4bfd8c5611b1637066ef9e579c85efadfc9513b882184e00b75871ef7f5a2d01000000000000005c0419f37036f2bf999f3958b49f63ab19d6dc19847a393dfd26cf303fc8d911010000000000000028558e46037c51ece4d39a8a4d34688662e629413c221d6226afe454240e702101000000000000004a2073ae31b3df10d285eae6a5befe069183c4c6a6ffa1b2bf432011d0d475200100000000000000bad91c9aefe173441dae1f273e55090706d412b0723d39bd6c3af053feb183200100000000000000be03fe6bc03a7884524047567a8ccf43b3c988bf3b447ca9e1520d1c1f83c53901000000000000005461977495f9c407a8d951e860a1cb2087592103229bdbd879629cc538a4182b0100000000000000b05ad6cde0dfc019d740c3f50b8aac16550ff4c197da19cf23b9293f0c5c39070100000000000000bc56c07cea21bcbbe058aedd2ced9fb4757caead55f96bda9bed1c9669c32b64010000000000000078e1a4fecbaac940c04e0b591a01ea66a574b5098852ded2810e3a534971111f01000000000000006ccf2ce8e149999a7bb996faa65194e60aeb7bcd1937c787f886fe979fb49e6601000000000000000e5650026c7bee4fa43a2c7fcdc3452daa10b0530863ec686b1d5ee4d707600501000000000000001e866bed92016cd2dcabe2d87fcaf8c1d7248255cafb9e10638fc3a2b476221b010000000000000092bb282d46ed819e46fb3ee929f7662354fd095b67a8ed51326b47e83f86653a010000000000000082b820c5bee8ee77e35203dab387f3434b8502e5f1c35dfb2ad15b5c89d47b3c01000000000000001cf3446b4b5116a1784d92cdc5101e55a5fb91ed3d93efccd06b304a94362d0a0100000000000000c6d5dc6e1ec83491397390449d8cddaa88631e8855efe50697788a93de00fb550100000000000000220d3f26072ad42aa5ca04b7253284d185f8bf95650faa170cbda8d7a47ea84a01000000000000001081bee090d8e63a5fbe5cfddec37bce3fd08a3411d42f57e6ac6c78ee2d2c5a01000000000000003a4b0919068523aa04ab29f1b49bdc03a176a4b93f9b5a7e6e0cdcc8318691030100000000000000d051b4dfed8fdb829387340e3127a51b0d96127ed5837d044bd3344650e30b0c01000000000000007480edf84ab569e559dccc99b87ecb9ae9db670b45a259b7f6e618b063e43113010000000000000012e4e8f29b147f5596fa9f59ccdd35467884318f010063feac87e8985b00ba7f010000000000000026c4a27200f70748b52f7277150d2db7e192b258d5001412e42c62c6e3ee1e51010000000000000040a2527ffa7d30d788eca127d435c8b5aa48972cda538b9a1627a57e85c8fa1901000000000000005673f82330a1ee6e6889f745fe15c353f5f8989e4a281e8aa53e38ce1e74556d01000000000000002254fb9324a6a9af450ce3a4f5ab25f55deb22161e520b2308b8aaff42e3aa740100000000000000a64dd29103d43e3e898a41f3630ff88b2420953febb931c70ff543673efa251b010000000000000028e972febaf463f22d1108053e7c26ccde1e6018d7c302985bc227557e0a663b01000000000000007c4f928b915062d9cb15e854a9476cddbf7126c9de2fd70f67beaf2ebf6dbc5c0100000000000000c473d994ae0f9b8532523f5ebc52014bb3fad20e68770fceaf80fa105cbefd0d0100000000000000fced8f1dff4f6c6852b0d643e26ee532086e72be7aecee28d94d1d59b5f9986701000000000000004a905d0574cebf6e8d00d382b104fc8ee1c008f1b9ffa6fa5c3b67ff29719c0d010000000000000002ecd96c1f4fe196d53f262e75770f1a81c80b5764b01383fb77e20684f2096d0100000000000000fcccf8e328b4cc968af52a23f6c960b5e34241047b630c19a0661ace6b9c273b0100000000000000be6106f9217a1847af66de9510fdfb40514409556506ddc1c1a897818434125b0100000000000000ea5f39a2c4fe3caf9e91f3efa5602b4746d5a9c945371f9a3e75b7b8b787fe450100000000000000bca6409d6d7e4f94ce797594db4363bb8bebd5387770aee0bb7663b36354fe2a0100000000000000b2518044cc31062ee50fa81cb6983f314291a0300865fa5cfe149829c5050d240100000000000000483121b03dee3c339898579611a968f6382ac2a0acf3da8b9e428b2817c8de3801000000000000002c15f94cb3c23fc41d8fcdb453ffacabdfdd1f5e9f6dea494549d06896ee8d23010000000000000050f3e6382021e3c7ee097307d03933571ad45bd056c0eacc86b9ed5174dbd52e01000000000000006cb2f0f0e5fe70eb547a0814ca5346f59f7f2ca74c00714aad555157cd5a29490100000000000000187fcd65da5b05c572bd1809b465ee23d8139deca61327a33a1cbbeccd5b335a01000000000000004ad8fedb395dc0ed63e0edbdbd2d20555b61a46aa7cd751e4308335c277cbd6a01000000000000001285919470b092c61b3deaa9ad83226d41f36d58f0ca5f2e14d11d0724f6f00a01000000000000004c5e6997b6f186855b1f4c9f8ab2d6cea3da2e86445605ab89e5b5821e05bd3d0100000000000000f85f12f4fb92075bc59a1711f35e8f3c8313ff08028d2af80a79b3682a3785590100000000000000a6cd7eca570e90e2efeeda8f1c09480884a073c66fc7c41b2464e11822b12f0c0100000000000000125f4bb2b8d56e62b303ed525cce2e08f1baf016c3e89f28df7f61a3222ddf4e010000000000000068508b2ca3e01d7c8d79d99f1bb06a93058d14f1061d5fed4df13d4bc30aa557010000000000000074f02ed037d28c883df643034a596e4d2a97a23782ee8483c9ae3429ede7e7090100000000000000566948c62b699e382e5379592d1ad3e1823640d386936142cb9b82915ed02d1801000000000000009493e6de34e09c9679b6dca602e38d8c07abb77b3cc487ae3a80661968caa37f01000000000000007acafc914dcd1ac429f85e4a1c89580c0bb58b8c67b3cb6924643eca63ce306c010000000000000036184dd6af78dcf4c568359a8e0f72c6a9c51f66eb0b7a9e27456e0b6edea36b01000000000000001a6ae3ba55d3b68146f9b366df0ff4300d8e4cab26dc3892c1207c783caac92f0100000000000000582030a59816ace3ab2c2b8c66ca50a69991899df57096da6f6ca8a49b16550f0100000000000000840290d318350bff32db3dcf6138b822cb2adf1dedf5bad8729471988955915c0100000000000000d82f4f85b1a8eff4e77f709e29f3fe18e9187a2a6fdb84de17b9b3f53a59536f0100000000000000c264fe63e84cd004530d2a3eabdde5098fe5c6b619af7fc6c9cfeba01e75ee5701000000000000001ec005e9ca3c15b2994641dd22efcbb20032f10894f76f57296d219dc149817b0100000000000000daeb270a28cecb3752e26270b136566efbb5109ee0bae5e69d91d9bf7d58c9550100000000000000a07f151db53097c2da9dac4b2e0f194931a677a3ba99df0f3976e34409fd64760100000000000000d8faee17dcc461acb22ca1720b86385414ea8810ba31509fbd8da8733029eb19010000000000000052e8debcf395bfd2669cdd1cb32f35d7b655a4761f0508751db390aedf2517040100000000000000b071e9d6b444a555e034ecdc4d04f2528cc36b347b231b33388564a40fd32b2c0100000000000000f820a8ed2c97f639fea2892d0a89ae98ffc4c0054f948f9a0108e4d99f89994c0100000000000000fcd5f4c4fe11f20ad99dc8345b7dc5600caba5d5b7d3f499c3253c095152d4540100000000000000dafd1b81e8401d6715a61ca7c3d32920b24cd28a8708ecdb65b5e7c557d14c440100000000000000142445d894c1236a38c6b1bcd9f5a7245897026424ce9544002008a7702c3b1d0100000000000000780e4353aca40b0f2b2403c862cb33032d49a820244bdc2853ce158d48c4f61001000000000000002c4df89d1869f79ae7c9ac36bb355361d5cf3bcf201076476ac961aad535c46d0100000000000000104b41830f092484a00f2d595b8aac969bca6cbf7f386efdd0f79ee9a8c0201101000000000000000e2daa2ef7884bdc7ca5f843f4f33f070c790e9a19d314bceefd04622920216301000000000000003e8394db87d36ddce56bfe0b86922dcc9a86d1ba061600e22d9694027b18c840010000000000000068f3e478d28f00ce97dcbcce5e9cff5674f6b3d8b06f7dd8be7b5f3b6f1b555d0100000000000000009463e59f6b021a1dbdbf65e56f568ac5736baf96470440d7123605a4bcd93f0100000000000000667f7af26c8dd32504777bb2a259a26757808ead5155f3f098558a70d90c575b010000000000000092ee092cd2215c7c1628086c08be10a3cb969f6b276f600422f3526f303bd8780100000000000000020d34131c7a0ab6d104839ed8b9e0cdf075b80409a36fbe94d0cf83f7ea1f1e0100000000000000081b0b2be787b16ce685b01ce226d2d9b31379d291c337c400f11c254368660a0100000000000000f69945c37cab30652616de730c6c9af87df24d2dc13f1c1154b58ba53fdca27e010000000000000066a1f2d6065a221392fe7793303a11dd454adbed327fc7395d7a69be69d79a59010000000000000020a16c4dcdb2a546624222a27f099cf5bcecb3b18919bb01c71ed76fca94b0670100000000000000f44b3ec5c7b2188f208d60d159d1f5b0914a51a0632eacea6b88ec7b26d6673d010000000000000046c5d9750776edafdced20206ffe4b799489f6de9e0983eeb3a9fb6485c7e2220100000000000000f875192456a53adc29b095319d261874ec86a4f35b37330e96a19b2a7fb36670010000000000000006451fa7b2d831264e40a3e5b8452ede10164b7162a0e93bb9789a102c3010420100000000000000829f64b96b37d0aa283fe99a6d2150069bcbb6be61d076f23b3992b6c1fe6756010000000000000022a66dd6397c2631df509db3482baac28b546729e6ce965472a9ba2e648ccc74010000000000000082bb250beb58df1c5346dc5dc26dbc38647a59fcd5c220c41466606cd855a252010000000000000052b41700df65ea66ffc6cbae47c04a2f20618f5d62ce1ac9304313373d39fe440100000000000000fea10f819b1e9a66130a2f9783c5a014c4faea5501432358597d8c1fa851a0370100000000000000a065f45a353f24ba187248aacd9c64d5c3a92ddf92b4a5c33994f56a07cea84001000000000000005432de09683010f3c1a6a977dd0dfdd8c5ce9fdb85225b9b7dc8e451e340cb240100000000000000464cb5dfedc6938caef6caaf5a58f4925a295f24a4f37337033dafa0cc733e66010000000000000016f34c9e6687012c42f9c02de75b9499849fe771f2ad2e666f965dc6627735540100000000000000f60b5e74957220ed7664befb71e9621436e40f2b6c1bdb1c90a6de9c3540a84001000000000000002a98fbaf7ec22832522e3f96821711ef684283911a524960efb14953255baa2b0100000000000000fe0af833307f4cff497d006ec63385b1c191efd6a4547fb05a355cd23686dd040100000000000000c6856d6e331bb8f1dfe061d4fd679115a6513926be52de2297fdd60a699b633501000000000000009eb1b5beb8b5ca4613c17e6d41996337b26e0ca7289d2f52df05997020eddc50010000000000000036c5a061b47768957b2b939b2e37e4cdf8825a4abf963c4f912f3ba4cd567f1e0100000000000000f4ccdf83d734edcc568462572abaf32d22ac7faf8000195e02273d1c96654308010000000000000004efb918028f583768356118e9457c36583319eca6d53536596714e782f1596d010000000000000048ce0aba6f1554e139568b4d2358d6cca9bc291d3600787cc3e732291002ca220100000000000000e002b608a4148a8616e5435dfaa8681d0012bd78fea4502541249d97f56acc640100000000000000a8731d355eefdfbdb7fb12cfa5a280c0b1e408aca264ef585d42bf97fcfba1160100000000000000fa5a4da949ce29dd0fc20fe56c40d63ffded8e2dd88844f725efda0814ed5264010000000000000022350f7b389967ec6e8c8b6c56ac75a138db742abcff27b1d6b3bfab894d187201000000000000008c1548bb1c08a22a73fc056e7e8c66d8110ef5e6803c1d3a0b2c860f864d4d2101000000000000003ce775a4a6215dbfbdc2b0a8a8b71936abd61642b5fd1a0c1d06ba548ad3025e0100000000000000bcb998778b7c2c182f396b311f92ae1289daeed9e62a3d8a8298b8dde7e1a5240100000000000000eedea8652413b5a97c1eda13e1e050b777bd0a8ca31dafd63aeab576a68fb75e01000000000000001836b6f7bcdf39ec4f786ee982799a549605b62f384a74981bf9de018c26fd430100000000000000245a9f1c784e83aa6e1a22b7a560de42348ae1c3402060929d669f110da1b7490100000000000000dc4ae9ca42fe496af7a466de59735813691d9c050f3256c3d4a96664cb6f9f6701000000000000009a64daca74d14dab93385e52ca70940732a8d45ae4b853ce156c3eeca06f0c5f0100000000000000c63e31fd558807e07f9c7dc51f8fa8110679bb1b1cf5585e56d0b6164179b9790100000000000000eed7e8e8a64dfa89c548a31c1b9fec7af5aef4dbbdb26997b2ddca72d4f8790c0100000000000000fe5ba24461a8be22c5e553d2715748ece9c50a621d1794e36ad6c40dcd5d9c2301000000000000001e534cbbe982369a968006efa465cf2a16807a88a5c877d45f090192ea619c600100000000000000a8799cec2aeeea9f33bafbcd60c947d0bcf3b1c9be450c43f63004e16a857e72010000000000000078cf1debe3fc0da2ed2473d1e1835a478cc3e7008e0cf42043f287bc36804b710100000000000000fcf8c8db78fab04b332758bb6edb9fde68e74ee228c1eac78812cd80adce1273010000000000000032e2c97e308c84afea4b37d7dd8f62e67763126c357c9e6e49b27f54c3702b730100000000000000522ac8207ac3c869ca31085f31a5d26da4362597650fe91048665e868724522e0100000000000000843778dfeddea10578fab2773f2827c62fe0efe374d9a01eb370bd8f1427e76301000000000000007cb1f225b90c00f426c33ac4338eeb2dae6467b8a9da5c1556e6588c12ca977b0100000000000000b261a66b9bae17b65e7f6a88d65efb4519925d6c418c9e2ba17bfdbf684b776301000000000000009c5d3bb1387f53f0306bf7f24e81dafa5bf972048de867e2e517938c4ebdf7120100000000000000560c91919fc22867159ed77bee1b3e70d2e222a5fe6e830fceb13b58b0daa5290100000000000000e03e94cd4419d9cb8709ad2859e598912c78c01b15eed53ec0c336d8d6c4914201000000000000003227028def74f8ea7bede3e112e4ce09d8fb823790ed599f2259019945f2690a0100000000000000ae91c31922f356569c76a9cd203ba71b3eadedac2d8d001feebf43a39ccd10370100000000000000c686fbbc968476537924f90aaa4993eef8314685d150228c462f8ae4e5e1e57f01000000000000004ca838afa9f12e88436eacb5024f3f94c95a66c32e114f65f3136176e426c75501000000000000000c60356c02d5d99293952c478fd07b2cff982dbad863ebdadf25c9e69206f14901000000000000003a8b589c8222ede45b3d95c8d9176543ffa9a29cbfa0ba2af60fc412e732d75e0100000000000000a43b19f13ec057124df240aad303e969f7d02fafc02c263d7ec814b6729d1b2001000000000000002acc31e6fad7d566b446cde6ae5ac91bf9427bad13825cd3ad65887c6a792b4f0100000000000000f2cd13ba1efd67dfd5f8c9150b1a74d1ed1bad1a72c36fed96163b062e463d0101000000000000005258f48e31bc89f5d53ea6a12eea9698f8e72c6068ac1588100d8632bc674d1e0100000000000000ecf0297bddebd3d766ea7def2bac79ad6eb650fabdcd029b99cb1649ff7dc8150100000000000000509f915fe6f099fb5807c03be526a055dbb7565c35831a7dd76d6e506d493c4601000000000000008a16fb5a6718a714296cb8fa2ca708f677f78c7f883ba3c5ad1bbb9e23f37705010000000000000038c9a0897d9caff03a308d2120bbe892974ae8cb05f1cfe8b97259f0ac2e8529010000000000000034e658d19575dfcb8b27a747917d14806939f0a44eb148e28991150a87641c24010000000000000006adb1e6e78084fd5e5df37fafc180d1ed84377ca41de3b5ca43b764f0cb19090100000000000000a496ba57e511f86ff4cf264f9fd7bd3595b37ae55ad671c7790574c87d40415201000000000000004e466f6a4930d856a1f53f21c1a44451ead20c8c71319f6a685f0e254d24c32101000000000000007617b69110c43683b5000788259be855890c474be8fed65d7b1dae1d534ef85c01000000000000002037d70f4c244c81422409ad01d28d72a30d26e595fbcc791daeb57f78a85670010000000000000088fa8bb07ebce99964718c65d0d6f1b091ef2f4d4cdf7b94a22c42c007ecd706010000000000000000f79cec5a6b6b70f768ed05e94d2cfd70b13bc58fa16e62d742ee49aabe967e010000000000000052ac28ba2601723d23a086b5d775f19319f110ba5e9292f2af461e71903b5b50010000000000000066367dc21d99167386ed0d0018a18b23a1f7531aba9f6e1d299a43446c86201f010000000000000092e5bb9d0906f768dbdde0696b78e493cc78dc1f68789575b24f0b962799b51e01000000000000009295a1f023157921d346b73484b120d46048382107015aa9ed998f1fae95970e01000000000000004a512ac212da2c96d7bc8590865ce627e6b60246700595bb100b240e80a3f0760100000000000000322dcdf3a5f50091af8b876983da0e0e98e358339e6033cdb865cd64995f8613010000000000000088c32710e8a71cf0e9dc4b3b411cf05f7a55daed6f034c999e5f6d4284a4291c0100000000000000c6fbf5153c7b8dd896e8daab854560e2ab669890479fed689ca39f210fe880080100000000000000d8de542a748c14224ee7faa16157727c852ce502a45b408de0975c88a39c690f01000000000000008013bf5a25c703e64dc4ae7e1248c0f2c7abad9e43672d82611d1097401998560100000000000000188d1a45dca0c370ba6b7952ba682570fd4f61501c4dea9826a981374a3f815f0100000000000000243fc8a61c1f7d74f8e90a8cedb03056041aea1feb71e12bf7b60439cbdd136201000000000000004c1dbdaaf0fb061228d2245561476088bc608788cb3e9c5266f5a8e54bdd1e670100000000000000d23c53a531e356646133db73065cd83999693a5bdfc05931238434f5b031522f0100000000000000300e83228ad8dd39853b6ffad85290d909b1ef1ec4067f631be5da6432aebb050100000000000000224c5b7c7674050aeafd9bb5e710a8c0ba497cda375cc3daa5a16c171a5f445d01000000000000006a40a8b74a142958efb2d75cd363635eccbfb70cddb24f0626d0ec927d98233801000000000000005e127fe875a9c6396693b778833a710b0426a4fc0af4af490e7ff0a6f3e8b61f01000000000000008af88ab005ea3b1a0b3412054c721e574c4b4469e231aa487d9132946e42bb690100000000000000aa74176b5870c97b754a157ec0d8032148c2ae717a905e0e5e626048b6f5334301000000000000003e07b075219fc7ace8dc3bf3a06f5dc12aa9c7e45fe30244d2284bcfb1e6ee190100000000000000c69e90c4bd0bd56246bbc856d4f2f3dbffd2d4e0d7afc92b7a0516e452db30290100000000000000a4a0bc81aaad1ebce3fdf896a8d6d081ab93efc2de9d5c56f2632edfeaa7ad0f0100000000000000465242c8915eea46e25549f2ab97cfe78784f25083e51773e07d5a0cafc2de3201000000000000009a3b32b7cc94b119b2753d77d4f38b0e63900a5633773105a551de5b22670e7a01000000000000008e3509e2bcb4497b4bd7b09dbc1d5647212386afc663222f97602067211607160100000000000000a877af86b958cb961cc97cc61fc35602350a87cf9cccefb09dd91f9f792919250100000000000000288c08430a7e427400dd5b61926b74a82abcbbc91ac739190cc791a581f6836a0100000000000000eec1df2a382f2f9d0e7dbd91ebffe7be19dc9e01159cf3b82229a3ad2a33685b01000000000000001810712fbe92f2394892a99e3a825490baf1efaf7a3dd1c9bd0e58da0d671133010000000000000028052d0b965ed862b7861aa7f3f91fe52ff8b0f795ff476c7e0a7aa42e79933001000000000000001c860d36fc84a54978d99ad400a719dbbef493f8631856e6def3e9ec998cde3e01000000000000002ef781a1d268b8afb0a8331ece83f3fff6877baa2d06ed9a23d484d5d70a50030100000000000000163687f38841bbbd2b93787f7f65cc74a2ab94478888abce52207e1b81f46c4d0100000000000000c22b3fe29c3b9eef11a6db4c79ebac692efa4e3a9e4a48affdc415275ce38764010000000000000066a5a598bd5d484fe66e630a3e57f3b245fe0413f81401d7a5d59aeed1a3a463010000000000000000ac029d5e4ce570bafb50b677fed13d43eefcf0075b3ae2520be959c9782f1201000000000000003622bfbaf9350b5906bdf9ce362e06726224ed141c5d29e8e175e0beedbd3d3d0100000000000000ceed28227bff3be87c1a5736f80e425d4a2f79de9edf49f620371fadfbb5e35e01000000000000002c6ef636d3bba8ef79dfc0e6d77bcb38426b54c92b764b29115d25f3af9c871601000000000000007836067da2bc290dc3c428c548a4dbebfdeddbc10a2db206abb6ac11741dc63e01000000000000006ed90090a744a0d55adf8f8af5af4d5198bb67220ce33fe71121d7c51f27a4130100000000000000bc20aa968087f7c0d4bb35dd9c502db39fd7f4596a412880fdcd5ddba22fcf46010000000000000072f2ff3d21f4126e217f10f9d9bd18069c12eaab6922d073dd5241ac718e91200100000000000000e4e005984bbae507a03d158ea8ca3a87505ae3e8723d8f5bfffccb63a23ea61c01000000000000008a40c3acc862dcac958866b738b304be7d84c33d9420b0747eb82aaa21b8c40c010000000000000094cc8c46f9670417f5ad9492d17189c4e03e96122782e92824f05e176d6843790100000000000000369a7419ed7884aecd3cda7ec3576942cacde7a9b8f2fe9a1115be827e2ba83b010000000000000096ef8b525c38b9a74a3014bd99979230dab2f20221e8c7d1db50c7a61a02e97e01000000000000003490ec62718bc9bd599da2e617059a14a935b6e74a880b6104e9e9806d7e5f45010000000000000092c996c1fedd09190bb0fa8cc79e4075ad79eca3d6895d2a99d20e6f89e4182b010000000000000054a672d14f2d201c99ca725fae26f20cee76af6cc7f1113feeb82e837bc59c4d0100000000000000f2065428f52da2f7a881f9b94bfd38719bb6e5ff88a6800bbb3aebb1a9ad210201000000000000008cb6cde120dd30eb4558ca02e386c43fe94e1dbf1c19fe224b9ac5f7f59ae655010000000000000092006149452119964a75232851f01361608dc0a52031f240e93e70e98a3ff21901000000000000009ad36892ec05281de9c63c7cefb3f31e448957a9572e650d9f3af1f21b2f515e0100000000000000bae8e68bc8f1b66fe3229ee72d77137b394c6b7dfbf55e424f9d2c82d5c99600010000000000000098f7988d5a74a0e52f58dd3d232ac3e93ff757480db9d4c12761b04fef032c46010000000000000060b521110672f6f871978fd3ac4a835b5e30c3fa727c04c70dbc543fcad38b0e01000000000000002ab0b5cc358184be4fa29e7a3dc24806a72e55baad40ec9a117324a884242c280100000000000000e05c7c7d82498be85294ee984e1f0caf23c53fa9a64cc7e6c5053304c4bb785101000000000000005afe620da258a48f00c3afbb8a98161e977f076c7e7f8392975a4f0db4b57d6101000000000000001ae9aab4a890c558ac8ab90ccbbf193b3841083670ebed278b2161fa2ec7b30401000000000000000c3653094fa7896fc85cfdeec42e1a6e462ef5400c09aa7649f10a6c5d3876430100000000000000c2d156c96e21691a06cecd4a396978f94cfb3a1760d41180efe382b7ce8e993f01000000000000004616ac86f0d45899eed3f1246dc5744858a694a92b0abd9f10e52dfc9c2867460100000000000000a4b31af719e5d9c3b69326ef920736e8b620b329eade475ae23a33fbd445df7201000000000000009281394b5d35827c826e1d7444f346c247b9a004aa0292a9ca2b16e0fb55687701000000000000007e88cd54f47c1f4ddd9d3a198fc689d24a523fe186d526b14e476f14ced7db3c0100000000000000229fcd7685d064b9c265aaa3a771582b6600cef963f57af160b34a81c9f84a6901000000000000000abc8efdf09139f1ab9a05ed08b53892f8b9505d299f20c7455539579c2dce690100000000000000068245d8a483bdbd4e9d88b49e17a651ec168f25e6851fc52c2e36a516031d5e010000000000000044a59cda9b667b713695b267cb7cfc3e783457827f7b82cf3b9e7fe82d50b85d01000000000000008c25d077f2b88ff32aeb8c16d114c73b38c280b79d93f0d0a5ebd0e5af2c7e270100000000000000386bcf52f4c464e6a18169f776d69e90880301f01fcc8cc0ba451f1d7e6c3b7c0100000000000000bc3cdcf9f41b5f3f073a7f6a29931a6be12fbcdfc1dfe7145c4e0a527e9e243c0100000000000000da132f2f832c8e2a4e268b4faa923d9449c94ebe66f03fa0ac4303f2ceb1b053010000000000000096776e9dad14b2ece6fcddc7ee29a19c27f7d7baddf3e02a493a332d90b4020c0100000000000000a8d082a4289fe5ccaada604e70c4b1473d6fae4374663672e61474852c1ebf2a0100000000000000cc840ae0117378161b86a52baa6decb97ccfc1101325256f178ba8f67761671d01000000000000009623ad5bd17b75cc58839c76474636ad5675c519e15f090ec008eb626db73b140100000000000000de773fe0a7d3c5dd09b8d48cabd3ba2cfbe45044b428fb53dbbae163da05efe10100000000000000040000000000000002", + "babeFinalizedBlockWeight": 5105475, + "finalizedBlockHeader": "0x4d7c70c96dc03256f5cfd1356554ccbc769d6f39d4e320d737823fdc6b8bfce5aef9df04ecc3fa09c6bf7f3e6726d6a6aea3d91e535470ca97d50e8da1e3363f33e6e04372b1b7b216470a8b2a16b759c34ea51e0baf80ef20802fd53caa16304a2635010c0642414245b50103b200000088470611000000009e3c3828db9c894bc23a97a2bee6d2e7a845eb7875b8bd6f86a789f850aaca2d80cc15187cad4bfa3cccca45e282c0e1d7bdfcce4b502878f9713a3446760b02b7f96b711115b23bfe2d6c5e2313c6f32ceec0adc92c45dc17e7254e6306310c044245454684031452d6a895d79f9c5672cbf23da16c8b7a818c6eca0103ef69be2b4407ac3b3f0542414245010142d95ec5036f89de2bf38780b64760b57a12edf93d2711e52c17ae459ddaad7181bb6ef325ab4cdaf377b0462dfc18fdb24b82040f3bc773334c3c1304d3768e", + "grandpaAuthoritySet": "0xa5046f706506065685b322054d22e8a1f23ca9df75c32a88dda5214ad58b553b4cca01000000000000008a239af78d4659897af698b5670533fa6d215864be8c41e3a2fc4309f9f83dcb0100000000000000e2b9e72d9202e99526fa626d9a6651dfd7c1daec8fc6ba1130af96f7d21a42da010000000000000056b838dd2005e499be47ceef086df4ca9c5fbc1f81968391c31af062a8a8bef30100000000000000e5914426faf919761a293345074f106393a9144420b3912e1dfe1f438975d21d0100000000000000938e7a90b6bb370ab1de25f714a6d4ec79766f0a83645df23e839b08800bc16e010000000000000057c55b2bbb6b86d6e9aedef9b51904ec5b29d8c1271308aa625fa445532738320100000000000000907fc1295e137738f8862d34490ad0746b80926e236e05ef8b958084f1d91a850100000000000000e8d7333e457fa740db924866152f31c3bfa6124c0367b0878a61aff2d5d6e27e010000000000000084688f3dad92f60e8dc05840bb64c522cdd7b9330bd38ce8cbc1d19947a334ea010000000000000070ba6e5985990ba1b1392713236f1b50df750f10f744cc6eb95fa7c5cfbc68760100000000000000d343862beda4cf485b4a3b7e9b62d3b7e6263b47f65a7c88c88f6e0f1350c7a50100000000000000a7452b6a46198301e81a321120d7bf926268e377895c8679e7830f2e71a4b5c30100000000000000bd26ab1d5334c20a4a6840be7bab84b98aec00f0d49eeac5b2c93f4db06dcb850100000000000000bc08c197f7281aebdbd1dad6c2b02a6831ee8b5320745f9be57eb2a1f1b0fa9f0100000000000000e511d441d6d3c822cb276bb2a14b1c8071d9fe1995802383fb5dcf8a92edcfc201000000000000007e459254f10e9af40590058a2f4978939e51da07fb4aa98812fd61ee23b64f620100000000000000be2235b9d9c9164f494dd688000fb569a37d5c47912ef99b9ebda9318d13345e01000000000000000e0ac68072ac35b8f19f98d13385b6eb75cf6fd4d513d9a2abfe9711b19883bb01000000000000007818639057900f8fb58e3aa8180f6108c251884a9fcb8041ca645cf612bc1eda0100000000000000a8dbfc6cb88ac105e25b9dc7f11e883631824647cd4d0c18014bb6239627b290010000000000000041ef4a31eb7dc1e01f4630604e1908e644d7cdee3f66a60f98d6d59605326f8b0100000000000000890f5c296681b8c23038b3d36a491ca9e0e7e809e6455b2bcd28a13700f81abb010000000000000098df914cfd089eee8993fbfbd1522d6a31700c98bdc3a31cf69014a0ac123ecf0100000000000000c442b92816b7325602d86354ffdb7dc272c56468f3bb8d6c659e47b31deaa2c40100000000000000acd71d4269b3ba2a9de822d494c4d841708e1519c08de41d7fc6153eaf48da8101000000000000007c1024f3b93e54cb1cdde0d2f685e2e16cadabe59e407ebc45eabb07efebca6101000000000000000f42866aa6927f1c5916a8a1a5a5cba2d88e1fff957d80df701617d93ee6407801000000000000006a1c3443483a34e653ebc3d0857c00a3c8b48ff2c5e9549880ef47eacbc05c020100000000000000dac2e90de824b109043f70818d53eabe05e79d518bda504e951d7f4056b0b2720100000000000000652f455eb3d30486151c716a4031bc02bd00254ef3e8290fd29f946d958a46b6010000000000000044d68d3dbde0fbc3d667b7a004882caa9413b54785d820dc3654aff3a5b8e57d01000000000000007977808620ade75f3efeb26b0926229e0817c6163399f1d48f39ece8159c9ec20100000000000000dccafad8bba5affbc80095564afc9376881907073a060979fabbb962bef08d56010000000000000078774f4f6130efaa55b5a06d1ef94ca420739dff79cbc24074bba841053e0aa201000000000000003bf5b70cb5789c7ac4f6a4c97e6fabfe7a58fe9fed1d79f39c2aabc2c5816ece0100000000000000aa3be8112cdf851411fe9e00fe9ef0a6b58217326ba7c1ab7ed9ce8a34620b25010000000000000025a5b10abcc6e32a4a9f7daa0ad1d9a9ac72194e061bfbf3f064a8d3d8d688aa01000000000000002f40f2660559a4472aa7d2b5dac22c8925b9baeaec9fa2463cef2a77eb9d3a1b0100000000000000fa2c21f1a03638d4cb35202102240c2b85f5667924d5838cc503721117049da601000000000000007db5406635c7bf521d1f8323e56cab16917e57f6eed9f79a6d20ccc65feb549401000000000000008c461493dcd314f4b384169f3741954d8cde37bc8ad988149e40ddf18b4b95e101000000000000005d9af90688fd70834d26dbf19bc4f034e1ee3442c05c3603b798fe95a2aefb620100000000000000fcc0d954c7d519851e0094cd9a015b4789022a37091e3a04791d0731bd85f0d301000000000000003948bfd09bbbc2fe6ac5dfe53146e32df50828eecf7b2b18cdcff8dc385cbd750100000000000000a2a4af2a11ae7ba812fcc32845583d0354a0f2ffb1271a53c9a976a0f47fff440100000000000000214ce2bd2912889eca3c69f45a3677989d66e20c3b26a52bbd378a4a71f5aa05010000000000000058e304af91397247f704ce95d60845629aa59a50fba1c13896bb2300708db47201000000000000008663371a5899d5e7a8bc99b9a6ce24c8c3f5f1149c1e70accf9560405c1a5bf201000000000000003d28789c6d574f3aa6d14360471901c5bf8255d072c2209fa22ac773bd32e5bf010000000000000041763df8284ae8248ee0f649982ffc7d4f613e07c7bb83cd554aca5dcf8f56250100000000000000cc0c6a91c7971438b621cd9a3bd37a67f52ec4093336585d1e2c73416195e28a0100000000000000de52bfa88c4a76bb22fbebb0f078dfcc5a327034e0044e8f8034f2a96e7adfef0100000000000000bf3fd3d4065b306638662c3e789d830a63d9b343cef5f863d346058387844b58010000000000000005197187ac7eb8d0a3cfadd32f1a7fb662e7e4a16ea718af3f1e4437b865205b0100000000000000a5aa8fc244c0d6036f96ca0585214448d94a124157dad6a09b585d1638c2362d01000000000000009b11703e71109c2f7e5d5ed6780e867236062929da90c70ea616af2e99e80f2d0100000000000000c488ef26295140d0ffa6b0df1cff9f8d8a1dc96d86fd199a389bcb2f37a87f340100000000000000b98c920666586f392d129d480e78a965764ac82de45e691589b3aab7831a7f020100000000000000cb92ffeace78dbafe6fbf275741b4b38657fb81590712aa0bca7877931f6ad39010000000000000034a18d21097f479eecbe51b91c522a798582caafc787134bab6888854742406e010000000000000027791275ae7d4735aa45e70210663067f7d268aa57126a26044c8f6d8572a7d80100000000000000f7c9f4bc8669969246cfb748ac6996db6cd4c1fc634d981a1093b2c3d7a2eadf0100000000000000f001e2e99b378fa4f2d1a50b28c3fcefcd7da3a66314af1280fb7f9cb429dd38010000000000000083a8ca034fded71f681224d5f905b69084b17a51c18f0a06aeff60e868898bb20100000000000000a9f24f0208a21e8cda4e450c72074f20d76a927bb80fa4418e480e0b59575c6b0100000000000000507b0289bfb2f55c7a62ec3c3298690909013c916dd5885b05b330fdc0caf1270100000000000000c8185ca8ae6330a1e03490e132163adf517f76402ecac6881a51c8a14ed62f940100000000000000c49e3cd2c701bb845963c2870dcca12ed070c3f67ffc20144327a93aa6e896ec010000000000000081b1fce3ee9e31723f1023eaa9f8793e8663e72c50fbb0fbcea9bc78bacc491b01000000000000002dad5b2212ee688f2eeb9ca1fb6a90574f006dc1c6680ac3a8523363a248940b01000000000000004bb953c285fc6de7ef27baf835e8d905e60d86fb1bca0e52af8323e9d1ff219d010000000000000050f9fd6c0623020debb7843bcb832ee1d80db9b156d8e6083ccebd434fe9794701000000000000002d575e29f7c1ea23bce864823ab34822606c5f0207bd18f471c9881a8c0e9d990100000000000000b7c13f1239888cda5c8e6ac9ea10675df17633368906e66a487f91ddd3268ca601000000000000002cd51e09c3197e04155b78f3d97742ceffface390dc46f81f2613a94b2e483fd0100000000000000affb713ecdae328aa4436756f6a3e8add6b274d5ef1cc19d7aa69ab82c80e472010000000000000086cddc46c9a3a42c3821183d597e76872f1d4904b84a92e8160ab4e0fb4d39a8010000000000000091b2f484e97938e7e844fc5b7355772548bb80f6ac9b3335d8a70d4ecd893600010000000000000052912b3dfd0ccacd00586b97f1abe32431a2f6fa9c2b3bb17837a1ecde6172800100000000000000918101a49e7531de481c1195af2ceff4c01b9146e9206d92f789642bae8fe7fa0100000000000000ff80f99fcf0f4072402a4e522aecd41ff231c5b579d978d0383dda0407ee498b01000000000000007c4082f9595014d2c938afd242c5f4a285bf8d488ff134e60ca42e3efee5761001000000000000006565187c86eca2aaf37db6d59405535a5e6dd85e2743a07ebf50e55c2b7fbc890100000000000000d1c146d2429a5a827660008721c7a880e71f44feaa3dc75524c1a9281bac48cd0100000000000000c68c7e0bafb7f0fb65a79f7517684f7693e7ae6435fb72773c3c52438c669e6f0100000000000000f42c2e2a4157d51d22d5997dea1342f65e1882e207fd0e64e8e5d44330857eef01000000000000001a13a82af5e22b9863c01e5f0f6bdcebc4a295934e339fa915cada1d5eba7eb80100000000000000c8be78d05f652edd0a64a5865455de36d0fadb0d91c470fd344f8de23c8a6b9c01000000000000006ad5224d5c8f7fb3ae15dcb3766c0956ca627a6c91e93c4e770a2908e8f5901501000000000000006faa2a994a276a5d8d029db32b4c05375412db8844ec0a1ecbbcce729f308e9c0100000000000000f5fef7a87c9f3917fd28640907ce59ad26f33e41baa25d8ead8033ae0b944d7901000000000000005d0124063ede3e49f037df33948477235e5a58f93f8b98bf7203f25e11d4f0b40100000000000000225c0d8471ce0f8bd50aea0e5c48b863788729eb6c06aa8f171adc6ce51bec850100000000000000e4dc36bfd9f67865042b7f3bfb4a07891f7b757b1a37c1ba7dc6e395f3e4657f010000000000000085b714accac0654ba57fac59b626dd35802269d2c1d995cea7c335cb05a88f7f0100000000000000e5df12b672ff723fb3a00817d48fa27843bc7854328dfed88bb0e4afed20b65a01000000000000007448b6f6db7cfffd8650a1f3f08ddad1e114321ea770c9cfe6154882f586edb50100000000000000eea0e8d1a0aae5e5cd38dda0e172b49f8ea02287fd7d2ca79ffcdf6e593a283101000000000000004640d5063c8c8223bafe00dbf362e839c08d3cdaf6cb76035a191a01068d815b01000000000000006c47b7d4662afe0d503c675aae89d23b559230ebff17ba9caaf929048eb7f91601000000000000007f6fe3b417c26965a21ccf584140ae4705672bf1a20f5164e1e39af1378cbd0901000000000000002b7b893e884f4d9c99a3a154b78cfa4b461422860537fa77d064dbd0de4e0a8a01000000000000002f4ab94586b2ba3b4983962b30aaa4faff06b6cd67ff1b6df06af0d9fcf34d2a0100000000000000587473ac474bbd8c99d14bec88d614426944b5c84dbf2912abac7610741560ff0100000000000000f3300017c9cadc38d61b118edd05c0540768521f88c5092215e47a9d0403fc7a01000000000000001935d43843c66ecf76a9f4c4229de9ed7c172f52aa53d1a279f2856a736661b80100000000000000068f2c90b93ba6130eb3a03f568411a471d0710086a468f8cba32b34e37411dd0100000000000000e1d3d955e446b13a28abadadd28971475035b3f25fcd414111bde54b53a3faab01000000000000004b1289d5bcb7ebef732dc630d99150de770499877ea75f9dd3e693871beacb3a0100000000000000cdeaed45451971dcdcf886df977f31b3c004c497037d9940bcbbf2bd6dd2e3340100000000000000cc5dc1c5155dfcf43ee8dc4443292e966cb3226aea4fdf88e73daa259d66b6730100000000000000f14cb581296c3261284a2ed4e5a85dc0280e5618cc8dc1e76d8ab4ab415ecdd30100000000000000096e6c93e51502bdb63438d1cc1207bc5fa4cc1a1330b152ce46ca62f0c88ffd0100000000000000771fc7d8d2258e91fb78a575c8cb68637ac1bf4d1e82156fc498857fbb808dd50100000000000000fd3d1c4982441db21060e8834c5ccb6331e81fbfa01756770dfe297d5038ac950100000000000000552c4bfa942bfe23abb38aeb5774a9a4a208d95d1e56681156e0d58146d16bff0100000000000000a717e6564944b5d85787a33a53ccece07dcd37ce2f375b4e356c328858ac475b0100000000000000099a9eb71f9cb1b7d15eae384790b4ec35045a19acea1730ba62f3e7caf31e8b01000000000000006e38acb3e1d2f1cf94cbaa906446cd7bf5ba616b38591d85a00cfc5712426f59010000000000000061914b4dba0a1e42e692016cb74943266b257339008ffed4644231a2b48df21a0100000000000000a703a37bd5d93619bfb6ad72c24840b396b2ddb8700db2e1d372a82363ec7d58010000000000000048630433999edabfc2790d3f5cf47a5ae499e2fdc3c4a9abc04a98da29c368b60100000000000000a892342c56149812a43e98c82b6a3dfee7eff384d9b6d832002ea63838f64900010000000000000081bbaa3313b09e3b0ea2817c3e968a33587ec8928539c3f3a6d0e65644612f490100000000000000b05f7cebc58de884b898e3672dd4e6bb044d9196ed35433fa52298c9f9420a5a01000000000000003d884e3f58913c10c26d8af2a095e231079a3a0b69f775052f7173ff1c3ace2e0100000000000000c13b603b5fe774d98e59c26fac03f8096ccc42c57d0cbc6a443b4f07a3c077920100000000000000be6b59cb464fadec4e0b22a9f12857ba5cf7a14c4f9551439d36305d582dd7fb010000000000000090c47bdd7fcfa4f8ad90f21b09e45cc97ed7c8313f3d6e09e055c2b2d3fd277c0100000000000000222ee6c6a6c62d56cadb4eaad5104d595fe962fbbdd551c81562d3b50921290701000000000000000aadf1b2009026f8f5dd75d532e91dc756fd47572aa0f3c15d26790e6d6b2f270100000000000000a77cedf144ff05ee72b1d98e35ebd033444347b81873bd39be16ebf6eaeb11b901000000000000005b64aaae945b4c5f90242dc5d9892f452dee7b41262adc26b494637953faee1b010000000000000050e16d897010823670148ef157d77933bc1721d82c45e80eb73b46b12b5daab601000000000000000228d7fc42b304906518cbd91d73a5384c4893de6cbfe1e7346999df642d3d000100000000000000423c37aa1a1ae4341159972376ab5517a9dfb494695bb3744d714cddfd8a5c8801000000000000001bfc78866edf1c38c02c1d1fbea39a2a33f46227dca527ed002d96532e61114a0100000000000000c0852bc9a3db8bc74cc2c027d96bdee85e0d877b6d016ec877e3cc5c2419a9ed01000000000000000dfbc1b5757e1f0ba348f8af64fb631aaff86cd21fa0529e0bb1fbab250879260100000000000000d791b58285e2c4f17c82a518e099812d2a3f63e1090f1cb2576e2c7695ee24970100000000000000876ba7dafdef35f262f8903495b7ac6276c592665e5a3ecd28b9da29c1f0b85101000000000000000f8968aef3977bd7b4273c3fc7e0173a64c086b957faaf848e62c37cc50a07100100000000000000cdf28bc59aab771bc1450c9fa1b61f67c276511223a2aba191c33ebf017d91190100000000000000aa4b67e509c68f6ba9e4226e529052f0042f6a5804abb21bdf8faa485925aedd010000000000000003dd543dddd6ad00137ddf94a218bfa19d2f08b4365d696765dc25deef76598b0100000000000000338c84f04302f60d5737266add391582ca45da82bb42ff0d503609e79193a53e0100000000000000798d28848cf6e642e3148e0a250ab346b5f21a81d5496141318ff57b5766f46801000000000000005216ff912251cd2bcf9db256b3927e737cf909e4b53a375586dad21bb7b907ef01000000000000001b94587cfb3b7d0dccf84ffbdba98a10199e5dfb1887eb15d051444de5d8627e0100000000000000b5b64e522ece2a1a3325f95082e33bbf5832e6116d378ac0f437b7b49727292401000000000000004bf6037c3820cb7468601051701164948b7f7cbbe1ac8cad97e809c76170dddf0100000000000000fe7280b7fd8850f810d56d30b0e3811aaf9bd4d4417fed9a704d9fdcc1f7c80b01000000000000007a9b9a2eba4e6c7b055930a450f56dff54a229343d9b17bef61b3cbf725ac7bd01000000000000001ec0811cbe4f2ea1e5a714d3ba08c6d7fdec138bcc6406da3c6cd32f1686616d01000000000000008b7baa89dbac95969a0042fa876a37eaccfcecd3591c4d7ed0e8051aea814cfa01000000000000004715211e268489d1eeccfbd8a5e67235244322c17127226184448741ae332ba10100000000000000dc5289899ba3e91edf93781843f9abbc99b3ae0beb940c385edf706acdf0d2540100000000000000ddac76c2a61c9aef4a9b3247aa0953187533f346466f02840235662440d2945c0100000000000000055c25dcc9cf8a08ad007ed9c8afb0ba53cebd129a20f194d272535ca9fa06490100000000000000cc8db7467349129a20ab4ba7e705044216651c0eba9d39f1054849edbcd677af0100000000000000bf5bcb77f207f4ddd9317abdf61e6ca2158cd565e7fa6133f6792236e086c166010000000000000033856a1d7235b63265cfe8f644bfaa63f515d1bd243d735cd7e74e792154e1570100000000000000736925c31654df870fbc29437c9b2a488ac3262e5d80798534ad00c43a61e547010000000000000006b9e740c0a0e1f8fd31717438d5918ed8680eaccb70fdc9511931ce0d164ae50100000000000000b2666450acb9f43c1884eb63028d4ffe2aca22219dfe298ca17355634f80482a01000000000000002565e04c6e0b665fac87f8238bee74837f8f621ed63409f3838d263603400a9801000000000000003a1e82e30d0eead0b6f4b8a23422d260890d9aabdc2901c81ec459ead88ed7980100000000000000056986ef8b6f0f9e092e29540e8d220b40bed9e459e7b9d0247e0e156601e3c20100000000000000546ce2099b3863d2d75324d5866bfd5324d8ee4701a99dd53528f8a8c898ca48010000000000000046b45ec0a71351bec5563187491fa73d602d68d56b9faf3d59ba80c1fe6626860100000000000000e09d677a7d9eaa0c82aeaab90dee017ff8b9fdf058c6896d173ab29f4ed24d8001000000000000005d50d6099c7c88f367568fa473b44785acccd030251627cb371de16e5fa704260100000000000000301b983e5e1320b7c9ff0f2525121b9f3007f68c273ba8ff662b7244f1f95f210100000000000000a85e95b303450b71e03368ab702fe362ddb6710e9f374e0814f65fe4b46bd3f20100000000000000064d822e098e64fcaefe184a6038701fffb2f68dacf64f9c2d007fd58da92d0601000000000000009e4dc072780c293ebda8107e014d03b3dea3d3f14bc9d02cb0c9c0776ce63b990100000000000000d3ed238f520c7ce95663aeb66448e9bd02d68779471be8b8f0fb28265b44ad51010000000000000028139ae721b771cf57d5afa58579d8dc0f04f04c1e1b631cac64a9fdfaf8b5250100000000000000c5f7618b9d80d894e37364f041cc37cb1350386bc5e236dc91a41948e976c0e60100000000000000b66e24ea84d5e02a7b2b58e20bbf17a0f2a19c4654bf8b07669ba3b9fc4a468101000000000000000d8e0ceb31d11634ff50f20c90d57239a9307602e221baa190c784b144a7eb980100000000000000cab191a66c54e412fbe7fbc074ea0d916279d55d856d870d15bdf88c00538dda0100000000000000f0d6d584f670650a8ef17a3f464690c6f35a180ea2a50c74849aedef590e314b01000000000000000428e3ccdba17d779ffba05c9ec7a6264187d13bf89b6009e97200474ad343970100000000000000311348bd0fc78048d3ae9d21584086744ae90ab51a6bf8469fbbbf83631fe5d50100000000000000c34f62968a87b2e4a9340a75004029dff5777a020f60fb287f08038491881f220100000000000000209c0f330630b87e16ebf9a9865bd2ec9258d0366176e0cbeec9bd688162025e0100000000000000607737116e62ba11852c68515933afb8165f3174d594eef6d01dd7eaddb60ec3010000000000000065dc4c53802befd2acfc3d6d3f66eeb84947e5c15fc7a2165a375352a4faace101000000000000007c39d28f80a16bf0cedb70e36c5ac9063dd9b513c5fbbe2c2222389f428921340100000000000000bdee8597e248688fddc627ad9c95cbebf7d3b5f248b9a742aa2d8e761fa365050100000000000000a128a73c5eaa1803618a75bc368c38e4c5cd40999cb72d615b8af1d30cb8cf1d010000000000000020270811c3dc453f37b27d958ef7ad7dd4c7f217c83f94bd0ecd84c60018a866010000000000000020869a63e7a343094ad0b4ffaa3d83344ffec8c7fb9b177008f78d17eda7dcbf0100000000000000ca6dec12aaf7e9c1bbb5e611efe9f447ea489b08db6145681b9e499dd6a26b400100000000000000f549e094ce2c081069b7a39b67a13a00899882b79ed9ce8c63b2599cbb0900950100000000000000d64083c00178b8dd224afade9792fed8076031bdfe9efc5b8128e6372a9261e201000000000000001c6842f07fb07b318a8d00ce6258844374f8e894853ae5fd4a85c867d3fc32e30100000000000000417e120dbfd0297d59458b48407b62570987f1e907dd6dfa9a20bfe64eb489d80100000000000000443bd12fcb944a0e19b2f76ddd066a713a99d2dd3530a5f39275300d11ac96590100000000000000d840962f63c0b4de7f74c9bbeaf38fdd7997de7cffc83109fe31713d03c8e60e0100000000000000134cf4720486824c6a27fa7892c8d82e805653ba1d98480267ec284a76b792c20100000000000000c3150e4ca47e7bc6486f198bf0a742a18ab0871bb1efa34e82c4ce81f27926670100000000000000c2eb94269c5e5d2ab9a1a300387358679640763b053aca99ba5c1c9083ee717f01000000000000003c514ae67aed49aaecedb9b00a869eb46166cbc0b569e74880fa1a7d17ddabef0100000000000000b65475766e6229c87ff34263f5ca58525ab133962bc599ca0eab096ff296f4e60100000000000000ebb1834a568ea7653bc66f394937a0aa4f2f617118d2161e2c11c0d7d2febb9d01000000000000000412e872768f20afc94a4955a875801e085fde2688d0c0adf86b789027f2adbb0100000000000000a51a49fa663cbea3b953fee99f911391d75d638349a2681e30759820c6f3c60b01000000000000000c802c4d0fda23bc38f40210827903d520a0a4cf44ae4da7fb36ff933188faae010000000000000042f47dad5949be7b7b8f81faaec17b1b53465b01b9f8f81e6a45f2fc74e12daf01000000000000007a1291795805dbe300425311ae50ed698450b1912b62e5b5a3264c68bfa970760100000000000000e0df5b2f299314d2d419b46d15c3c8a739182d91c3d4b98cd16c013c3a25c04b010000000000000098a6defcfeb3dfca36ec46eb373734627a2c395cdd2d886046a11788ed6467af01000000000000001701236903f6e923b35630f99bc6334e29df55d03a136d8acd93bac92f32045b0100000000000000853ba986f8785e8fc1a2ae2fb86f17cc91886d931182ccb8d148379a35cbf0270100000000000000b5badfa83dede7b19aa3b1d10c6d0bd5f4adcb357862aec339e9d49b23d7bd2e0100000000000000496826b538d97906e14d417b48598d7d591a483ab5f4c6786cd0b96239c2f4cf010000000000000021235f4afb5b0d8ea5123cd4be4205ed27dc25e5e08813563e47f363590928400100000000000000c7009be830fe78c42f12f0753923131d16300bac230650001636b6a546cf0aa30100000000000000425d9edc1cc5cf795f0caee680a379215cb77d71c69bfe41296df63cb2ac344301000000000000009490e6013f4342845494fc817104edf1f307c62e7c0d7c04405aedfd0a37232b0100000000000000469939d617b037a9a3951e2510654659baafc8d6af199edd413b9d82e3d60fe70100000000000000768d47629bf074d88ded200706ce2f2ae38434c192129d1736ef8f6af01562b20100000000000000525661070154e9eebb48a7befd2c03e125b218eadb27cb121786678c0f67e5d90100000000000000d227434a77cd7b7127c039eb9995aeb025a242c36ca7116372c7c8fe5bc921b50100000000000000aae265f73abaf1fdfc01a798c357cddeb8467caae251b123ea3ecd94a6f2d9bf0100000000000000510a0c61dca3e1044d3540c08272054462c6353aac4dc06cda265753b126b38501000000000000005db4206baa8706a1b1de0ac7edacbd2a2c93452481808b8fe6c582265b57a60d0100000000000000d4c8bb768da36c14fb8dca7cbfad9334c2cded80354a7e796b2ec006a225e3a80100000000000000f29a410d52229ba73c895256f5bdb4b05663bbd08b2767c80e7e7d60f020fd1a0100000000000000761ce3eef4bd0d15601aef70728f54ca72a9859e90841c3d02d5060201671878010000000000000000132d9e682cf8d45ce8efd4bef165a26da5d1349ea1fe9f51abd6dc762272020100000000000000f4d2f2eefe0c1c49856517be1829a9c54ec4de2dad8825dc5e366446729c160901000000000000001262625cc59c0e4b7548904c31a02231a601305881a231d4dea45eec6cbbbdcc0100000000000000c3576342cbf99792896ee5329b04ff2eee2fc2bb6d53c5c03d52c8957ee793fb0100000000000000f20420ec33f157f7c78880f27c8092b9ec5d8c1b7f9173063b043af92b54cc7001000000000000006ad4bc289673029ab44f3045eb6fdd3589d05e0e5fd76ee017f650a662f898fb0100000000000000a82f563264d1892dd46873205d03c098d8b03f53e21c797839737e4e5f66a87e010000000000000058a00cd4a54847fa7e0f328e7eeb5a7e05801809b9cbf131d92c32f74bfdc1890100000000000000a54cf1007cb124c12d4fe9c27e1d9aa2c4a238f35be9d6ef4c321f061039ea3f01000000000000003a3609ac590175c65fac57df5db44b5319e6fff43cbece21944019694f35d65c010000000000000043601ae31cf5b03cb49395dda13809f7398d8670ee4d2172b14a1ab05986ac3b0100000000000000e7f57bd0bc756f24574e3a77c90616adb393e9d4ffceb2c63df19f605cb6a0240100000000000000d207ebfe07d6c8bfd5badd7a25373ef5a9ddac08da3e542e5a9d36439259e8370100000000000000290321d793b7dcb12ad148c2438bb60821bd938b7e9164a0c3d0fc82987f8b6301000000000000002ef11bc5ce1e7b53f788ba01ba581b9171ef36449719ff3eb20973342a4a82850100000000000000ab45f730dd495f657b61b2777091fa8cd11b5a626bea2b514e5e6118021037970100000000000000b79f919442f4ca5ac9195fd09a1239b1a80bd225f8372f1b36a24a8c55de61f20100000000000000390588df1c30c4856ce060537a6b6dff06db020283ff746b90aaf3056e3c63f601000000000000000cd7067f96a2d63fa72065302432f48690485fa5f47c9afab17123e0482785230100000000000000d02d870053a31afc4984a7a9c5e458804d8f589eed67f2a6249d7787f1ea45670100000000000000f6f23ae9bb4c269a5959d51f9173270ddefcc354b63de77b672bce58cabe60c80100000000000000bc4cbcdb5cba3678da8253ddca6502f717f82f26af69e7884c69c2560cb1eedb010000000000000049d34c7034103f19bbeb2c8029d96c82c753b088fccef038e7c5b009eb46d6e70100000000000000be223d49fdccd102646c9b0d62130fbc8e7f0324d55a3eabaaffb5ed1616795a010000000000000062a91ffda8611ffce3edeb628ea6d3b8b12e5b2448beda6da8334e77a9ecbdd7010000000000000071893ca83ebe6ee06c3eb10dcbfaf70d8267959f6159b4ca36929a69604cadbc01000000000000004ad600cc461daf6d287d5d2ff0791f74fd7c6aab5714ad50340187a7ce509ea90100000000000000f9909408f9201a13dc8b04796d715d89beaab7dca5b7f3aad244165bbdb1a6810100000000000000b059f42934ee377fa5377a5886e2846c28556fb85e6488b8bf21c09c86b80b19010000000000000026cdfb88461d7125f438c599e062799219b385bacca93f3cdbe5418c9d4d499301000000000000000f19c3ed807ad5f2b7546f5e6c5e9bb934835d54ed1f4f989540b86a2ca02b550100000000000000e4c1d1377894eee032e1a60dbac6252e23f35bbb43ce51d5f98652cfee58d5bf010000000000000081d0f5f4c338b8698bcfdfe7db400795b4ddcbee4cc93688f6468599d76954970100000000000000f2e75ee2303b2cf903b882c9888cc1c51f978abd58ba88354dcdad717f4b8a59010000000000000084c5f583e29d8aa4b794bf3142cca87f1f82cf83c0a36e5bdf97b363299336ac0100000000000000b426ef68c50245a003dd068c5c086fc9012c08a7f9ec53fbf7df4318261c8c2c0100000000000000604bd281d8ffb6bd4fdf1c7c776a99a2d62c2b9730d7d86530903085d765c8830100000000000000e7931a825260ba7d4fdb5f4990d39a71e2a8b215a776ebf770102ca772f103a3010000000000000095fde7b91441fae9d2a6360d30228392519293be5e78cf3305667595cb15e566010000000000000096847258e5fdd261a8df1b3958366b29d28363aeb96a71c2b705e4c8864b97e10100000000000000e7eb7de26e0e24fd528fbbcecf837f26579784dfd4db512c9237e281113973870100000000000000716a181407939b3ea68289e09265d3b9d8a8f21ba7d9f50d8ef8a86fa3c0fd0301000000000000008e3d1c8c0261e193e87403c8959919ef035ba39175d3ba22f31190303601412e0100000000000000e2cbfcc26562b49e656aed7d837a26fe0f9802db088b10330227b6147e150012010000000000000094416582fe359e0a310da59bf93df8ff9665b89071d4977a9a9f3390b75c0c450100000000000000ac5230e4338aa51c44ab6a0fb903e6fd914fd029dab8f7ca447be54ceba749340100000000000000b14d7eb2d5f956e23a7407b7cc5ba971171d0ac45169351ccc6f836c9ae796730100000000000000a76b32c8c28cce206ddf70ff3ad591ed01a0067f9f9baa77f9052ce938d359c701000000000000003a4bfd825ccd308def4a61bac80c579db42b02ea5f1a0768656a326e83a0dd8801000000000000007fab4769c41af85b9de8e784d3b1cda093fc0a8dffcdff21e914c62f131c77580100000000000000d2f1b3b5f7eb1b0d8328911d9ec920327d7a30729e80c1238f86dfe27c4fa3470100000000000000841584e602ab975c936fe7c2025fcea2b5a0061e839b1ad96528942b33d0974b0100000000000000c6b8a9bf9c374cc7c6bf921877097081f5127027a31739fc472e1099c5b3b0ef01000000000000006141751a8e08858eaa5e3f0b3472244f90d23eb3094dcaad05fe82e592d058480100000000000000daffd43670286cbddbf38953e6e33ba093f8c719e9fbf0a4aa76ff3ee97df30701000000000000007a4beb57bff1ca965c4d08dab3f28810aa7a1a51507be9b54873bb7f786690c901000000000000007d62c0b3dc3697b9adf2065032a236d0f6d926c086977dd6339ab02489a684a2010000000000000098763eb72b3f7dbb7a793bd1d4367af5f072ff45a1a6eae0e002e1eaa24c5d550100000000000000b48574503e3b787008ed9b1fc9eb4b0275fadecfdb352f166973da58d1a43b650100000000000000b07738d501326a26acec24adfc2284f2f617e4042c738f7c0f15dc1c9006652801000000000000006b637efb1db7c91b689a3dc0a5e42b0f528e5f31d55b1c264452dda3aa2d83d901000000000000002929dacc53614cea1848e7ba20fdeed7cb0bd81571aa72dfb63dfc84d3965d2b0100000000000000c2b23d1562573ecf2f619459f1072a7b835dab5a122bb7474313fe7cafde7726010000000000000056b2cda89223ce64d8abd543ad66552bb84be82fb45e0ad6333e714eb20e551801000000000000009e0700000000000000016bfe370100791e00000000000000002904050001000000000000002a0d050002000000000000002f16050003000000000000008e1f05000400000000000000ee28050005000000000000004d32050006000000000000009d3b05000700000000000000fd44050008000000000000005c4e05000900000000000000b75705000a00000000000000176105000b00000000000000766a05000c00000000000000d67305000d00000000000000357d05000e00000000000000958605000f00000000000000f58f0500100000000000000055990500110000000000000095a205001200000000000000d8ab050013000000000000000db50500140000000000000024da05001500000000000000aaec05001600000000000000f4f5050017000000000000003bff050018000000000000008b0806001900000000000000992406001a00000000000000f92d06001b000000000000000d4a06001c00000000000000685306001d00000000000000b65c06001e00000000000000f76506001f00000000000000308b060020000000000000007b940600210000000000000025a70600220000000000000033c3060023000000000000007fcc06002400000000000000c3d50600250000000000000011df060026000000000000005ae806002700000000000000a0f106002800000000000000410407002900000000000000880d07002a000000000000001b3c07002b00000000000000764507002c00000000000000357407002d00000000000000239907002e000000000000006fa207002f00000000000000c3ab070030000000000000006abe07003100000000000000bdc7070032000000000000000fd107003300000000000000b2e3070034000000000000000aed07003500000000000000971b080036000000000000009d24080037000000000000009c4008003800000000000000255308003900000000000000735c08003a000000000000000c6f08003b00000000000000048b08003c00000000000000589408003d00000000000000d3c208003e00000000000000e4de08003f000000000000003fe808004000000000000000f7fa08004100000000000000aa0d09004200000000000000153309004300000000000000fc6a090044000000000000003e74090045000000000000009a7d0900460000000000000000a30900470000000000000014db0900480000000000000020130a004900000000000000791c0a004a00000000000000364b0a004b0000000000000043830a004c00000000000000e5950a004d0000000000000045bb0a004e0000000000000059f30a004f000000000000000e060b005000000000000000812b0b005100000000000000dc340b005200000000000000ef500b005300000000000000a3630b005400000000000000b69b0b005500000000000000c7d30b005600000000000000dd0b0c005700000000000000f3430c005800000000000000087c0c00590000000000000052b30c005a0000000000000060eb0c005b00000000000000baf40c005c0000000000000072230d005d00000000000000805b0d005e000000000000007e930d005f000000000000007ccb0d00600000000000000076030e006100000000000000793b0e00620000000000000088730e00630000000000000092ab0e00640000000000000083e30e006500000000000000731b0f00660000000000000079530f006700000000000000748b0f0068000000000000001fc30f006900000000000000d0fa0f006a00000000000000633210006b00000000000000826a10006c0000000000000028a210006d0000000000000005b310006e0000000000000055d810006f000000000000004810110070000000000000006548110071000000000000008e8011007200000000000000bfb811007300000000000000bbf011007400000000000000e828120075000000000000001561120076000000000000003b991200770000000000000058d112007800000000000000770913007900000000000000944113007a00000000000000c07913007b00000000000000e7b113007c000000000000000cea13007d0000000000000067f313007e00000000000000d31814007f000000000000002e22140080000000000000008c2b14008100000000000000545a14008200000000000000ad63140083000000000000000e89140084000000000000006892140085000000000000008dca14008600000000000000b00215008700000000000000d03a15008800000000000000f3721500890000000000000015ab15008a000000000000003be315008b000000000000005d1b16008c00000000000000855316008d00000000000000b18b16008e00000000000000d3c316008f00000000000000e9fb16009000000000000000073417009100000000000000bf4617009200000000000000286c1700930000000000000029a41700940000000000000041dc17009500000000000000591418009600000000000000bf3918009700000000000000704c18009800000000000000948418009900000000000000f28d18009a00000000000000bcbc18009b00000000000000e4f418009c000000000000000b2d19009d000000000000002c6519009e00000000000000896e19009f00000000000000519d1900a00000000000000075d51900a100000000000000920d1a00a200000000000000ec161a00a300000000000000b6451a00a400000000000000887d1a00a50000000000000077b51a00a600000000000000cdbe1a00a70000000000000070ed1a00a80000000000000083091b00a9000000000000004e251b00aa00000000000000fe371b00ab00000000000000065d1b00ac000000000000005f661b00ad00000000000000bd6f1b00ae00000000000000de941b00af00000000000000fecc1b00b0000000000000001f041c00b1000000000000000c321c00b2000000000000002f3b1c00b3000000000000002e721c00b4000000000000000ca01c00b50000000000000044a91c00b60000000000000022e11c00b70000000000000044191d00b8000000000000000c481d00b9000000000000006b511d00ba000000000000008b891d00bb00000000000000a5c11d00bc0000000000000053f91d00bd00000000000000ff301e00be00000000000000054d1e00bf0000000000000002691e00c000000000000000d1a01e00c100000000000000c5d81e00c200000000000000cf101f00c30000000000000083481f00c400000000000000af801f00c500000000000000d0b81f00c600000000000000f0f01f00c7000000000000001b292000c80000000000000039612000c90000000000000054992000ca000000000000004fd12000cb000000000000004c092100cc00000000000000031c2100cd000000000000006d412100ce00000000000000cc4a2100cf0000000000000098792100d000000000000000c4b12100d100000000000000eee92100d20000000000000011222200d300000000000000325a2200d40000000000000055922200d50000000000000075ca2200d6000000000000008f022300d700000000000000b13a2300d800000000000000cd722300d90000000000000078852300da00000000000000ce8e2300db00000000000000bdaa2300dc00000000000000abe22300dd0000000000000012112400de00000000000000501a2400df0000000000000045512400e000000000000000a1882400e1000000000000005fc02400e20000000000000013f82400e30000000000000007302500e40000000000000013682500e500000000000000c37a2500e600000000000000a8962500e700000000000000fb9f2500e80000000000000000d82500e90000000000000019102600ea000000000000002b482600eb0000000000000028802600ec000000000000002eb82600ed0000000000000044d42600ee0000000000000058f02600ef00000000000000b3f92600f00000000000000065282700f10000000000000057602700f20000000000000064982700f3000000000000008dd02700f400000000000000a7ec2700f500000000000000b9082800f600000000000000e0402800f700000000000000f6782800f80000000000000019b12800f90000000000000040e92800fa000000000000006c212900fb00000000000000a0592900fc00000000000000107f2900fd00000000000000bc912900fe00000000000000eac92900ff00000000000000fd012a000001000000000000ff1d2a0001010000000000000c3a2a0002010000000000002b722a00030100000000000005aa2a000401000000000000fce12a0005010000000000004ceb2a000601000000000000e0fd2a000701000000000000c3192b000801000000000000be512b0009010000000000000a772b000a01000000000000ae892b000b01000000000000b0a52b000c01000000000000abc12b000d010000000000009bf92b000e0100000000000093312c000f0100000000000087692c00100100000000000075a12c00110100000000000074d92c00120100000000000089112d00130100000000000099492d001401000000000000b0812d001501000000000000c3b92d001601000000000000d1f12d001701000000000000d6292e001801000000000000e9612e001901000000000000ea992e001a01000000000000efd12e001b01000000000000f8092f001c01000000000000f0412f001d01000000000000e9792f001e0100000000000036832f001f01000000000000b2b12f002001000000000000a9cd2f00210100000000000094e92f0022010000000000007121300023010000000000003b5930002401000000000000089130002501000000000000599a30002601000000000000f6c830002701000000000000e30031002801000000000000c03831002901000000000000a17031002a01000000000000f27931002b010000000000007fa831002c010000000000005de031002d01000000000000aae931002e01000000000000441832002f01000000000000295032003001000000000000fe8732003101000000000000aa9a3200320100000000000010c0320033010000000000003af8320034010000000000005f303300350100000000000059683300360100000000000078a0330037010000000000009bd833003801000000000000cb1034003901000000000000f44834003a010000000000001c8134003b0100000000000044b934003c0100000000000055f134003d010000000000009dfa34003e01000000000000302935003f01000000000000c6573500400100000000000023613500410100000000000053993500420100000000000080d135004301000000000000560036004401000000000000b10936004501000000000000ce4136004601000000000000037a3600470100000000000031b2360048010000000000005fea360049010000000000007b2237004a01000000000000995a37004b01000000000000f56337004c01000000000000c69237004d01000000000000feca37004e01000000000000340338004f01000000000000683b380050010000000000009e7338005101000000000000c9ab38005201000000000000dcc7380053010000000000003cd138005401000000000000f8e338005501000000000000b0f6380056010000000000001c1c390057010000000000007a2539005801000000000000da2e39005901000000000000525439005a01000000000000878c39005b01000000000000bbc439005c01000000000000f3fc39005d0100000000000028353a005e010000000000005f6d3a005f0100000000000098a53a006001000000000000cedd3a0061010000000000000c163b006201000000000000404e3b00630100000000000019853b006401000000000000608e3b006501000000000000b8973b0066010000000000000fa13b006701000000000000a7b33b006801000000000000fabc3b00690100000000000049c63b006a010000000000009ccf3b006b01000000000000eed83b006c01000000000000c1f43b006d0100000000000014fe3b006e0100000000000066073c006f01000000000000b7103c0070010000000000009e2c3c007101000000000000ee353c00720100000000000094483c007301000000000000e0513c0074010000000000007c643c0075010000000000001d773c0076010000000000004b9c3c00770100000000000010d43c007801000000000000d80b3d0079010000000000001a153d007a0100000000000053433d007b01000000000000ea553d007c01000000000000225f3d007d0100000000000072683d007e01000000000000b4713d007f01000000000000fb7a3d0080010000000000007a8d3d008101000000000000b8963d00820100000000000006a03d00830100000000000088b23d008401000000000000c8bb3d0085010000000000000bc53d0086010000000000001dea3d008701000000000000e9053e008801000000000000b5213e0089010000000000003b343e008a01000000000000843d3e008b010000000000005e593e008c010000000000001f913e008d0100000000000065c83e008e010000000000006bed3e008f01000000000000a9f63e009001000000000000f6ff3e009101000000000000c1373f0092010000000000005c4a3f0093010000000000003b663f009401000000000000856f3f009501000000000000cf783f0096010000000000003ea73f009701000000000000ccde3f0098010000000000008516400099010000000000001e2940009a010000000000006e4e40009b01000000000000c35740009c010000000000009b8640009d01000000000000cebe40009e0100000000000001f740009f01000000000000372f4100a00100000000000097384100a10100000000000070674100a201000000000000a99f4100a30100000000000065b24100a401000000000000ddd74100a50100000000000096ea4100a6010000000000000b104200a70100000000000044484200a8010000000000009c514200a9010000000000003b804200aa0100000000000051b84200ab010000000000006fd44200ac010000000000005ef04200ad01000000000000b9f94200ae010000000000006a284300af0100000000000078604300b00100000000000077984300b101000000000000abd04300b20100000000000064e34300b30100000000000072ff4300b401000000000000d2084400b50100000000000008414400b6010000000000002e794400b7010000000000005eb14400b8010000000000007de94400b9010000000000009e214500ba010000000000005d344500bb01000000000000d0594500bc0100000000000006924500bd010000000000001aca4500be010000000000004a024600bf01000000000000603a4600c00100000000000084724600c101000000000000abaa4600c20100000000000047bd4600c3010000000000009ec64600c401000000000000a0e24600c5010000000000005df54600c601000000000000bf1a4700c701000000000000d1524700c8010000000000007f814700c901000000000000dd8a4700ca0100000000000039944700cb01000000000000f2c24700cc0100000000000010fb4700cd01000000000000d5294800ce010000000000002c334800cf01000000000000f9614800d001000000000000596b4800d10100000000000078874800d2010000000000008da34800d301000000000000aadb4800d401000000000000c6134900d501000000000000eb4b4900d601000000000000e7834900d701000000000000f9bb4900d801000000000000b6ce4900d9010000000000001bf44900da010000000000004a2c4a00db0100000000000066644a00dc010000000000002f7d4a00dd0100000000000019994a00de01000000000000c0ab4a00df01000000000000aec74a00e001000000000000fed04a00e101000000000000bbff4a00e20100000000000019094b00e301000000000000902e4b00e40100000000000041414b00e50100000000000010704b00e6010000000000006e794b00e7010000000000002b8c4b00e80100000000000094b14b00e901000000000000a4e94b00ea01000000000000d4214c00eb01000000000000d7594c00ec01000000000000e8914c00ed0100000000000004ae4c00ee01000000000000ebc94c00ef0100000000000014024d00f001000000000000fe394d00f1010000000000000a724d00f201000000000000667b4d00f30100000000000013aa4d00f40100000000000031c64d00f50100000000000037e24d00f6010000000000004afe4d00f7010000000000002c1a4e00f801000000000000ea2c4e00f90100000000000049364e00fa010000000000004e524e00fb01000000000000628a4e00fc0100000000000079a64e00fd010000000000001ab94e00fe0100000000000079c24e00ff0100000000000094de4e000002000000000000aafa4e00010200000000000059324f00020200000000000004654f000302000000000000ff764f0004020000000000000d804f0005020000000000007e924f000602000000000000c29b4f000702000000000000f4d34f000802000000000000160c50000902000000000000504450000a02000000000000877c50000b02000000000000b6b450000c02000000000000e7ec50000d0200000000000046f650000e02000000000000b61b51000f020000000000001625510010020000000000004f5d510011020000000000000f7051001202000000000000889551001302000000000000b5cd5100140200000000000014d751001502000000000000e605520016020000000000001f3e5200170200000000000053765200180200000000000089ae52001902000000000000e8b752001a02000000000000b7e652001b0200000000000074f952001c02000000000000e81e53001d020000000000001a5753001e02000000000000558f53001f020000000000008ac753002002000000000000b9ff53002102000000000000f13754002202000000000000277054002302000000000000418c54002402000000000000d1a354002502000000000000d9c8540026020000000000007edb54002702000000000000b81355002802000000000000e34b55002902000000000000c58355002a02000000000000d6bb55002b0200000000000007f455002c02000000000000c30656002d020000000000002c2c56002e020000000000005d6456002f020000000000008f9c56003002000000000000c9d456003102000000000000070d570032020000000000004345570033020000000000007a7d570034020000000000007d99570035020000000000009ab557003602000000000000b4ed57003702000000000000f225580038020000000000002f5e580039020000000000006b9658003a02000000000000a6ce58003b02000000000000e30659003c02000000000000183f59003d02000000000000517759003e02000000000000ad8059003f020000000000008baf59004002000000000000e9b859004102000000000000c5e75900420200000000000002205a0043020000000000003f585a0044020000000000007c905a004502000000000000bcc85a004602000000000000f1005b004702000000000000111d5b00480200000000000030395b0049020000000000006f715b004a02000000000000aca95b004b02000000000000e9e15b004c02000000000000251a5c004d0200000000000060525c004e020000000000009f8a5c004f02000000000000dbc25c00500200000000000019fb5c00510200000000000058335d005202000000000000956b5d005302000000000000c7a35d005402000000000000f7db5d00550200000000000031145e0056020000000000006f4c5e005702000000000000a7845e005802000000000000e0bc5e0059020000000000003fc65e005a020000000000001cf55e005b02000000000000582d5f005c0200000000000093655f005d02000000000000cf9d5f005e0200000000000005d65f005f02000000000000440e600060020000000000008346600061020000000000006a7e6000620200000000000056b46000630200000000000000ec60006402000000000000a72361006502000000000000e25b61006602000000000000f293610067020000000000001bcc61006802000000000000dade61006902000000000000590462006a02000000000000963c62006b02000000000000cc7462006c020000000000008c8762006d02000000000000ffac62006e020000000000003ae562006f02000000000000731d63007002000000000000b05563007102000000000000e98d630072020000000000001dc6630073020000000000005dfe63007402000000000000993664007502000000000000d86e6400760200000000000017a76400770200000000000051df640078020000000000008a1765007902000000000000c34f65007a02000000000000018865007b020000000000003ec065007c020000000000007af865007d02000000000000b63066007e02000000000000f06866007f0200000000000004a16600800200000000000041d966008102000000000000711167008202000000000000ac4967008302000000000000de8167008402000000000000f8b967008502000000000000b8cc6700860200000000000035f2670087020000000000006e2a680088020000000000001c3d680089020000000000007f6268008a02000000000000ba9a68008b02000000000000f3d268008c02000000000000310b69008d02000000000000704369008e02000000000000ae7b69008f02000000000000eeb3690090020000000000002bec6900910200000000000065246a009202000000000000a45c6a009302000000000000e0946a0094020000000000001dcd6a009502000000000000dbdf6a00960200000000000059056b00970200000000000018186b009802000000000000923d6b009902000000000000b0756b009a02000000000000e6ad6b009b0200000000000021e66b009c020000000000005e1e6c009d0200000000000096566c009e02000000000000d28e6c009f020000000000000ac76c00a00200000000000047ff6c00a10200000000000077376d00a202000000000000876f6d00a3020000000000000fa76d00a40200000000000059dc6d00a50200000000000022146e00a602000000000000464c6e00a70200000000000071846e00a802000000000000eea96e00a902000000000000aabc6e00aa0200000000000085eb6e00ab02000000000000e4f46e00ac020000000000001c2d6f00ad02000000000000da3f6f00ae0200000000000053656f00af020000000000008c9d6f00b002000000000000c4d56f00b102000000000000d90d7000b202000000000000d7457000b302000000000000f67d7000b402000000000000deb57000b502000000000000b2ed7000b602000000000000a9257100b702000000000000975d7100b802000000000000338c7100b9020000000000007e957100ba0200000000000068b17100bb0200000000000050cd7100bc020000000000001c057200bd02000000000000610e7200be02000000000000c13c7200bf020000000000006b747200c0020000000000005aac7200c10200000000000032e47200c202000000000000dcf67200c302000000000000321c7300c4020000000000002b547300c5020000000000007d8b7300c60200000000000020c37300c702000000000000cefa7300c8020000000000003c327400c9020000000000009b697400ca02000000000000eda07400cb0200000000000056d87400cc0200000000000090107500cd02000000000000ad2c7500ce020000000000000b367500cf02000000000000c7487500d002000000000000fe807500d10200000000000039b97500d20200000000000073f17500d30200000000000030047600d4020000000000004b207600d502000000000000a9297600d60200000000000006337600d702000000000000d3617600d80200000000000090747600d902000000000000089a7600da020000000000002fd27600db020000000000001a0a7700dc0200000000000022427700dd02000000000000007a7700de02000000000000d2b17700df02000000000000f8e97700e0020000000000002b227800e102000000000000635a7800e202000000000000a0927800e302000000000000daca7800e40200000000000011037900e502000000000000483b7900e60200000000000085737900e702000000000000b1ab7900e802000000000000dae37900e902000000000000121c7a00ea0200000000000049547a00eb02000000000000878c7a00ec02000000000000bfc47a00ed02000000000000edfc7a00ee0200000000000026357b00ef02000000000000606d7b00f0020000000000009da57b00f102000000000000cddd7b00f20200000000000006167c00f3020000000000003f4e7c00f402000000000000fb607c00f50200000000000077867c00f602000000000000b4be7c00f70200000000000014c87c00f802000000000000e0f67c00f9020000000000001b2f7d00fa0200000000000058677d00fb02000000000000959f7d00fc02000000000000d2d77d00fd02000000000000ec0f7e00fe0200000000000025487e00ff020000000000005f807e0000030000000000009ab87e000103000000000000d3f07e000203000000000000ee0c7f0003030000000000000a297f000403000000000000c53b7f00050300000000000043617f0006030000000000007b997f000703000000000000b9d17f000803000000000000f20980000903000000000000284280000a030000000000005e7a80000b0300000000000099b280000c03000000000000d2ea80000d03000000000000082381000e030000000000003e5b81000f030000000000007b9381001003000000000000b8cb81001103000000000000f30382001203000000000000313c82001303000000000000697482001403000000000000a6ac82001503000000000000c4c882001603000000000000e0e482001703000000000000ff00830018030000000000001e1d83001903000000000000dd2f83001a030000000000005b5583001b03000000000000988d83001c03000000000000d5c583001d0300000000000010fe83001e030000000000004e3684001f03000000000000826e84002003000000000000bba684002103000000000000f5de840022030000000000006f0485002303000000000000cc0d850024030000000000002c1785002503000000000000ea2985002603000000000000634f850027030000000000007e6b850028030000000000009a878500290300000000000017ad85002a03000000000000d2bf85002b0300000000000031c985002c030000000000000ef885002d030000000000004a3086002e03000000000000866886002f03000000000000bea086003003000000000000f2d8860031030000000000002a1187003203000000000000871a870033030000000000006449870034030000000000001d5c87003503000000000000998187003603000000000000cfb987003703000000000000eed5870038030000000000000cf2870039030000000000004a2a88003a03000000000000a83388003b03000000000000826288003c03000000000000b69a88003d03000000000000efd288003e030000000000002d0b89003f030000000000004d27890040030000000000006c4389004103000000000000ab7b89004203000000000000eab38900430300000000000028ec8900440300000000000068248a004503000000000000a05c8a004603000000000000b4948a004703000000000000f4cc8a00480300000000000030058b0049030000000000006f3d8b004a030000000000008e598b004b03000000000000ae758b004c03000000000000ecad8b004d0300000000000028e68b004e03000000000000331e8c004f030000000000004f568c0050030000000000008e8e8c005103000000000000c7c68c00520300000000000005ff8c00530300000000000041378d005403000000000000746f8d005503000000000000a4a78d00560300000000000064ba8d005703000000000000e4df8d0058030000000000000a188e00590300000000000023508e005a0300000000000027888e005b03000000000000d89a8e005c0300000000000043c08e005d0300000000000082f88e005e03000000000000c0308f005f03000000000000ff688f0060030000000000001ba18f00610300000000000059d98f006203000000000000981190006303000000000000d64990006403000000000000f56590006503000000000000158290006603000000000000758b9000670300000000000053ba9000680300000000000092f290006903000000000000d22a91006a03000000000000106391006b03000000000000489b91006c03000000000000a2a491006d030000000000001bd391006e03000000000000530992006f03000000000000d32e9200700300000000000090419200710300000000000074799200720300000000000094b19200730300000000000072e092007403000000000000d2e992007503000000000000b21893007603000000000000122293007703000000000000445a93007803000000000000739293007903000000000000f3b793007a03000000000000abca93007b030000000000005ddd93007c03000000000000c40294007d03000000000000e13a94007e03000000000000217394007f0300000000000059ab9400800300000000000090e394008103000000000000c31b95008203000000000000ea53950083030000000000009866950084030000000000000b8c9500850300000000000046c49500860300000000000057fc950087030000000000008f3496008803000000000000cf6c960089030000000000000ba596008a0300000000000045dd96008b03000000000000a3e696008c03000000000000801597008d03000000000000bc4d97008e03000000000000f78597008f030000000000002ebe9700900300000000000030f6970091030000000000005a2e98009203000000000000956698009303000000000000d49e9800940300000000000014d7980095030000000000003b0f990096030000000000006c4799009703000000000000ac7f9900980300000000000078b79900990300000000000026ca99009a030000000000007cef99009b0300000000000085279a009c03000000000000be5f9a009d03000000000000fd979a009e03000000000000b9aa9a009f0300000000000022d09a00a0030000000000003dec9a00a10300000000000058089b00a20300000000000074249b00a3030000000000008b409b00a403000000000000e4499b00a50300000000000038789b00a60300000000000076819b00a703000000000000e4af9b00a803000000000000b7e79b00a903000000000000731f9c00aa03000000000000a6289c00ab030000000000002f3b9c00ac0300000000000012579c00ad030000000000005d609c00ae03000000000000cb8e9c00af0300000000000057a19c00b00300000000000086c69c00b1030000000000005afe9c00b20300000000000002369d00b303000000000000bc6d9d00b40300000000000099a59d00b5030000000000004edd9d00b603000000000000db149e00b703000000000000e0399e00b803000000000000724c9e00b9030000000000002a849e00ba03000000000000ee9f9e00bb03000000000000d1bb9e00bc030000000000007df39e00bd03000000000000f02a9f00be030000000000006a629f00bf03000000000000ff999f00c0030000000000002ed19f00c1030000000000004608a000c203000000000000893fa000c303000000000000a476a000c403000000000000dfada000c5030000000000001cb7a000c6030000000000003ce5a000c703000000000000921ca100c8030000000000008c53a100c903000000000000988aa100ca0300000000000010a6a100cb03000000000000a0c1a100cc03000000000000e5d3a100cd0300000000000072f8a100ce030000000000007c2fa200cf030000000000003766a200d003000000000000389da200d10300000000000056a6a200d203000000000000a9b8a200d303000000000000cac1a200d4030000000000001ad4a200d503000000000000200ba300d6030000000000002714a300d703000000000000bc41a300d8030000000000006778a300d9030000000000000aafa300da0300000000000046dca300db0300000000000065e5a300dc03000000000000a81ba400dd03000000000000d72da400de030000000000002352a400df030000000000006288a400e003000000000000c1bea400e103000000000000f8f4a400e203000000000000212ba500e3030000000000003f61a500e403000000000000656aa500e503000000000000e497a500e60300000000000040cea500e703000000000000b204a600e803000000000000fc3aa600e9030000000000009471a600ea0300000000000037a8a600eb030000000000001adfa600ec03000000000000ea0ca700ed030000000000000e16a700ee030000000000005228a700ef030000000000007d31a700f003000000000000034da700f1030000000000002084a700f2030000000000004a8da700f303000000000000a99fa700f403000000000000f6baa700f503000000000000c1f1a700f603000000000000be28a800f703000000000000a65fa800f8030000000000003e7ba800f903000000000000c296a800fa03000000000000c3cda800fb03000000000000d504a900fc03000000000000f83ba900fd030000000000005f73a900fe03000000000000ceaaa900ff030000000000000bb4a900000400000000000005e2a90001040000000000005e19aa000204000000000000c12baa0003040000000000008e50aa000404000000000000fd62aa0005040000000000008175aa000604000000000000fa87aa0007040000000000002f91aa0008040000000000005dbfaa000904000000000000a3c8aa000a04000000000000e5f6aa000b04000000000000e41bab000c040000000000005b2eab000d04000000000000e765ab000e040000000000004c9dab000f0400000000000085a6ab001004000000000000b8d4ab001104000000000000fdddab0012040000000000003b0cac001304000000000000d043ac001404000000000000827bac001504000000000000b8a0ac0016040000000000005bb3ac00170400000000000029ebac0018040000000000006af4ac0019040000000000000e07ad001a04000000000000f422ad001b04000000000000432cad001c040000000000009935ad001d04000000000000ee3ead001e04000000000000d55aad001f04000000000000bd76ad002004000000000000a592ad00210400000000000076caad002204000000000000f6dcad002304000000000000e001ae0024040000000000004f39ae0025040000000000001371ae0026040000000000005f7aae002704000000000000fc8cae002804000000000000cda8ae0029040000000000005ebbae002a0400000000000081e0ae002b040000000000004f18af002c040000000000001e50af002d04000000000000e687af002e04000000000000a0bfaf002f040000000000005ff7af003004000000000000042fb0003104000000000000da66b00032040000000000009a9eb000330400000000000063d6b0003404000000000000300eb1003504000000000000da45b10036040000000000009a7db100370400000000000050b5b100380400000000000029edb1003904000000000000971bb2003a04000000000000e024b2003b04000000000000995cb2003c040000000000006694b2003d0400000000000048b0b2003e040000000000002eccb2003f0400000000000075d5b200400400000000000008e8b2004104000000000000e703b3004204000000000000ce1fb3004304000000000000b63bb30044040000000000000d45b30045040000000000009f57b30046040000000000007573b3004704000000000000c67cb30048040000000000003aabb3004904000000000000e4e2b3004a04000000000000651ab4004b04000000000000f951b4004c040000000000009389b4004d0400000000000025c1b4004e04000000000000f6f8b4004f04000000000000241eb5005004000000000000b130b50051040000000000007068b500520400000000000040a0b5005304000000000000ecd7b50054040000000000000510b60055040000000000003e48b60056040000000000007a80b6005704000000000000b7b8b6005804000000000000f3f0b60059040000000000002f29b7005a04000000000000ae4eb7005b040000000000006861b7005c04000000000000a599b7005d04000000000000ded1b7005e040000000000005cf7b7005f04000000000000160ab80060040000000000005042b8006104000000000000964bb8006204000000000000687ab8006304000000000000a6b2b800640400000000000066c5b8006504000000000000e5eab80066040000000000000423b90067040000000000003f5bb90068040000000000005d77b90069040000000000007b93b9006a04000000000000b7cbb9006b04000000000000ef03ba006c04000000000000133cba006d040000000000003358ba006e040000000000005174ba006f0400000000000042acba0070040000000000006ce4ba007104000000000000a21cbb007204000000000000e054bb007304000000000000405ebb0074040000000000001b8dbb0075040000000000002ec5bb0076040000000000006dfdbb007704000000000000a435bc007804000000000000d06dbc0079040000000000000ca6bc007a040000000000004adebc007b040000000000008716bd007c04000000000000c34ebd007d04000000000000fc86bd007e040000000000003bbfbd007f040000000000007af7bd008004000000000000d500be008104000000000000b32fbe008204000000000000ea67be00830400000000000027a0be00840400000000000065d8be008504000000000000a410bf008604000000000000dd48bf0087040000000000003b52bf0088040000000000001881bf0089040000000000008fb8bf008a04000000000000cbc1bf008b04000000000000f8efbf008c040000000000007602c0008d040000000000008327c0008e04000000000000075fc0008f040000000000005d96c000900400000000000009cec00091040000000000003b06c10092040000000000002d3ec10093040000000000006476c10094040000000000007aaec1009504000000000000b9e6c1009604000000000000ef1ec20097040000000000002c57c2009804000000000000698fc20099040000000000008cc7c2009a040000000000009effc2009b04000000000000da37c3009c04000000000000ee6fc3009d0400000000000029a8c3009e0400000000000067e0c3009f04000000000000240fc400a0040000000000008218c400a104000000000000b150c400a204000000000000c088c400a304000000000000d2c0c400a404000000000000f6f8c400a5040000000000001231c500a604000000000000d143c500a7040000000000004d69c500a80400000000000089a1c500a904000000000000c4d9c500aa040000000000000112c600ab040000000000005c1bc600ac040000000000003a4ac600ad040000000000007482c600ae04000000000000abbac600af04000000000000e4f2c600b0040000000000001d2bc700b1040000000000002e47c700b2040000000000004863c700b304000000000000687fc700b404000000000000829bc700b5040000000000009bd3c700b604000000000000d80bc800b7040000000000001144c800b804000000000000704dc800b904000000000000d056c800ba040000000000004e7cc800bb0400000000000080b4c800bc04000000000000b1ecc800bd040000000000009808c900be040000000000008d24c900bf04000000000000c75cc900c004000000000000df94c900c104000000000000feb0c900c2040000000000001dcdc900c3040000000000004605ca00c4040000000000006e3dca00c5040000000000009e75ca00c604000000000000029bca00c704000000000000aeadca00c8040000000000008adcca00c904000000000000eae5ca00ca04000000000000251ecb00cb04000000000000fa55cb00cc04000000000000778ccb00cd04000000000000eec3cb00ce0400000000000005fccb00cf040000000000004134cc00d004000000000000716ccc00d10400000000000096a4cc00d204000000000000d3dccc00d30400000000000086efcc00d4040000000000000215cd00d504000000000000ac27cd00d604000000000000264dcd00d7040000000000008656cd00d8040000000000006385cd00d9040000000000003bb4cd00da0400000000000099bdcd00db04000000000000d8f5cd00dc04000000000000172ece00dd040000000000005366ce00de04000000000000909ece00df04000000000000b7d6ce00e00400000000000068e9ce00e104000000000000cc0ecf00e2040000000000000547cf00e304000000000000427fcf00e40400000000000079b7cf00e504000000000000b8efcf00e604000000000000f427d000e7040000000000000b60d000e8040000000000004698d000e90400000000000083d0d000ea04000000000000c008d100eb04000000000000fa40d100ec040000000000003679d100ed0400000000000073b1d100ee0400000000000087cdd100ef04000000000000a6e9d100f004000000000000e521d200f1040000000000001e5ad200f2040000000000005692d200f30400000000000092cad200f40400000000000052ddd200f504000000000000ce02d300f604000000000000e13ad300f7040000000000003444d300f804000000000000dc56d300f904000000000000ef72d300fa040000000000004d7cd300fb0400000000000024abd300fc04000000000000a1d0d300fd040000000000005be3d300fe04000000000000901bd400ff04000000000000ce53d40000050000000000000a8cd40001050000000000003ac4d40002050000000000004ae0d400030500000000000069fcd4000405000000000000a134d50005050000000000006047d5000605000000000000de6cd50007050000000000001ba5d500080500000000000058ddd50009050000000000009415d6000a05000000000000d24dd6000b05000000000000f085d6000c050000000000001ebed6000d05000000000000fbecd6000e050000000000005bf6d6000f050000000000008b2ed7001005000000000000c566d7001105000000000000029fd700120500000000000036d7d70013050000000000006f0fd80014050000000000009f47d8001505000000000000c97fd8001605000000000000e4b7d80017050000000000001ff0d80018050000000000005928d90019050000000000009560d9001a050000000000005473d9001b05000000000000718fd9001c05000000000000d198d9001d0500000000000031a2d9001e050000000000000fd1d9001f05000000000000cfe3d90020050000000000004f09da0021050000000000008941da002205000000000000b979da002305000000000000edb1da00240500000000000047bbda00250500000000000054d7da00260500000000000007eada00270500000000000067f3da0028050000000000003a22db0029050000000000005e5adb002a050000000000007892db002b05000000000000b0cadb002c05000000000000e702dc002d05000000000000183bdc002e050000000000007644dc002f050000000000002773dc003005000000000000dd85dc0031050000000000004dabdc00320500000000000086e3dc003305000000000000bb1bdd003405000000000000944add003505000000000000f453dd003605000000000000ad66dd003705000000000000298cdd00380500000000000060c4dd0039050000000000009cfcdd003a05000000000000fa05de003b05000000000000d734de003c05000000000000b56cde003d0500000000000045a4de003e05000000000000a1d2de003f05000000000000e4dbde0040050000000000002fe5de0041050000000000003c05df004205000000000000d81adf004305000000000000d636df0044050000000000002840df004505000000000000d252df004605000000000000cf6edf004705000000000000a9a6df004805000000000000eeafdf00490500000000000047b9df004a05000000000000b1dedf004b050000000000000de8df004c050000000000006e0de0004d05000000000000cb16e0004e05000000000000d84ee0004f050000000000007886e0005005000000000000b3bee0005105000000000000c3f6e0005205000000000000fe2ee10053050000000000002c67e1005405000000000000e679e1005505000000000000a68ce1005605000000000000629fe10057050000000000009bd7e10058050000000000005806e2005905000000000000b10fe2005a05000000000000e647e2005b050000000000001880e2005c050000000000007689e2005d050000000000004cb8e2005e050000000000007ef0e2005f05000000000000b228e3006005000000000000e760e30061050000000000002499e300620500000000000060d1e30063050000000000009c09e4006405000000000000d441e4006505000000000000334be40066050000000000000a7ae4006705000000000000e0a8e400680500000000000040b2e40069050000000000006feae4006a05000000000000a022e5006b05000000000000de5ae5006c050000000000001a93e5006d0500000000000055cbe5006e050000000000000bdee5006f050000000000008203e6007005000000000000db0ce6007105000000000000b53be6007205000000000000f073e60073050000000000004e7de60074050000000000002cace60075050000000000008cb5e60076050000000000006be4e6007705000000000000a51ce7007805000000000000dc54e7007905000000000000168de7007a050000000000004ac5e7007b0500000000000057fde7007c050000000000009335e8007d05000000000000d06de8007e050000000000002e77e8007f0500000000000004a6e80080050000000000003fdee80081050000000000007b16e9008205000000000000b74ee9008305000000000000e886e900840500000000000015bfe900850500000000000046f7e9008605000000000000602fea0087050000000000000442ea0088050000000000005a4bea0089050000000000006a67ea008a05000000000000889fea008b05000000000000daa8ea008c0500000000000079d7ea008d050000000000009f0feb008e050000000000005c22eb008f050000000000001c35eb009005000000000000d847eb0091050000000000000e80eb0092050000000000003eb8eb00930500000000000076f0eb009405000000000000ad28ec009505000000000000e660ec0096050000000000002399ec00970500000000000060d1ec0098050000000000009e09ed0099050000000000005e1ced009a05000000000000da41ed009b050000000000009654ed009c050000000000005567ed009d05000000000000127aed009e050000000000004ab2ed009f0500000000000082eaed00a005000000000000e1f3ed00a105000000000000bd22ee00a205000000000000fa5aee00a3050000000000003493ee00a405000000000000929cee00a50500000000000070cbee00a605000000000000ac03ef00a705000000000000eb3bef00a805000000000000fb73ef00a905000000000000feabef00aa05000000000000bebeef00ab0500000000000038e4ef00ac050000000000004e1cf000ad050000000000008854f000ae05000000000000958cf000af05000000000000c5c4f000b005000000000000fffcf000b1050000000000002e35f100b205000000000000de47f100b305000000000000466df100b4050000000000005da5f100b50500000000000094ddf100b605000000000000c115f200b705000000000000fa4df200b8050000000000002d86f200b90500000000000067bef200ba05000000000000a0f6f200bb05000000000000b52ef300bc050000000000003254f300bd05000000000000ef66f300be05000000000000239ff300bf0500000000000032d7f300c005000000000000dde9f300c1050000000000001e0ff400c2050000000000004f47f400c3050000000000008d7ff400c4050000000000006bb7f400c5050000000000009beff400c605000000000000c927f500c705000000000000ff5ff500c8050000000000003198f500c90500000000000063d0f500ca050000000000008908f600cb05000000000000c240f600cc050000000000001d66f600cd05000000000000ca78f600ce05000000000000fbb0f600cf0500000000000031e9f600d0050000000000006021f700d1050000000000009e59f700d205000000000000d891f700d3050000000000000acaf700d4050000000000004402f800d5050000000000007b3af800d605000000000000fa5ff800d705000000000000b672f800d805000000000000ebaaf800d90500000000000048b4f800da0500000000000024e3f800db05000000000000601bf900dc050000000000009753f900dd05000000000000ac8bf900de05000000000000e3c3f900df050000000000001cfcf900e0050000000000005934fa00e105000000000000936cfa00e205000000000000a7a4fa00e305000000000000dfdcfa00e4050000000000001a15fb00e5050000000000004d4dfb00e605000000000000a656fb00e7050000000000007b85fb00e805000000000000a2bdfb00e905000000000000dff5fb00ea050000000000005f1bfc00eb050000000000001e2efc00ec050000000000005266fc00ed050000000000000c79fc00ee05000000000000cc8bfc00ef050000000000002995fc00f005000000000000899efc00f105000000000000c1d6fc00f2050000000000007ee9fc00f3050000000000003dfcfc00f405000000000000f00efd00f5050000000000004c18fd00f6050000000000001a47fd00f7050000000000004a7ffd00f80500000000000086b7fd00f905000000000000beeffd00fa050000000000001ef9fd00fb05000000000000ee27fe00fc050000000000000944fe00fd050000000000002560fe00fe05000000000000307cfe00ff050000000000002798fe000006000000000000e2aafe00010600000000000042b4fe0002060000000000005dd0fe0003060000000000009a08ff000406000000000000ca40ff000506000000000000244aff000606000000000000f278ff0007060000000000002db1ff00080600000000000063e9ff000906000000000000712100010a06000000000000313400010b060000000000004c5000010c06000000000000ac5900010d06000000000000b49100010e06000000000000e3c900010f06000000000000f60101011006000000000000103a010111060000000000003056010112060000000000004c720101130600000000000084aa01011406000000000000c2e201011506000000000000fe1a02011606000000000000235302011706000000000000618b020118060000000000009dc3020119060000000000005ad602011a06000000000000badf02011b06000000000000d7fb02011c06000000000000370503011d06000000000000f71703011e06000000000000133403011f06000000000000516c03012006000000000000107f030121060000000000008da403012206000000000000cadc03012306000000000000f81404012406000000000000324d0401250600000000000070850401260600000000000080bd040127060000000000008bf504012806000000000000842d05012906000000000000d73605012a060000000000008b6505012b06000000000000c19d05012c06000000000000f9d505012d060000000000002e0e06012e06000000000000664606012f060000000000009d7e06013006000000000000d7b60601310600000000000011ef06013206000000000000442707013306000000000000725f07013406000000000000af9707013506000000000000e7cf070136060000000000001f0808013706000000000000372408013806000000000000544008013906000000000000917808013a06000000000000c8b008013b0600000000000001e908013c060000000000000f2109013d06000000000000085909013e06000000000000a99009013f06000000000000b5c809014006000000000000c5000a014106000000000000d2380a01420600000000000006710a014306000000000000f5a80a0144060000000000002be10a01450600000000000012190b01460600000000000048510b01470600000000000086890b014806000000000000e5920b014906000000000000c4c10b014a0600000000000000fa0b014b060000000000001d320c014c060000000000000b6a0c014d06000000000000c5980c014e060000000000001aa20c014f06000000000000d7d00c0150060000000000002dda0c01510600000000000069120d015206000000000000a44a0d015306000000000000df820d0154060000000000001dbb0d01550600000000000055f30d015606000000000000852b0e01570600000000000083630e015806000000000000c39b0e0159060000000000001ba50e015a060000000000007bae0e015b06000000000000f7d30e015c06000000000000afe60e015d06000000000000290c0f015e0600000000000065440f015f06000000000000db690f016006000000000000977c0f016106000000000000d2b40f016206000000000000ecec0f016306000000000000062510016406000000000000ea5c10016506000000000000f49410016606000000000000ffcc100167060000000000005ed610016806000000000000d6fb10016906000000000000340511016a06000000000000613d11016b060000000000008b7511016c06000000000000919111016d06000000000000abad11016e06000000000000e0e511016f060000000000001d1e120170060000000000005556120171060000000000006c8e120172060000000000008aaa12017306000000000000a3c612017406000000000000bdfe12017506000000000000f83613017606000000000000126f130177060000000000006c9413017806000000000000c99d1301790600000000000029a713017a060000000000005bdf13017b06000000000000b8e813017c0600000000000016f213017d060000000000008d1714017e06000000000000ec2014017f06000000000000a43314018006000000000000bc4f14018106000000000000d58714018206000000000000919a1401830600000000000005c0140184060000000000005fc914018506000000000000f8f714018606000000000000a10a15018706000000000000fa1315018806000000000000561d15018906000000000000fa2f15018a06000000000000513915018b06000000000000aa4215018c06000000000000106815018d060000000000002f8415018e060000000000004ba015018f060000000000002cbc15019006000000000000ccce1501910600000000000019d81501920600000000000076e115019306000000000000331016019406000000000000664816019506000000000000998016019606000000000000d5b81601970600000000000093cb16019806000000000000f3d4160199060000000000000ff116019a06000000000000cd0317019b06000000000000492917019c06000000000000a33217019d06000000000000444517019e060000000000003a6117019f06000000000000117d1701a0060000000000001c991701a10600000000000059d11701a2060000000000008c091801a306000000000000c2411801a4060000000000001e4b1801a50600000000000037671801a606000000000000f2791801a7060000000000001fb21801a806000000000000dec41801a90600000000000056ea1801aa0600000000000005fd1801ab0600000000000079221901ac06000000000000b25a1901ad06000000000000e5921901ae06000000000000f9ca1901af060000000000005df01901b00600000000000017031a01b1060000000000003a3b1a01b206000000000000e64d1a01b30600000000000044731a01b406000000000000a37c1a01b50600000000000078ab1a01b6060000000000006ee31a01b706000000000000921b1b01b806000000000000be531b01b9060000000000001d5d1b01ba06000000000000ec8b1b01bb0600000000000009c41b01bc06000000000000e5fb1b01bd06000000000000f1331c01be06000000000000ef6b1c01bf06000000000000a39a1c01c006000000000000fba31c01c106000000000000f2db1c01c206000000000000f8131d01c306000000000000df4b1d01c40600000000000075831d01c506000000000000aaa81d01c6060000000000003bbb1d01c7060000000000002fd71d01c80600000000000017f31d01c90600000000000067fc1d01ca06000000000000ad211e01cb06000000000000fb2a1e01cc0600000000000052341e01cd06000000000000da621e01ce06000000000000c87e1e01cf06000000000000b09a1e01d00600000000000089d21e01d1060000000000000fe51e01d2060000000000005fee1e01d3060000000000003b0a1f01d406000000000000f8411f01d50600000000000098541f01d606000000000000ac5d1f01d70600000000000094791f01d8060000000000006eb11f01d90600000000000038e91f01da060000000000000b212001db06000000000000e6582001dc06000000000000c8902001dd0600000000000062a32001de060000000000007ac82001df060000000000001cdb2001e0060000000000005d002101e10600000000000021382101e206000000000000f76f2101e3060000000000003d792101e406000000000000cea72101e50600000000000095df2101e6060000000000006e172201e706000000000000334f2201e80600000000000085582201e90600000000000010872201ea06000000000000eea22201eb06000000000000cbbe2201ec06000000000000a9da2201ed060000000000009ef62201ee060000000000003d092301ef06000000000000782e2301f0060000000000000c412301f1060000000000005e4a2301f20600000000000045662301f3060000000000003b822301f406000000000000299e2301f506000000000000fed52301f606000000000000990d2401f7060000000000002c202401f806000000000000173c2401f90600000000000063452401fa06000000000000fd572401fb060000000000002a7d2401fc0600000000000000b52401fd06000000000000b8ec2401fe0600000000000037242501ff06000000000000155c25010007000000000000e69325010107000000000000a6cb25010207000000000000630326010307000000000000b30c260104070000000000000916260105070000000000005b1f26010607000000000000523b260107070000000000004857260108070000000000002d732601090700000000000018ab26010a07000000000000fdc626010b07000000000000ede226010c070000000000008d1127010d07000000000000e31a27010e07000000000000cc5227010f07000000000000ac8a270110070000000000004b9d2701110700000000000090c22701120700000000000087fa27011307000000000000583228011407000000000000fe6928011507000000000000557328011607000000000000f4a128011707000000000000ced9280118070000000000007d1129011907000000000000414929011a070000000000001a8129011b07000000000000deb829011c07000000000000bff029011d07000000000000a8282a011e070000000000008b602a011f07000000000000dc692a0120070000000000002d732a0121070000000000007a7c2a012207000000000000198f2a01230700000000000069982a01240700000000000003ab2a0125070000000000004ab42a0126070000000000009ebd2a01270700000000000041d02a012807000000000000e7e22a01290700000000000089f52a012a0700000000000023082b012b07000000000000cb1a2b012c0700000000000018242b012d070000000000006b2d2b012e07000000000000ba362b012f070000000000000e402b013007000000000000af522b013107000000000000035c2b0132070000000000004c652b0133070000000000009b6e2b013407000000000000e4772b013507000000000000abaf2b013607000000000000f8b82b01370700000000000052c22b013807000000000000f0d42b0139070000000000008de72b013a0700000000000081032c013b070000000000005e1f2c013c070000000000004a3b2c013d0700000000000037572c013e070000000000000a8f2c013f070000000000005e982c014007000000000000eeaa2c0141070000000000007fbd2c014207000000000000d2c62c014307000000000000b6fe2c0144070000000000008f362d014507000000000000426e2d014607000000000000d9a52d014707000000000000a0dd2d0148070000000000003df02d0149070000000000004f152e014a07000000000000971e2e014b07000000000000e2272e014c0700000000000035312e014d07000000000000cb432e014e07000000000000174d2e014f07000000000000a57b2e015007000000000000f8842e015107000000000000e0bc2e015207000000000000bdf42e0153070000000000009d2c2f015407000000000000e9352f015507000000000000353f2f015607000000000000cf512f0157070000000000006e642f0158070000000000001b772f015907000000000000659c2f015a070000000000005bd42f015b0700000000000001e72f015c07000000000000470c30015d07000000000000464430015e07000000000000904d30015f07000000000000e456300160070000000000003b6030016107000000000000327c30016207000000000000d68e300163070000000000002d983001640700000000000032b430016507000000000000faeb30016607000000000000f12331016707000000000000c65b310168070000000000001c6531016907000000000000bb9331016a0700000000000002b931016b07000000000000a4cb31016c07000000000000870332016d07000000000000721f32016e070000000000006b3b32016f07000000000000675732017007000000000000647332017107000000000000ab7c3201720700000000000042ab32017307000000000000eebd320174070000000000003be33201750700000000000088ec32017607000000000000281b330177070000000000003d5333017807000000000000df6533017907000000000000d28133017a07000000000000248b33017b0700000000000012c333017c07000000000000b4f133017d0700000000000007fb33017e07000000000000fb1634017f07000000000000e93234018007000000000000914534018107000000000000c26a34018207000000000000117434018307000000000000b98634018407000000000000ada23401850700000000000092da340186070000000000008d1235018707000000000000864a350188070000000000008b823501890700000000000028b135018a070000000000007dba35018b070000000000001dcd35018c0700000000000065f235018d07000000000000d60436018e07000000000000952036018f07000000000000d52936019007000000000000e46136019107000000000000d499360192070000000000007fac36019307000000000000d5d13601940700000000000079e436019507000000000000d7ed36019607000000000000e80937019707000000000000f74137019807000000000000386737019907000000000000e37937019a07000000000000e79537019b07000000000000ecb137019c07000000000000a1c437019d0700000000000001ea3701" }, "name": "Polkadot", "properties": { diff --git a/artifacts/polkadot_metadata_full.scale b/artifacts/polkadot_metadata_full.scale index 3767f672116e2e17b5ce34c7fb8265e94528acc6..967bbbbdca751421c861e8ace7677fd2440aa3a6 100644 GIT binary patch literal 413307 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
  • >lbB{Ca2jSr==`LZ#!sJ&K0V}9k3yZk z@M5pN@H4&o!p{up=2fT+KQ~Ba__-nd|Bh)5ztG2mAE-Snpw-t=arhUngW~Wnjx8jA z$!k8oQqX*Ssc*Xu*MNNa*cyS9JZpbTax{Nl^f<=yi8{4B?Rf zzR|Z+hpP-qnCCd^f^QDFY-Lut=$=#n-V8H7Vve8#`*CZ(Ky~O_>E|sp)o&4h0I=c z${W!*L)=J*ZRqcMG!De-@MxTYjgF$3>BES>BhffNcEs=1I-CC_(9RxL>7O28Q243n z?$1s}Kg+%?(cL#(rSWm|mj$-0&A%kTVF?W19bTfSLvb7 zcfBTu?PHl7UVg(>y4xAN3Be|DIKUrdml)jl5pU9A28zLF9k9W`p$A(jo_gr6(#UED zm@3L|k3tapkkK2i(r>s*zu_wVhO2b@cfeKp7k&EBvcJqP4`6S9DfaePC!=5W^>HLN z_v3H)%N(BVrLajZ)n-{4t^5KXdV_&|!(XNw9B+(2I~YiM6+Awwuh%OiuD;fM{EYyC-`82pLm;aUc^~etQ%qw1`LE@RuQh#_J!KH`p8H4S$)E zJN6s?GR^Mm6LD9f0k4z4%&#AU1^>4vtIGwC?bW8`=Wn%rSk!`{;4JmyyhV$WkW~q$ zqqtfNiDd|Hun?z^ZW?>Uy(zXMf85VftU?H;E^% zv@NcDmGI5YSA3vWCB9VrbCulOtvlnR@yBB&Jil0IxvV$mNJX^q(zU(q^=A8-R-1^J zx!TIvvrlWl%Z<5n`R_-_vhOo-k$r2KBz~J4?>c+-=H}fULX+Fgxp&PG`*QB3=KiV$ zn!1s{fY&g6yr;Q;{r*m~ZDZo2Fdn;@-`Xo|YP(jP@gEX!wB95)IeGC?s=kxGce~lW z*HSHX5)~8TyLo3{8AJc2_*Ko;X^C_#y$``BmQ~bc7G_d4n^foC=B{h{ul2jsgd-2H zayzRq26?JfvWc|4$}(tKgx4wlRI8KQ*t)c0s;FjOXdpxFGso<^Hn@04h z$kbbatMJH|Qz^naxh56K4v?NB&U|&Jd4Kh8bBD6#9UNF1&8<4wNOx9kj82t82fa5u z8mYd>{o~u((-$v3^E_one5&NyI@Q&iUDDRyt&xkqdEYni-K#1vnbk`JthvP~skfFk zeP>U|AdS9COktC%fPKxW%Ieeh(%V+E&J}zzeK=`w$44udI=jRI`sFyhxzvaBCZ-(1 zi>sB(jrh0mOoqhbM@R9woV>Hy?sOj;jsNU97U44noO9pI)j*52>;q69nLrt_am41) zqoWf8COO~SXmskNN7&!(w(|KXSn;DH@p*e&K(W(`IWLXBD#KyQ=F*RjG);N{iCCW4I|mr!1WY5pUrzt=2r^P7*~n1nU%-&COvGGq;$RTwNA ziS2!2G=3o0+*zY}ehNBcJ=|M(7hFGW&{@58G~z!3vA;XA5WQ`*`oeB&>!o_5)m#83D+s>ECu^Z(LKCQTeTDK-%A>zRlK#CNlFc;Ruh^B|+5b%g+|eOT zU+rFVONDD1P%x@6=yivw*6%jKLQPkls{BG-|=Bn>x@Vw*7v+=E6 zp+K9tZ)=JDHRZH+m1tz>uBGnwSQxw`yy)|++jzdFj!PX5abBA*Jki%h%p*2fx!2b*nAkxW07j!pi0A*Fs8nRa%17wTM1u2oE@NM9`@W_T^;%cUv$LC?NL*LPhh81kfHTKZq1IsP7SO} z*OyNt-AL~Z*xU^W#?IbuBFt3W*<^gk=Gg}#^Sg)d-3R*zqy|H?-dNq+VL9 zB&s{C7TIeklV-cJE4pm zxwUg=^DZ1mY-G~?A_Ny+_-lhrszyxJh=F(qYc+29lb}-D2Ok zI^s|z#?`lYs%HAYq4(OFl9!)7YfBQ|Sfy?*NtfK>*75>?6o}d)GbS_?(czP_Vl%hp}f5Kj2mw)#8WCIBK-3jGY|LYRBAn}%Vb&$~Ut z_R*S4hG;ay%~oU82*y*R@$yYZyCM`sW)EK66d^&A@Q!?r>Ks0RGC<`y3WYaocYH!E z%GzuS)wc#u^&RnMVKqoSYl8+pd-lQ}WuW=;$7pq--P+*)0*AfiuREMSy92M< z&y!V9irs~TG~26LW8~r>q$9n5H;zfCL-H3Wn3L68ZPoURCLSy{8YcDTUj{VHp{CK# zbps?77v2YX-GihR@$-Nhn6ldcQG0v3f>P;KPAr~yzqF44d|}+ITAVI-YGoq^p>CGCM$H^P@IJWyJqc;)LFTSM8BvV~Y_N3lkZqgr#LQxMF6 z^T6f#3S;#hlsrb>z@r;V>XJq;0zd2mTF{-200pr?dYWt3YgeydySTD=UvRkJp`ixP&d0Ho03qW?V&`$TeBB-2w8Fti!#`%p{xp}PpG zJd$Qkj}b!a^jB{Lt>5!8dg51*yQzr@4&U27&1HZbGxTYAP3c06_}o`6bykQPcn59` z4oije)TIfmP~%SR?jEFrgcwcQU3NuS{o>deYwG9~)Tns6YfhY2gYpqN)nCryerl}; zdQi2o%#IdlYtrgM>DIL(L>W2V2H%KOO3(-Ngvd})zoHcu)?v7SlalzqRqr6kax-3x z#c{Q5!@0b7!L#&}gP;|hrIUSFeIz-QrfkDb!)xnB4$;{24V&~Qx>9`09)hml89Uq~ z?9irea(!O|=iNcQH<@AsWkcbDuwz~e$_x>8g;e~(KObkaa$JMW$_gdlhqn)xWs~I> zK%1>#;@ktS{?1)09eN}Hq2Jry6>vTlOF~0z<@h%wu=Px+(c&Dma!b%Q0F)^pK*iN} z#830F#Bkg5Mr&hFAZ8dzD}dA&LF4RMx0)t)gYM=QMy-2w_K*3jy=Y@xjV1BGSz)3; zEmP+{++ith6WMM4(=oFS_S~TcO0TLsux*JYM(apMqJMNlZdX6MCdp~7W|)N4!l-W1 zwRkDJZui@pU5+=s6ehR9oLbwf-PSHaKA2WIAB|&z9XBj7CK@xaSBBu!wa0oRSbf}b z9ZEy^aypFGZcV*N`HbpG_!^*4odJKy+ss~9T>oTJP<8@!EH)bsrtezezXG6g*@bs> z_{zLmn=NcOrYOBzdr|uNoyKnlX-v>*+vy8s+7x9B%Brz9gqtPPukYPWmwR?+;~v4c z_{d;n>lU-{&f1IB!P_?5ZFN1t2yEiiV*@wMdO6OvJsK~96akkU@f7+9ln)F6uIr*T zgk7<1Uvu--G9WTu1pQsx{1x%sUSt#N?TBJ>5N%G9ufu=aZt%tC_TIL?0Dg-+g>-iqrz zyaCwJB-bD&p{@hjKj=Didmo*x3cKusj6_&aM!bZD64j&w`Ea-`nKM^Uln!(0TMEp;$>_1#V!cYTw%bB5Oxi-w|Z#3q4iI`h8=5i11Z(ZwV2*?mkY_N{6GE5}u-`#rXaE+47S zGgrgX#jaYdmC4tB70T0^;X@hqV;>4`{b!a=`p?1 za{3RIIf1j_1%be$aic%WrTYfL7NG$bAa|QMh0yr88A$tcQQV>rFD?nmuEODo0QQMV zmDxL3ot;@1U4n@<-#&rStl6esmkO|)j2CnH#;CqYfBMYOff?0m#@d46u`4+hzT-lz zzjVp7dsukzgXpL-PaHiQvGDoPiMb#aVpQo{-(*#K*~Ar!+>hh;OW%BMMNA5k5YiaV zCf@(#0{kOFU-DGEh(R8Dg_S~#v2dO`5nVJkK8QoStLLgKll9ETw01*e&C7!6iYbOs zaNTRdEi`=bM6QcIILeITDYv(X*w;!%xPdL zL~rtqI9|@|n^#(`m-coYogAsWIN&HVHA?YF>Chdt1KX^-+Uy!5tex^qt*L2ro?=j$ z2ESJ85NsJ*hfd?@Cw-!Nb-;u*%F$uZ?NNX})Bm5Zdzmm3%wNr>&pJJj_B~1_KAfo% zp^ffM`KF}N)*t+VK^62*GL7to*o(w%|G^(ToXh{>=)^3Z8QxIto%H6O-lBT^%Kg^c zpZX*8eo_4)VAJO4#G1!4FeEi;}m=JRK#Mqj+-eYEyo8 zXc<*|cA(8ad9Vm;qE^n}ZfY3Z|KP#&RXTTrp)O$0xhto#L0uqn(Bx%mCaP%^C;y^* zTkI2VMosdrWgnuyGC^2Vo3-?eo3m3u9&N~x2s%?A%kOVbPpgXg=L z+F3MU00y{6#8r$*80?mo`Ns-43YXxX1C_3F;LYt(a<1|34MgTP*7r%yd29b=m~?}H zto4b?t^Vms`=w5to=DSL({TOD8#O|92C+(Ng`^@s@0s@lS_~U;Ej{P-MRJR}FWBTXU@r&y+oYD}DKZ&fL|TaMvNZs!KPsj!3<#n^z^2-vHmv zk~4Go_)XloP(1O*KA8@mc$3Z`(#o*6g1k z9=Ef%DNrNb0oUo=ihf*f1h`4wW>90VYqPRgp`k!965E8n2blmz8!A}!P)x6~L_#T! zk~QDMIN{mP3xI1j*avlnS)Y#T%K0=bBaM;|O5zHC=l81eJ zoP0`c8h#a_(|oCJ!1RTlb>6T_!~Zj_bR_xg!7JsUrJ`x13;rx`I_2#^lJNSU%!y&B^0w$jgHBs6pGR0iTzlo#CJe2uGcnP&U&f$-9NpL8{qH?48Cuq0-opy6P`K!eN(`)-ViQwfF z2kQ@hfsN~Xr04l}IQd7CzZ<;YaxKIHvnSVjy!ZLnnY-)?fk9_3hzuzf;NNB5ZyH9o z5ysrK(y8~L!TEQZ-bB(JysaR7Gm4f1?5eBxpPQ^V)s+tQ6!@Mv9uTNM8e}8B+w&w`n&33!hz89Y<^+4|Q;a-?i z8(a0w?cjasR4E1^$@B%i5ko&f4k12-a6zQIz3o+WCLCbr<0J98i~bqP7d;|uCrBdm z1xZ9&<$E_<+f6g1xlu4K;qSh5eFX#0VWRXWM<*7%Sc;R&7C|5-_-54ePphPx6;f&M z?UpF}#NK~>`|zDYOJSdib!-H{C3I{Pmo=1j7{tshftnjFha4B+u+`RLnQC`%NRWae zeCd=iD26+i?nC^7*3?cZU9f?Ip##-P@|{6Lhau6Cm{+r@)OT7n*U4JB69J1sO(z;j zzIt$X>kw%!yX&Zvp1F)NC!fs;yzUnb1nKV3pH-;6;r z_dJgICaRf$WA53_{>A!_F`&zpqIRi(W+jXq4(p0uv+qF8&^v%=dY}8vsfmw~;*D!99{8@2a-=U4q&Y~Ox znWYQaknhHLxI?B+SGKq}xJ|B+hph8t@~Pr@x(xn2<<*vbp62`G73+t0J*q2~_29P9 z)a&PAX9I9pZ;%-H!oJy8x9gjjkjnvk@h~VIOa29fwYPqHGX&{rF%TyX&1sCY7Xgfd zGDWqH(@TX}c^>DX%&S7!)PRWvkaqC2QyV(DJ8k%hp4q)Ze4q&PYu~l;%3B7_ZpbAM z8%At&9V529L$i>Y@94A&%Wz(=!Q4?gn4oK1kY$;o(cOIyR5Lggy9d3;{z&rvMKhur z63m(vp(^XlpB@}))~>g^Hzgk)+MPd{bnX^5TMcJY$Ur=j&FI+^an@WuNhZ-44$_3c4i-$7QpUWBQ4&lhn9)>!YR+px&au9*mSke_j{QRQ7R{**=v{9y&}S z1?iAcobiffdPeC~I(=)$R(8D?O= zKLnUoEYy;Zg<5n}QISxi$eN3_yX_XZhLQ5-TwtP*Oh*lKYU8+rUzbn|xCXT4kIc!Q zDAV^`^u(^UlXs;g#&EFy=+|!U;ey1~Z8$q{#z_vrWmA75o|>S}>UyiS6^$hy6EEYt z2o4XzMK)j8IK6ZstUVj;pyQ~>A0u0Tj=!>TylKDC*_6BWy}Ldx6PbH8pqp7-I?(aT z3j@(`a1W0pyZt@jQQ*I;%GUvddN$kM8N`#aIQ8L0=PVI+@lE24)h?f;v#QQ7VOthn z)i7v2kI>gd^3}n8d0nFU7#b0A3!b^wyuYmA5sAkZMbh~KA*=5e9J=SvC_|OGcsy!? zAE9`nn84@@?{go#@M1o3z4AB10dqQY3#F79PKVQp-%D0*<}_k2e2`8rIr}Dx0t4s) zSpUt*_oO?Lryy@GS3=aq>#6ro^hf|dgfLjXPU$*QWrk0!Ek{WZ!D3V`08+$~V z4r`E{0*4Nths)|=QVLViP+>C8tY)2uM`^bF=R~c=mA}T>`7{T;n>Ug?KWNt4twW}m zU%Mhvf(W{F29nbK0n(AQ5U*_kP6^nzy~mp9hRq~BzvzI#Pw=(RErGAUQasQc__8=i z^To6c0X48o9-8_O-1GAU!|DKrLEA~8!@k|f#tqzf57Z~~<`f2dg=1v;rJU7%rR0NN zP`y_co^!8Uf*+1?*fostAyqfcMz78;B0rEgai@PLp`RM%;NzX=d@v!QYNWA&*)SLH zTHU+2ITk`#w*Cs5ZN-?R&L1l%`y4Ck`4B&pQ%CYlAzaz~oby(f{4~J09KTPcWN$Pl z{7mUQ9Nold<95Kg9t~vl2bHr30lIj@W`X=sdy11Q;iE!Fvq6U~)Kpd9+b7}&iVi`20&I8s z^GsrtBAd=v2!8gqDz(0bPJOMf`Bx9cg?stCGzk zTo}&$wNBt9L{3-PtQA5o5?|#$gA{F78s$F>xa?ELcX43WMC0Z+zU~~3(gi%#+4jv1 zXOVdb^BYaxY4dZ)z(&=4Nd5uB5U+$<1=rE065(J_+HirX7~}CKH4TBJ6wA5A|5*48 z4%j-yhc?486b0JBgJ&p!JL(K&e&HC}&CiCdZ|=1A?s5`l3)ZSdY+TAR^fT#7Awb|d z?3Ziz5O%-f{FVz#+koZTX)=a3-UZ8N>vCax;{V(P(lT}WO37SJmYwP~Y_!<4s$#hl zCCtUd^|d@_E@1dz04F)A5X}es7cC8eNn7j&CjJ42xJZ6@){Q}NHeXYKZFINxiCI); zJORBeGM!r{6P4#sK}5U!)yrWGw))K4Fsq`&`zK6yX|r_cikGng*0+h++%v~DXBWaF zd1CL$KLUyVJ(Fahz&hmj$|Vsp_5u(OE76Q?wx1|>D(h$P+P0WVz8cSvTeNvs2^RZD_ph4$`+wk8Pg=Utfr$S^a;XRnX1z)0Z9bky`?sD^ zk}MZzbYz|CH*$$<8_35cJVYB7*o^8N(zum7<~3>sr)VFbCyY_nyH5H~K__T#J0$H2 zFo1^ziW&iA_^w8hGEXrb$9i{fCp{m=c3zluB0Ub6!;HNAc1eWL{m6-USB{AG$3U(l z8~2Fw#rpxhi(g~kTosuUJUS)qfQ%G4l}$e&n#q5+=^w;QVM#t{WdY@-OW`y!_N8iS zM0qF zM%W$n`!hF!#l8Q-SZc-o550DmkMVFapSu1}N2EvW`IIabM|Hvb*675N_xh0Wi`=zn zQwA*g{G#68;H4*Lm3Y>DphSBA;LK}kV#)NRpz1b1eIlNDX7fR_aqG#qFF={|J~AQp zpgs!iy>v;A;seH^a{6MMS3fn2p{N%MxxdL;RJfB#6zF3iNZf_3W!Hbc4h(lf5>MJ0Wb{5WtgO7&QK z(d`NOclaeSQr-0={*;U=Fy(hPNk81)4{$lv{}9^qKuCM06B6vw3D%9CF?|+ z>Pb_2j{JJ!lmhVLrRj#kT8MJ@X@gb=!0|MpDucMHihRNS1bq_;Ne;xB;gTOCWK7f~ zhmJBXuZjN75X~&xBHe{4qn^VJKrlA6v!PRdWbl+x)>xN^>twz=InI&(;x_7^OVT`ZqfNQyC_*8|}`Hp^x2 zki)KEaJbDQw~juG>|*wK?#&f0STAZANxs;>Aw%wFL5DRMGaRr*Cv@d{H~tvx!}kem z_t3GkS*98W64Ns{5iI*K%Ykk>L%fjVTEi=myb&c5#~>#HNlJM-J+zBH=y9Hrq?#}{ zydjR!M;$CqkSPZa78J>|>rK=>G6lo^N%FMobSj-?7E8{~{u<{nlH7{(Nd()ycX2d_ zAqL+dJ(}eds>5@k^O&n`YgTx4kt7aEUMKZMSO+|lQd^}{m&x+hY)obpYaYdab8{D0 zer{&6yMnYCoIqq*l=O*aT`dS-b%=S8fSCNPzH~WOeD-scMo#5i=mX(aw1sZ#Xr0nQ z>VTx7o~&L?-vlJRs`v--HeZeB(A?Yv&4=mXC%&D`{~q*?b)k4xdFE?na%b&jfZdSJC3`tFc0~$yJOU?^;t&{Zc9q-(rl8e-ht=TGr?M}dNdoG@K+^xz*+sP(&dC=0R|943I5{vuMBH#lR-b7 zTfsQp!D)(>U@6dj?nVA_rQ25vWAJ5-MkRoS1!<4Lf1&roY5NZfjK6acFQf3l_}`ws zxI->^aUesjUGwsVUG>JNsd$#~E^j?YAo#kr$UB{CmO(LR+CwuC=95=$FW0AfIn@v(Sch?q|#eaWrv%}m2rybRi zqKT`MVQvp)^xb=aOpA}_A4#r+z8rmPis_y8n~05Nh!+qb)NGbF{Dh#w zZ>FP{SZKIWO0T7eT9rf5VGckEg|MLF#wN)>NXuO6RG3oz)Mj05wvi?~N2g)8mrz8x z-XDL&lgU5zjTlO~^o$w0m*k}JPoEAtLao_d!UCWy)6?GxiS7Acg z$(YhQxau6|h{uw@vjqfGu_0_kccW&r&Gc^Se2Ii$BmxsaPBa}6EHy5_rG6L!&*OL~^bQ{|#Q}pCD)XI6r>??y9Pb)El6!cZ}LB<}3sW z$IK|dKbLk39a$TI;da`Ca_`o0?_IyWn^*HSX%N2$p}5~e+RS#^@S`tp(+IpV z?sx7Ql=14D6SB|s@Q_@SQ256TO>6E$(s>$@GwDD-VOxZs;O#tOHU(*CgBvY1!NBpV zO0m;F9)bH9qQo77(+7?Rr`0#w)D`pXIL@9wmaN&H7fFfp5J_vdcHFPy^!FbU3oQ*h z;I`iPlTJO;ZvCkOrUo6^;Qjgi0rTVb(o0~KkJH=afZjY8c*RaZa+3syXOst5xVDrHeOa^S9z4_;nb|5E*=A(BBev=Ya|+2kCSJ=f zjmUzY&ml|2F?<5IZ|zD6>`;tZGxnuee`(UPn0xieiR54Hs_xm>_*q-Jd5YX+ z{^}+rh+UI`J5jaqDsQ;1RbKf&&u8c8K`2Qs#b=0vpM^o$ zXrni1wIR5-vt|?+_K(k9!rAFOu42COV#nt=s0sojKyKKWMMzZsHRt5@lcDX)pqhQ~ z(}S;*E6G&4N)gqUQ1hy2kE$zqLroGDP9{pe=Ud}BCD&(!RKgI7N<<4kMEh1^w&eQ{RvH-S;!I!r@0Kn#HFT0T)1KPUR?4Ym}T z0uz~LPTeA>W&3>}@TaU1Pw2hcT)@)FLk-rRFjP8DEW*O)nxvn7g{r+VK zkWJ6{Nnb$wA|CA3t@lK-T-sId2!FehJ zr!Q!_H!W7r@5;aRd{2VshtJovd-YJ$7WmuTN$+Wjezso4*74Mi=pPp z>SFnZNMMHa(TFPV0PctSJSSrrElKgG=X!Zw`X0Q{T-F+~%Q|`C#V|e@2Oaxd88rT{ z$oK2VNAAXp3y(=$DT;&RwCy@DG6fy0-{q_nkdyPS=~vfWh#9saWZNN=LnLQ}7hYVO zx*;#uu2{2y_1AwhYz9sxyoW>FcKuH*|G>c6JQ_bO`BRE_D@gB)*N}W?tA!+mf9)RD zWXgd+h%JWGaRMUUi`;C@dW33|Qv#9LP1nx+r{oK!zX5ELhFon+=G90#P0eaX3`iWI-9<{W88~+`}OF=vbX*Q`emG0|6Qq`Uv`oP?1gh3pHT3_ znYen1+~+Q>?b^Dsp}&2V2Wz?$q54q}X0RIp4|g|rJ_*0(ZC*UVV z4r9we^xM(+il2u6{GxJlRo7NHI%@#{aPX}SoIB9iq|xQr(!#rU=IPPw;?v~n|5C?W zwpKE8Hc!J}^H0MkY=ZT593Vi_bg7q>)BqSG<!0d=ZkT5g zhH&%LuM@4U>B4auoc4cTo83b}p@17|J+zeN(|vI&o$-T+mi-%U`-KOmLNIehBN}Rfjbe{UN_ujJ%XSNT%m9ZrLYj<=K zOWc9l-Oma|Y*RryJXfNBLVCBX4BLPm)zqY*C07Xh`c#}d9uR2Wt^Gl#wMC7&KVYh8 z#q&=(t7Io#)1|6?NOKMNb<3;A>Q|%w|M}DOP7+) zYBo1Wv?6}<<>(IsX+Vd859eckJ6bI#O!PG- z!Y%3yLVYCLn|Zq4fY$|C2)U!*Q&K*V``oP^pLwy_pwiE54kJmF-R0;+H2M5ybE{#| zCu0YyCgFx~q^GLlDy6DjZTNmVQMqz`XUXcuU&pJm?L3FD0(&J%fd`Dq%1E&w6j2*k zKg%|GXK<$G0epaNus>YxU`IwweF&oAL+{9uF5Ki1*4I0j__4GS?1&v*f0TV`PT^^1U z9~}-fNDiiP93a?Dll#oxc@5zN>1Ex6Kx^iG1EW#gtRk!oJlQFyjvOcqMU~4^zW5A4)G5SO6sC^^{?0Sz09dC@EN0aEts@z|6a##rbR=WS3t&Va#Q z-m5o2`r=lM{naVDEphp(u$c{7U6)Ln;ia%!oRs2NA8S5 z8EKs3K-j%_>a~IV2zx6JF0U2HfD!f>KJ31`&hn5>9Pk>b}9qTvY*Sa z#bjpQ^36Pf{;e?0e1m*YuG<>4;4@1C`<=&E_%xZ_cxE8!$E+`foDFSGkI2NWF zGRp)dxQt9n4P2+543&Z%)9#>3TS1s6|FZ>s?cNuCb^DxSjM@r~+&r}!Dl;p$!Pot{ zm?su1%-XxIkOi@uqY1TfC;|2KW+UhoCx^n#K-4@0F;ZC&JhrNd54^rJlI4fKKB@RP zSvxq0T$vM8mSXv}H6~M{N)^yG+v%D2I^es0=MJb=8LSURF?Quwow{Kl8X2uTA8U65 zP?IZ7I9&YChB5-;RU@F!5RF%77}D6TQ?fLa)>!j1TLTrf+VG*|`rJJn*FH8J*UoIT zTlX7Vt@;3~^z8HnNk>CC5JDy0Yi_G{IO|9>gP0z&gWlaq=YVva^6=vmqz__B;#pxJ zhqMZONA6ZozK?OTTj)}v7Md`v0RSh_hWB`C-hU{AQR~KeP_aJC3KnP|iHeFODqo_6QmBEIeiUei++|!a*NZ18451jCr6CXHHih26zh5~G9M{@Mx{hU=2tmPHtL!fOCqN|dqs#U1ET~UCI zp5+4s4f#0>+F5DAE8nPZcA5jHK90t{fR;0i>^vOVh_&$f+Mz1V#}Aehfp}7h5WqZu zpupkpno!1d(Co>-0qqh-lQ&JuBzCPWSBD>+U%=h`)59*-}3V)$G)6U$`37 z1x7bABA-@oqPoQN=@hV!#c?gOWyEs@H`MZ*X|JOB(8+lE_Qv+P*;9CX%w~EU37tH? zBv+3(d10|{e3>58OSh=vy=ygqxYA@@?T~$M;6$W(Y40Oh&d1Zw>L-@Xk%{MH`^|B< zkMnbJF$%d}P$?X_-nmfhI`o9nhpmK|oBFL7U_s#zA+m98$6RiYya%vqHw3(dFL@#s z8@(=?0&!>A)aJ14?S^JTEw1C-Yv@ea0n|~A{YvZ_lvf;Q-F@L?EcxBGEIL7+m7a~r zZgCE&4xK`feJv<5+i8Jjl%bg8OHGNM*5R7A#RQMe2VvRrB`ev@CaM!NQbD7)C?tg{ zmPaDa17|$%jR+>>xU@nFt|xUu;Yk92bEE~hO=F9_L$6JA=mgn>zcl6&N=V{trG+t> zDMbDUWvykhO3&L$_H$*}_k^SIMNRV8Cnqky4m^D8?tCO&poC#^`GNS=bfb6)l53 z?70G${92HJ8_i$=d-a!LY~tD1u$1g@ZAHaoP|wFW7c)bjt+QTRyTHM%{V}WJw6-no zMZn=qQeoK=?_ERyET;AV69;@bff3p?#m0S#uLW3Zvkn^OYIYEpVLJncI<=Ob_qIj% z2xS0Tfk6~!;Jz&dDzO?YRnL6u(t)~Jz_fa_ z=9Rwz84_OB?A(gALL&-%BjcMN#vvewmcU6etryXeV>Y%R1cYyzZFMf6Qn$6merNNM z0>}bfN#WVrNnhyQu;-d>Im#V_K#os8`zrP$EUj;2GCRuE*h`OncO6%=S2j^Gf)8*b z(4GmR9M~PaRcW*sn{@|ofK3U*`aq}^=ce&P;S^4{j&sV z7zu=!S{_h@s$i=qvCc6lRXovSQkCLXEK4I=O+vyp*SGeckL?`uV+{VbK4=lsaeW6< zEvajft#&LL)r@?y5Q`sUf!H$FnZ!PA46VrAM}cIE3d{I_6-e?9b~*#DG9U0r@|_!s z+Lg<1fIZIv6$n3$q*_cMm1p2@sV|QyL<)Rj+Gt9#HnY+bN;Bv(PQlpn$#+l2=REYO zzK)ATpf`S+B zuH7Wj><}v4LN^vllpFPae>kQ-qRqjQ8Bngxn|J(ru5RMxp+2>!!r5H56!Nyy&Bhf! zKitFz+{rh;ZY%jJ$EVqO1|-`i*3sH)n*b{5&WX6`il-aTA|+w0^k8=ks!^T3^;)Qg zwnj$MY?>LueuHeFSjyOnhfFpW%EvxLo*x9bloa&L%&I@T@>O0&I$o!Yy{p3Ln+)W? z9-DaaRX|Q3zzkx*o-Hw8GTu0~!NE+0Q;WOU#N+Z`%l_s#G?AGLhm)%#5~lxPctS+k zyN70O-=-r8c-`Z>5^gr#5=@Dx`h6*)pt<*2J1C{#>AR^a2Zqm!8m~a(AOxajUbjg# zHM((yqoHd>qIJ8p^h_ByaR9A8;^KdwoVD-uGtbv;9JQ1)wkJkKjmY9TcG#YD(zViL z6_5@<$(#QnOn0*KwxdoLS5(_x;|vDQd!cxiM6EnSg!M8N&_Kl0(uIn3}F((kT5*x0VTa>hGTO$X&^JW;#g>y4rbF8Md&Mm0-3qkl^l;qu#@!I^a2 zO&qx&BtIWa7P21QOb{gNc05-CKUnMftVbMDeQB zCpfv0L{yx*;ww&N4ODX~N3c@KXyT?9=Mg0b;YR%zov&uvKLg?G1#Yu#}riCjp z-9I@NpU?2Tuq)4^2%+}fCi&$Mvo=d##Goj7->J2l*`$r&IYbD85(ACJi0}Gyl+UjD z@z&C#W)A6f4*04gV?Lpg$`AQ`qd~}bvZ`}7Nmo>`En64~U5pBm1pLE7auTs6dwXhZ zDf%-?HFc@JWv&s9G(0sH*NkW=iTH`+=UJy#0*OLcv<6|W^ozrCZ zvfNO7OoDR-gT3=s>?e>4;=bk+8Tf;>U>qn=v_M+%X9HY;aK8Q!8>rs?Fspe5jN*&U!y>D%U zLvEfud%+w4&YopSO!`W5htFS;PjULz*orHN3$t%U&CI3h@NfA*{usdG{Z{*>^rBHv z>(vK4;eaU%j11i&eF%_Of29SJh`!#r`V=5h^j710zoo7HPxx#r*<8Zv&z`-4dlXAq zdof)=6uM~T7R;XwDE}1X(_&!SrX{y2npEPeGRQHfqdZrQ_ilD~*i0b%9)D>E^e2ke zE_BV;)JPi+Ff!0*yu~eYcj2X;kS@i&Ei8j$)uw>9)Q0uDl!;oIKYj;K5^mH`y2yR7 zA$PuUK^R66mt=XPntQ`L!6=PZKB44;y2fjEFW2yS#PDUpX?~mDF-8^xhd1@`WEaNi{l)W{~RF)~GJ;6;UlZXlqdatH7YF4Rse zTE^vY2R-#oXK%6-i=8Fr`H(mEggg@8r-`oCJ1-KzBBFivtbcIIok{O@A4>lh$0}s` z!^3mc6$qVNW(No>oLC?y^A;6FJmls1IHGyT9bC|#ny3jeKm(<83E2}woQq>oG_rjn zy4=(IZ6TE#&OYq(Imzt@jv$^Fbzk)o-ap4zWU<^3Ud119qkC@ezrGzmlNoEI8qZh9 z;znmT@NQ?%`c7|Zx_6`KDib(453m)v`Nb8iF@}2VB{)WGNer%!~A(Ua1^SxiQ#Q4QA<}-!jXuH1k;ux`G2~uz4*vzyx_0BTa`{%Ei5Wv&|6Vp z3y>J_GO7=r;hdcX)c9_f%ri*JjL;m5C6SeP*1#)j9&b0R`DRx8_R>Acx6=NOHpeQ& zIC<}n&N&aYOY3eA1cFr=D(A_4^G9ch_NM3K0|oj@=(GV{^sT$S$JV49BY$vLS8{*L|K_#;fVAt23h~H@sa5{y8XW}+vB2q zLEHmO<5MwI9d#-E5>DnJDJ)*dJd|PIxD5C``H5x*wlJJ+fJ*{S4Jrlv&0k>A&uk)# zA@0LCT2^fDKXS(&hrS%h(At}kgF6kKY+1P(!$=vY+qu4Dt^g$cy%qZcFsF@Fl-XS* zAoCay@cCJnBM?NmoapZ+PS$I)$EQm$({gAGr!Lqmjt@HPr^_Nz| zi&vT(3-9H@)2<=7gDl1IN5+zy-1z9DWAT(JSD<$vF&yxjc%G-Q82tJ1!2`?{`kpQK zo49U2S?KnY>MV&qJ(f&4q9hFTnX$flY@eYW((h-+CYHeBNS)YKNS8^9Wc)Z9n|ERG zJH+KTm+U88)buh*)lkqS(dW>F_&*8_q6HUrM3dz$oQRU>FUH~*%FpuVBN17%7_~w3 z=WaZcL|=lI6`$lyPehD(z%2Xc0x>)1PqmA~t&7@T!SSHkhA($u(cQnS=Qv|X?e@7i zuHNL|C_eK_`wnT2ynEOe#^U+s+IJ+jnY&mNePOIRZ5!5ZPIuaGf9k0x-!Z`_J*`MC zw+l+a8wWKJft~chf>6)%C$tc8v32K(k+^2h`AwPSgO)gS8=DHEMCu@ z{qk6)9~5st4Ln}lZEf6hY6%~gAoe2J_);9t&ca>H)%c%NoSmmVPJjL7IG$g0#7IXA z1N)U@U$C$Fi~Ehj4f~p1-1%zs4P7<<`erVk>h@&fsnTJH8;`4No`hed8o(>w1q1bj z&K;8&K0X-yvKNxw5z&K6K>=C{h!Lfi)~whP)JUxXA+k-E_9P7>A?jVfj|Q!CZ*$j; z6l)|?J6Xzmy?9L{-Cha~;>3uF5|PcC$$)$wXB?+u95Pw-K4^91yjb57kEk+CnbVzH z6DWMyZ(8}_Pb43^=`}V&Ob~N|4Cu#KOQy_%H5hM zxr7$7vgH5Bmm2?gBrK8rKs2%a=x;Y@OQN4>2|pf-etPUB{LC-mw}mDAY}gWNmm7-~ z8eFMdZp6PB>z(i~U|y62u>a7aUyN0HO<$g0zl6HY9V4s@vFfe{U=sauEDlB@aE=ue zL^qN*u0<2qHaki5tFidDhcyf$r6&J5x`ZoDx4D9ODdT>V=+|TMXZ;t0%ul5*{-216 zWWXFI;t9uWVLEY=%^etHR#}J@vl`fb_S&7UIo6UUh5z^KBUv}fL!PsY_0P20Zgqn0 z=(mD}pN$~`4rGE40Oykx$E1$qBocVvla*}o<(piFg>S~au<*@zC@hRunBmDv^k{$I zexsaF9jb=RFZd$z9(jP(KkJ`l=^fDa*6tBiAPGpmnBESua%B@LOe7`h)DCJoCkTM% zzvGp@=`JHEcT#k!ygp9u8j4{_~rMSv{; zM}f4V!}JB42Qr!8xtj`5+S_U(SYoXw|FTJ>9se{V_cj5F7n%)61kvfr)43(M0l$aH zkso_HFEbe0ki-U8FRsjK>m)sgRqZNiJv{2`AQFE4+TQj$Bo&59DiX7|O5LV>9ve`w znr!x={aQNjd(gG(AS(WA{`oyU%D#H8-rl5Yl?mp`$C9aP^9%bfd`^6K&p<5ywAqQq zlRwWp6b0pB)+H11?bd(ka3uUYebJ=UoqYxRE5f861FMDuBbKd;P2!1JVVvU z`$%V&np@qv)C#z~H`E(dlrdW6U8&B@5$O42mC8Mj;?TKd>aYMGHz@avny3Skn0fBW z#T^4_a7X32w@cJ~yfPt$A;?idd($KU5ZAcixyPku7tKniLcopK$Ywi^YW9jaoA@mi zXcyifJZ&k+&b$~!@2F&K zBzsWGai6o1^PZ;-%zt3lT^X*NCr@9vhUul#qQWLnz_nIB=2qKs;eHm42OOk-mwRN? zE-%@Q3YY0j#-KNtG#n)aG5C2DqB}7GrBl~hG?8iZi*(Kt$1N5{@%G-rU7cZu?%IMZ z-V*b@jFWcX{S1PFWedaK9PBBcn&i|$-|E6pT-v~}5F0g3x@857-^pP3e`lq#-~kYg z&rV~vK6jICX*P@?C&{&#Iy%)Wj0f1wF9R(=+Omq!$tvTqP-C@DtZ;G-Iowwh*Y9Y` z+9{dX8UGmVH!a_hvl3P`y-9N!ka^*d`J5+!sJj}p7!CJok$Sjybk`LQsqUoxv2*4A zY54F?jB<_?ma-;@!fr+BG<4)iEeLvVc|c z03|^3kd*)dfAuRiPCjJC#xQlm=)+Ps94^jYef3xA*Ri`x&lZ^AXGLv(9Y?n+l_1tC z6K7|yy${px%2HQmJdQ;&iVDndHJ0uML@H@EZv#p*pBgg11y-`B%51T%uVtMzjh-L8 zzyp~3s$16S!m?iMU(Oshr5(f3d!5M{=$b1_9{h$1!+Cp`UJwe!5sf|yw99P99U&P);$RU9jdXH6xwDszcy|K{VeyToa1 zqRSQ0D8HGKoVVAhSK=4^+>8vJ%O(o?t@rQ7e6evNnHQ_*bif%=R7{hBygu(Fo@mM= zHFOKj%ETEsDcI5Oy={__Y|NsvSvA{8hmP9Yu;^k>yp1#3tW&s|LoA{=v6$%o^ z#Vo+ZZ0FKb0LBuE&!i_D^m4hyfh*d^0CkkZ4bLF?>rOo*exU2bnKUp$UJ0N46?}(- zXsZb;+ZTz9DOn-NA)Ob-DE`M(ROxxoVdK_;+f{w51ET#P&rns7-jC2w_mtLV!XlOe z-?iJN`D%}hMCz#8Pky|+3S2UN+GtV(_#pe)1Y*hRu zYam^K+mQMesyjDx*!v`Te|YRogHp6%u63(G3wqlf`$`KnD3;btL_C>1Yl1=8TXX7S zq86>HTM@V~bfo%@xL;$qw3?o8Fl~sg*{A9JP3<_sATZxR2K#Ht3vQWmC~}v96JdZ{ ze((_z>DOp*J{lzvSe#E690CsZF+vuQ9n;E8M%^tRwMJ? zWKWG9sIJ?fkV__o-_Ur*I3jI*kIxj>&j*$xigQLL_WY|d7mM(2cFYaV_nyw{OhSjq zTsCnxwM@UOsnAIuo%T7FbIga)!6KkIP)uB4I!z$HKU~;P}iZb<_{hkaMJ)X+ZJt=bwXiex8 z6Q9e!HcjWE}D zohmL*0c37CT_%r*$Onk)Vf4mZNzxg2r^tsaB`5k4yK5%TR`ysDV`$&Q8 ze#pS2`p%K)BjPLg^P>lBqt}}k=3dmBSNuK|*@$Th#B7qhweT$Z_yHprKw?1li?5Uq zC_lKU0+}klq#!`fy#PLkz(N7oCh}f~!+kUvPka1V7$=@0t?At+w%PnkxPtteT^xyL zFJzYvZsK7>!KaT61)uRy@VNpMe8!;QWpw?Y6BO|07Y^9K!IXU#WEgxoqGVZ@BhV7> zyJ4m+T@jd1S3l546!?$>Tyf20q|0WBb%n_3MtIiP6GwVSoZSj#7f4YEeg_^Pqs$T) z+5ZN4Cyk6tCq_;YJY@1Np6A3)BrdV!vAXeDg{gjFB;K6Uar^Zg!<{{)hDnz^Q3|&N zZ_LCw;uaJffhYxdApPeJW*E>>dc`r z&{|JAT;280(**HZcD)cW6OtpWxd$Q+&9!u?$on|Q_tE4x;+RaiUC$T-a|QOU>`cH1 z6l4>3QYe|n$z7hF0Za-zGnRZ_^g6VKB@(^Q*IL-08ct5~HfhQ)Cv<@X%i0lyJI$>- zaB?rPE5L)bOBHd!ZZ?TjvTcIQe~?F(#%U*0_PVV^gwjrubyJR}a$z$ys!Kir*~Vqx zRLEk?NNhni^s)w3(?$y0#1pzfek&No9ZR;7`I3q2Cl#d}@YNec|HE3j>lz(g)+>7u z%<_i|mw!>2IPZzO_w8!b9hP3e84Qkwo3Jep6>=HSKRdPC1qM<8eN`#GAd& zIX^zRk(?i)8yzBPW6#wzG*sO&{c|-NckYqJ;154n>lt)TOhYa3#1qg1zYIJ!D)Gm> zGHVGnFV&vU75WJ@l<$w)5Up}34fpyEG!o6AwV?tT-h!|1NGGD&3YmWzco)6C10~Va zdyp&@C72)4$p|PJ2D;~aVdwP*-e@kK#5A$-(#vri?g=UZC)PbX(sN;=phdxKh69-3 zR`UK1q(rx9n|O}kTdf^F=KvfYbtdy9%r_#wWDkwB5%6Nb`ek&s2f!`0MR7FUl&v6q zab!3KIpJsuefe4?evn-e_sHKY{$rq* z;~!O`9}V4*8He7XG?j23@l-}vqM5iVqv};0BmeV%5h)~;3kx^#O521y1fUGw^?mSN zZw_1tHr${$BR9=b!}!-?}(sH#SaqfFk}YPH&> zM^!SPZ55wH(bCOsQ(4XO-m3AW72_zjizi?NN)M_;Zts?!Ou0=fJ&R^>3fV+6hVK`% zykp$*Pbx8W1s*gTmldH=d$5Xy6{Tv=kCZ$=CCSR(jFlSWu=l(6@nYR}vEA zdsIMFZ? zp`NBN)o3c!VJbmCe@y~~F)^4VaL3YU9))tQUuiA1Q2VJWyw{?^5L+5y*z;UOsyAK{ zccaCn)7M&V_mBZltZ$ zx-2o^2OXty6!u7#N2u<%j}dzm!w+ox5NT6})`_q4Ur@P1VP(t;2V-rHmKT8L z2!0{Is8oVt601C!%d_~1SDN!=h{qWR?1Rt<`5`KdCa`DK8~lqOoTo`RxA|Yy=-2kE zir3k(>7gfw3%SiY9?vvLeUlrAbY_G6?q<%McfHI}L>y!ow1o+Ly1r#h8hft-@sO6a z5+ai(g&PKv`MM6q=}e>-@z<1Z_I6xFPOlL0g@1!U2D&knQ2bJdDvzw7nn5hz!4+F+ zTs0OYdl}2)C*X-Mw|uqtpK`@o;;yJDKJ0CVoTFhizEtb0-A zBL^*g=J1Fbf}fDNg9{yE`)+&l6@s*gcGB43ELNPWQiy97|6+%S9^oI|MGD}`tk8MM0(|Qeigcd{~w9;<3mCB zVT<&K0`D6ly`+4{Ujz+ACepwB&_w!2$B*mSy?r9FpvH>@C;!I=z|BA+`vzyIT?rj%hnv<=|E_}2WURo|Qi+E1Yt6{T^e&t#VgV*LZ`jrP+JM#a@ZWPS7Haef6 zq$+(flKgd$jAS9>H8f3{f)GSd?qGho)fFJL(VX4KMN5V5nKZ(M_Pc2byqpFD_~Hpn zJ3cq05=Rn1J&YKo&=dH7pX09fZdViq;Xvs=@TRWS=eJsS(Oov>oS&8U5ScZl27;57 z+BG*FlX*;!BY@EqNK&@7CwL`Sq6YHZq{;3bM5iwbNa|h|3}-D9x3a<8%+{TG>i4hmQz=douJxrq?rlEu(19=nr^emPeQ z%i&oePsHW%zR6!^)=d8LFi@b@hXVzU?M|xz3%P{{&*jUFXHy&n{+vkQM9LJKV2*dfpB_szxvNPrCma-@C-MRWutR?jB#3FEb{_ zPM+)+g3*0OiAF%l%K^W-u!%c*Y<@b|6at6Nsi%RAIHaXCRkK|u(C2Pq8G30yyR4{*mfWLSh62)s?Df0x zK;1zlbUu6H^kW%j&Yq(Hx)jJ&-c#A1csyAV0(RPOX6;q4=^6i_s{n$d=WR7}u3t{) zWNyFdl0SwFw&msVPr>8FJNKGS-^0EtCONkgydSJ+5QGsop8eW3;YsO&=Ln2`avErN z!*M|lnP4Ch?oH-1LqsgwLq-r9vLn6#P*>jd)pb`CE@@KRUfI(|T&M3_TSr!zQ zB~qGpvn_n4Mb0p<`^`@A%}#Zlso=7`H7-d?>!QXuoOXIU>vh?=>UuZzYVxnnuhra$ zS{rx*kuumPhD0B!MXQjIoO7YwVh1!vHfnZO{+>SO*rIHD?joxjr)R|PYME^#cLD{A zwwoCyi2j39@wrXN_2`!46CC0Fz{Nti$?dw<+n z2b~Ohb7pJOnI)j6*%vxaLlc5><<|i&*(`? zYwh4|F?&P*UWRNaLDrELKCxZ~3g>e4(ecdXXn~T(Se7;j0B`SYyc8UdqL22?)H^8w zYBRxIgIhHt2T*^fX4}m_@#)t}FQSh-b}NcL+1G1T-xH4t|7j6Ix$D!E(-4H)_vvE; zTtD0QnZDs+P=pHo^~wRO6xKHg?)o-%z!^oK)4C@jHZ%G{E-re+RpK*40M`c#cFQPP z5q1_abzFwCaAl6n-dGkVjnFLcE17+B=H{LS`WUNuDKsOYoT7<9xR6pg-8H->^2v8@$fBrcg7L*5G zao}iz=!9+ucFJ>}S<4XTSn`i<2ed(9<*#@Yt{}B_L#r-lVfMU!7Za=%i47fH-{IoJ ziNV3XkawsJ2p^@@OC-R+D)|X6t6n&QX7u+SZ-NpFE}Xun-8Qu0WAF91cN@`85ozE} z8~cn66T55sZkh-mZ)~}*aRJ8^5unFZpNH#kmrIpw>(Hs>9~ShF%0M1q^`;# zs?haI$V5l!+2J?9ICG1RexD=@g>E-8{*xJp3W5V?+&9}=Hr2`GiJ^V2qo=Y&t_OCS zO_ZWS2;Jt?6g}=;PyEi6ri#CjQ=NtF#Wz6AKUd2+G8DX{sEpQXSx6!LsVllOsLNf_ zzOt!uMkh0k^Swg+B9nJZ$p-L71Mw=d1W!WKGwv$Xv5`Vg;RRt{?`dB>c`96RF^bcH z0i8=&9~Ugu;6&LyICqepeuivdREmhdG>&upJkc)o{mccm_|agM<@6o*`IpAy z&=Xu9(L7Dc{%$pJmzvmn@{e$}KQ?bNKy&!z0n1!e#v$WQwCW=*6HT5=FQp2&1<&WB zuQ2*bt`rL!USd|vx^!ODKytW>Xhg|BmuO5Limi|#qdDdbg;x_*Q7Ez?tB=UG)5V`r z7NnK1t*FgDmi>`M1(gcMD>Kr0#=q!_hPYEgoA$T&@?l$! zs*3PKbO*+ok(Z47ylfN%Zp#s3-_XwfejQbVBS2kfiCzCdalk;bJ!imHJVrCN6<6yJrO!1$3JFveI1xG|fZFjl z^yGa89Z|+zTqy#wWAlOV2B}@#=a?JIG~S7vBn|TJ8qWzw@L(T?4ove7; z)k4m*%5(Dw>6Pc6lz!z~xfJG`_9M1Q0krIgbOd7iu#V4zx_1s`sRByhL%Ooq1%vo6 zLRgN1_8r3+z73nJLtY#3!I~`Zxafl-IzA_sl(9lod!1)hCCYAsDX?8~T3kv~DoRqf zM@-0ev#r{bj?d7Kycd`^+)8N!G&l{ob&$?1T82-#i;g5GWA_*EqOZ*gjO#M_CUmw= zoofjXL-xY30og$5T3Eg5D2RN!e#cCSN@4c5i|Cc5x-foSHenXJE`NOS+Cl(Dy0BMo3$JH~- z60W)(7xGEKX;G1Z0!i6|DYU%V_{wNJ@0FeE4;81}a&g-2l2+nU829X1OAw%hlW|pY zTONkD;CgagJJ~T$#Gms06+SkET+FNRE(R(@`;}%(I$z!6?~X@59Iyi<((ShQ9ha9( zIaE*l*F=2A%D7Nd3Z-tdLlD>A0<0N=IU+dV>mT@-8v>O)m56?nyUv6e=Vci4jDY7u zewT0pU;?X4?@(&^G;lUx43qj{UEY7eT~y*IbajznJVYup3&Hj;tXN8e0%wMZMsg2s z;1|u@77SnON_SNAan#&EFN`B4b<;~XpqwtJC+;6+4&;jcbN*|bTCunJ7ZyC zUR|On(@6n@7@5EIDOYs0AbBhiL&a%XUZC82I~MOR(TeBxOvML}fb)MWU0CHO<5SU3 zj(x9w>hIOh3is-##^HAFSeUn1s2@eYvjf+ork8SkGc-yL8{jDa$v z5OtP+gbCXET~#jY{S$HC1?ptuBzpMk=x2iCpN>bru$BIjmHzVBEB%#U>8}eb{Z-FO z=NF*_9E7=Zl$Ke&gacQ6rf-2&$i8A|7elZ&zXgoG5S4w#4ZUYBS-s2pwU+g(@#weX z6QvFBr<{ZlJ3Bci{nj{VRzy2236wTeUOw$S<0X2!?6odVSeNphn>&(;)ZubNW8E+%Nb!N9gG=@C0?&Nl#40Nfb60I3}TQ z<2c~tLQOn3XdrT2Z?yp_;J+khtjqp|c#Dn}7WP)jqaelkM$gqKdgru_@YzZcpt;)v z9SpoBPD5M!Qqq^zDJr{1bIP!kO@QFy@kfs9uRTB$@aQ9%gICy={>!#NA=MqF+Q?;%Na`ss z)Mmo(+ocNk5^$zH$~3MdiZKW)!lJXon2$nN0)jJJQ>;y;ezL{-6dr_TS_h&o(sG&5 zA(Q*8Tr5uIdEd-?sASSgHc%;|M8#faUH3R#r~w#vZ3vkTDl+^X@=e=MSo_r^VQljTO*Q*@G79LBl4 zQy7KI=KD5h54&2ZTFI#_)u^ZFj+rk^`j3@t#ton?U5Crh7!2g}a6|IoDMJp11D!92 z$2`Wyo4icI3+uxbzNnyPzplEjtRxd{oI{9(fr154V?#3}tgB6cLg7FmN8`FJjRrFn zX2@?0cUh>Vb?hx4NCeIH{rY~o@ZL7zb9vW~Fzv-c zc;tXFG_fHg*!q}%);-?Qq|L)#*=*!vyeavY#o?1jiJ5IhY3^C4N{Qp#omX5K-h|VN zZu_)2-s^c_be(oemjIPoX5(}2=E(k^U*Q}ugw?e~pw7pP7VfQkas>4ISdMjr7x?+> zs>?u3b4RKiB4dXbqvHysBy$nLXzMZOLvlOJ`EOj=PSTh=nlcr=<&mPi#l(7ZRH!BL))W1^fYao# zEtp!7iKrXDmHx_GFeQh&X7_E6#8-;*ckK__05UU3D082mdL-T&unWGIzD=O&qrM%y z6>oiHvYc0R3RxbGV5%$i3@pmtj%9jWQiA-TK7grd?NpP+D0wDIZbZovBwG1gpE-Nh zA7&K2&F%49ABj$tHkq~eZnB!P$)}G^4*QMvPv+DxfNMWBtW9y>p5Bzg=JU%wR3lSc zNZ``7u^WQua@rYcgE|b{ir_;vpzOn&>`Nut@~&)DwS(LIj&7&v2f2_m zF4Vl!z=+GZLv4eabYES@G@*3<<8$g0>hrKT={MB{mpnL5x$t&~LQoJY>t#N%G{09+ z#Bq>h)>naZ44oCc{gfR6+J*wpSZ&5L`0tosKz3Ilkj~31>(#d#I#clEpl-bhERzyc zlJF{A0{enWckSxp?bS<*H!rQ;S|$_u(#6%MZ(VuM>V@mKuC1(T<)l?3YJ}!~co8SV zg}%@rreTyy$VI7u0agRY)qmudaTQ1Ues(j3*2=hW>IiuBsYfQ3yaX!CWp`DD+WSFs z;`}WaKE9|%@=*dvALztgz_@*@Dgj2EEYLhd|2}dd_E}|nJ_yo-fhz(zNsfpKvHDw> zieVOYA14*hNCj@+2i8t@_=!$z?)z7hvIynqO4yS_C zma;4Dl$_;!(&%?S5`V%?&ym5BH(8#38b<$}{R^8fepw=*nf2*uL>U-sSy&aSJv?>%R9C5@yRXB?5?o`~M~p?mXytl$q~KFq3)wykucRz?nD$XjP3TJVDuMPUH)8MaH3=+s6k#vWi!DC#}SQccT(8O-x}wuW2tDObs-&5 zPOyUG56PW%61ewVv2SHd+zu85DdQ7sIM@dpUuA4`s^RD3=*;X~?TBq8BFff$sG`44 z+W>Cub0Zth!X%l9;8h0Md4+`Bqs%}m2=q?fG$wv#T7#zSL)@&qxCxSZd}rrGxK?aT zD`G3c*5a5? zaxEI#(>siNjtJ-`NhQ?PQDFm8nirV)fz!h+NpjE5uJt!{9e!Z~D;Im_I|YmAU?)k; zf36?nkqqo62Vlz4R8*v1!AUrGv-FN47oU1IDnsP8EX8c-r*8ffVymRrlReE)@PNNv z84F0C@07GS9q2gnT3Yr&c1~dVlvJHe{Im1$ud;i#9mu0X$?7If#@SbVsjTO@e*Y`( z<^0Z)rBs;OnaBB^-?>iBKXYEsd6`_7h$uvq+mu;bi+o61*2QEB!Kvf?&ZNFx|AXVJ z^D6c%w~yu8#>u;T(?fQF5o$*cOL^#gEbYev##JJ3JSD#~Q!Fk~bXA{SS_uSU4>#O8 zZ}&sFS2pmQIxGz_Jv1g6N?uWg`6aXK&LWKIvuL7Z&5TmMk_u7HXVf+s#Z)c7ydq%_ z*Xr!DQNf&-Bk01!+K=@l53UDoAz1s+;SpV2tSRSUd>%DfJe0N29_k&fEg$G|4Bs|6EvY@vsBBkB1Gj6#rwo=3_XKn-+Yl0UMQTM$(##Bm z9HdH{tyN*Lz zz}Cvx9I%1eqtC!;x3cdf&V7v$DnH`pv^!M~xmNUw>Bq4~VAzqSdy0X5L$9zlGs1vb zJXbC)P%RN&4|f_du9=16=;Hi5+~XXoPh*nf$BZ7uUTkspN)~^B*MdA|@od5lVs23) zOxmvaiELt<6I@r(v{6q#zM_qJrj>5>X=hgCeSbP(&4H zravg6iVk&?MO5Fsvulo|kC&%vizxD>shTGPGHzq0D{c&8wYxZbDO`YP&Kne*Ewr>I zsD3OR#N}8KtUr(KQ&VJ{Lnq5-8 z==ENy*(;%ATU#pkzzeOwj`|>TZEv`XTM_EV>>W)mhkABleW1C=*~Q|B>#f6~`qldM zs??*5(PpC?s?9c*R#)=8;sfI# zD*Xl7;$;H-NXCgKP2I9LEpgomkf;x1yUM~T*WVM|KvU#)(3cuvxD zaRw14-{t4Fq+`*OgXkSjS={Tx(XTKf#OJo8OXI=UaM|B#cBx5zULxz;b|(D6t*7VB zJCnzE_H3S*wrfC2F%QD2`jvZ4ote03BZUMQMs5l*v_vu%Nig{;qLVKiA9f0rXWoQX z;Yor2;+Eto{r&AUdDpdXf<28H*z4NNu**((niGOx3Y*3Rx5ef9a_9PPcqjlakn^U# z{GOfZIl}fwWNbU64CyodW&JND9MVC#Z-M?U?6pwPF6m&2a>yztfQF&|fsV_o64Qt6``RSs z28zvt@w{D9INw*drF|C8=Sz`%e_Cq4SY~yl0R-5~m zM2(%~)Of(?4C*eOL1iq{*&l_{ob@{&QwE*{HEiJiECaMF_VFA%#4*;7*>I&&l}U3K z&_CaBT1{mjP$sDC60{P9lSQ$v-;zW(9Ve-L);f3xd_T>vN+NkwXq1o50zRShqye02 z+??t+Nsx${K`w@V@FVLd537(iA8n`%42bQTyL4W*e8vHm%^h1YlSWstq@e% zb9XTq0S8eoIXv#bny`f;R=%3c^@HV5dD6@mO`H3T@S4p`BMaQ&37bWWPEtWsDfLijd}e|@3}f+z>q4N=2Av)r zgV>3XWoU4H=UJP3Rb3AA_P$q7om4adu$=B$7==CSYrNu|E{<8fN_F^$+dbDQ*6vczcti&emf5ZNrT)AM7vGR@K zQd%{4RLHi-o{WDMmM~5U$mHYVPCl_S;ScP}^V^=;neZp+`1H<%KQz6#<*ril?6t4b zA+2Tm#3;9(GkV1MP1l>fUZ3LjPWLjS*+>NP+7}-O6LQnm|F#oov>~5H%O}*jrTp zCsRc{L`FjXs2Bi6pi5ykkgfukVAX;R`L#MesVgK=xT zo2YG!%)Q{kRHKx9ac4@f9sfMGKwR3PQyhkb#%qc@Z3B^xEB0W+$hzfz5+bzE?=h(N?C0tKf!2$|!b)S_2W zHL8J`8KzkvAmHN2>fGg0QhYl}zPz(kJ~F|&ot#?gEd6x)C8?NCV69*_amlG?fTHU8?;oG&{(LP*= za)d`*TwN|V)<`lwUy=Rv>|5Hu-VjrWB1-IbpuZQ z+zEn*N%6*9y^`G&SvPlE32{6hO`Y)a{kWRZ3y){Q_FE!!%?vYgQI_std+Gflsc;lQ zrEiFi3{6shr5d{nT&GdL;1g+a1(^&T4Dj{xdQ+Ya3eVBl-N@o9p<22g@p!a#bN6v$ zZ6#x8R&f|n*giy1(%|!YC13v43rgr107Du#hZXNeFk~U+=F8zIg?EV+oR%~hMB&)) zh@(fqGSMzM9tc5<5Q_B_{^K1gW*Qzca%iUN&9zIF{s576(N&57#`D$?o7{0bBBdd)Vn3KTVyfJFEok?TB5td=2Ao{BzKy4LriVp;b3Ca*clVgK zptk;xgF(V`cB_@mNNy9PckD{;*hOi-XstB%ESDkA9e0C}PNB33LEF&6A1LFd$lp2) zOV@nk(olM+<$E&aUwe6aWN$hrt-xvAgS8--(B!NP*(J#>5$Dp@FDs2etZv*hxgIYy z1YAf_>siqb%f=M+3{3_xBZCTco}hIUE|rH{x(bv9<%rvIxt-stJ11M$ zc)LR@rMt3Qt3vEv6F`3)3**sX-{l$(?nrhNfGOgSx-$2K$67v*pB{7P*%ML^aVdYw z0cq=|sIk8^w|IfD1#`EpP=UM+tgxr!P%*CO_cnJKl>E5@lD7oqK;@k+T@|`%f^utV zziBHLwdis+D)ppHk^QwlEOw0dyH@hi`wQXBICwJCoj8<8m$`} zJ`Ds3Zf(0o=AsH`e(_T|sX53IZv?Panhc{^!PgaNyu zNmpdBSSVi3j$K64Mn$yP>D8_$c%HhB5!!lkLS_0WTbasR z+Byzvb2JiYZhA|56?-qNP)5WnIC8hZ*Sr+FLc-Pj>`kGf{hB(wUj_Q=N8aWIQm4iX}`@Sa3R=X3X8Uo8DPTUugtX$Tik+fuSy*k ziSgjvLkvmO0Q!nQ+}cf8@Uyz-2zAF}@sol-cI9wKR4lB1Xu@Sz`aGigwIVv1N1eDe zt;!FT&ZquX;EJ=aB{ys^|9rQCuH6oD1T6GWnQ5U0#bxPna@RxvT9%{b>o)XL9$@Dc z#S=13d5fBjVLfOzkdbms9k4_KvHsW(E4!q^Z9{U0P+80kM6C4{WgV!*OaCbP0BOFF z^a>HbuPS|`xL+6QD_82!J8+56$dxN#o^Ph0#n|V-4Ark-bim5HmPd4y$DW&C~SsnU`@@sED4|kFI z;h2|iD-T*^aHn>q7#ZoWUTYr%tAZPMFer%cRllAdaq@C~t#MChY9EDFU0K6~;6K~j zhjN9ey?+0$bVOt1no)c0aK>#nlT@zawIWt-BNM1n@0`f$O0((UyIzF&Wt5esUgF4m7Hg!M7M0e6yMj_0H6!_JSutkIl#^uj+B|4x>uTpi z_pM}kor=pKB|f9b`t-rB-do0!b!yCC99g zmSv7?g^Q~VIVxby+g5sa-id)@9MlwUF5yLUaUlQq35?0)U$_)J9PR~l6-oaJLBhf4 z8d6#pQwE8nl)FZlN4_?V%II0V41ypWr_@>cXrZ#4CSHd5&1Vg>vwyXDAZi8`MQ11z5#%n*4Sv}34uCJX|R2c6qjV&)O zUSt%z_nD*B;IdzI{NQsq0kc7U7Hz-T{mQ&Kf+i=0Gm$Iu}8~U|-xh zOENnmpe1~Onej&VC@2gY9YnG-V)Px8Y%0c9OskwrV%)VaK&B3C)$7e_vtXGJw@~i( z$}6@~ZSMJa?jwPYR=mtZ@v;un6U%1)EV&y*;gwqDf&7q%-M|hYwR}vc61!n z(|dvJgE*&S;ki`zWlp;|3(YMt=}_^l!?F#nO~N@}nn74wZaldweM>Z(WQ~WK#+0RH zFoI_e{R8-WziyDss*-=hL-ORVV%DOkcC{tcd5U9#;p?dl=G=EG8-JZit2z`*{3NcM zO~3&JsRmZs+mmvdDGrZw7us&4LZe!y9Aq8EB}(f*#6fQl`d{n@E0;ix5NZ zLSKcMSpA(n_juX_&)=7I#T3!LkS4)MTQIxio+hX!b4NwbvIe!WwC_$KSw)D<)bcEZ zL?Z`Z&yaMD<>BVV*&Y9J^2s~|L%zTOIj>;M$^cokgT}IdE9Fb87(EtNVEg;E*N7jBXd}hP1ifUrPT@^CnlTdv zWD-5gvBKp9kSqPRdSh}RK#kR9wk%sWLAGSgM*X=kBFJooFv{0b>#JfY7nPlBNlofqUkKIx>US!ocDi!8Su2!=_Tpf9TpueQsl!)37cO zcj0!&5xM;gQ;Zht4wuqI=bW|uXwyewtKptRvXGlj2BJ17lSSkOg}}Q z;k#!Mr_bJYJNc~pM4g>FKD{gLvk$|KHH4!pv@8M74>HmQD|}owmOAaA z`%kxx`K-o#PGdg%ipLy0wqU2JW>E%0hV{Inx@K!vTUOl$>|p56U0bAF2MOCRlFog$ zKX+3>lPP~q6x$@`+}T(m`2FRoLh9?2_FI*t#2grrzDVgROXE~jBQkorJ__4{<&sl= zk}Mn+vX3*xNeBR%$LLV5@@v=SKQ-f~iQI;i1e(wUM^%Tt zpZDD$uK;l4`Zl5a`hsyDJzw6IeDT^lH2Hi&jfXg;=vCLBE0G${l+wqfK_wi_quf3LhxrwR#YCBW;Rn{7&@~f{D z_*SSg=mX~_WlUh()7D4JWq;!cR1%D;P@yQj~skY>Sx)MwPGVo(-Zg%aSz5Ih?}@lh;4zx@bn;@ zX}7kS2nU>Gl!le+MMKo69Lhx5FkDIYq-Z`yj}Hh~k>b(MNh1LLg!x0d18KADxdDfH47O7|M&O;{|Z@u3z>e>J<6z4uccj?v%&=&ieW6$ zuA*dHZWC^=ua8c8ncr^TVs@PVcht%9L%V{Z!GK=(pglx~=rd_BZ{va^E^Wc>61d zkDB;4f{-X=0R^^~6x*o<tNg+?`co6C!uLDeQ zn2hd;JFqMVK(gM0gQEIgrvvr7!I0+md%}=6*=gdsucza)3rd`U*(J+@ic&cQHidIh zp zbh*Jtl$erdrMN(+r41?dwa^z3?Ck5tTO{VfhG9KcUL+59)W=$QF)5p1{C0G4joz>` z>E4(Wm@2b5Ug?%g-Nym+NHw+LgPgk8FIdx|Ln^K^H`$cwb6zpyRD=J%x= z)hnSO+p=V`<)^X91d+g^^W;)oUzV|Zy_=il@FRuJ3h3BEqCFvn(JXcpWtV)~6(BQBS!~MpGG~e&`Q~JQj-O_wFowdZ> ztK&H^Yz(Q^gr&KaR2+vbWVq9OIV-h7m#`jpPZ7u&9NyCq1Kj>qu6~2MYe)EAjs_A}3YmweN#ru6*m9@_wJf6+GS`h18GJ=OD#sqW zb6x+aR-06#l@a=Hna5W5-_$p-bDqM)m7Ez_V3!x5g*Xp3RAQ=-pM6{DT+`hojzWps zD`Q6sCy)_6E#>y$pH%qGZZ%~Q@QCku)SaYrK!0>{me}k3#8xYVf&UZ_SN> zxsf&=L&eBy%VckC8(~1ilIeqxT$DfL_jx|^$YKg4P?PJDo3^-5jie_!%8JRurcm4` zO&0+;XaS3BS{Y@~GcuS?EF#aFfg_3W`1$w&zhSPmG;BFp7^TQ>~Mur8syGmu?WPN^-)8gXUtK4G|tAv+(q89t2DDH|9 znJOzuCN&;kAeYG*-IqzPyU6;H$dMGNs_~ub=)KDqN0g_ez>DoJeGJ!;<~59Jj1Va; z`hM>j!fW&?a-5-upO@rEpoYWEBsOj#e7TiZW-I%N*T#f`Rs<)Qix;It2=vKb;&uyR z;V-XDxUK7&v2o)1P5Ih>$Ca=-t{hQKU@q3+7OwLGE(gW1CK`|G0))?=Lw{aPcv;3% z51Y&7lua<Vdi)(jvrH8}2eX?Dz4oL;MS1N3H z&z8X3Bsmm1WHpVuBaxJoyA8nGH`^fQ*(yWFK%1o3PGV=ukR@vn^f(w7{YI<+DUB(%98ApGWIy*a)V_ltHY)`(%IUrq~_ugJgzK62) zq1z80%-TDsC%W$YnC(Xwdqw-2vd<>A70?B-xVi zQBf)#YTMW$+t<3STTha1OJ>)b;LI5a=1Sd_C|oyIT?%tBHmS~0?vlnTwW*KSxBv}* z(`QoEZHzzQdPaR-Pa(Z0?O8R;XD`a44bPwJ8aFzfiZinj8}nW1=L>EkSbkbT;p{Qo zekViu-*e^!w&QzmHhId%);7t6v^} ze!XoeWGJ1nZ*ip>LSciq0#wD&&;w`+}PYQ1~!Y<($iVT&8 z5#WAQVlh6zpYCEA7X>NQsWB$E0^HLVtXwjgpCBrhQamVDtRA;}1aQ@JOL@^HBmZ3g zbOAha2?_kAQ&)zUKRum(rG$Z?P>N}KPkt&CsBSgjCgloGhe?!nr&NAvyh^Flf%Y~h{zKnAm)VI=4zj6K11$!cV zSIy3a%O7?pt{rP_efHHWmny8hrTGB)BMWZsHuP+%z?}Q4#uHb7_T15v`zu2f*Im8f zNfbGSNHrD@RB+KE)ll|xGZ5~l73~_Kn+x#zT|wy2U@t5u9?dfGvlOA~rU_c|$<9YH zAEDI-Vw<6mX@Sw6O;9Y`96h_?>2g%E@cRSOoe59E)*IS{_np3gr0e5RAJqq9jgsq1 zzV>zr`HDllYJL_ZTO6cp)X9U1^FPvY3b248L<2YqTH zf*GtgS^;tVDE8N=!O2@#67pdxCxU^DGdwQw8;8pUWFtvyu~xuTUfJ2uj1>3b)-#N2 z#Lu##t6HBhoGnkKkHSn1Mj)w2a(y038K$A|E2G$UCjGplvrwrvRjAgS<;65>(fv85 z&e!WJl>tqhp6|xUS4)0abxsjV<%qAj=4$R-0u})^!&BZ9IPK`xdwk(6LeQ&9$8Gvv z39PW-fo3&Ui4o-7#nSV-iX$*Z+&5!J#`Y3U)(iUl#uXdwME$!n2OyF2ENS@LFx2#L?gML7p$ zOZJo=X7>pThS;E+QNm~4_0WLuhAj0$QABmvHu5suP@2e(Hn#z7`nb}6Zh9WbU2gtE zosU|Fbc5mmp>*LAs{obJF>=BA#`H{`To$TIXypWvN7w(vUe_JN8>$k-ILEwS`SEV1 zI?&r*F>m!!>OB491>Wj$aa1p*$&+1KwR_h5;##|S+fxmQvR9+8FLs9rWj-j!0Y73w~ATnhMPj@)6y^N`r6?8xRHfECS2*;;D`o>*gX6@;FgBVBP0)vT(w;q zUcTIU(s&2Jbhw)kbb_Iyj#%CeU=I3eXocO2Bk~w1=0k;<75BBUauh}A!s-%e^Jq?` zGFJdC0dd&&N~;@0sq}8{z_KfLuj&5KtTNtOy6WG#3bsA%etW!GVJatO{tn>cyz z+1L&@#0@6{WX<#Qn`zikG&iu5HXbfqj1>HFh9$1~ zk2EPFRppR6;c#XhY%NJUuwe&LUGA(@7_~Bbdg0O{9Iv6kF}Vjekd+@DRuHNE5OnTw zc=I4^RBF({Y%l@R$c$p!6aAP$-~3}|^75MZ4|H|)hxj&K3+)J1>ObQG!8kvooP2a# z7M$hGBq{Q$pQ5-?Db1Lti;>stM<1f{At{y0AL)9!>*HOY=z6B>*{^EdiK82*`! zKR)CiLsZE=M=Xhtelk8<2c_iGU1`^`<*9^!^z^~21QNT~^lY=!U5KpqdzzNY$H~*G z&RD#?-p_5Nq*FTC@Q8|>$By`jW}L?@@ezeMkEQr{hdpkMkFT@GZSnE-_P9Mh4%uU8 ze7w^hcO>Ni#(+KV%$^;tUD>k()|EXwWZl`bgLYl^?6Cb%_Uyp*WX}%W_1Uw7_ruw< z!}qHAe7nQfn>{;xyR&D9??9KPGL zXNT{#*|Wnpm_0jucVy2F-|Mnxhwt^-v%@!(Jv)4NX3q}a!R*=L`-%AcI*0F2_U!Q8 zl|4IrZ^)hJv)3yvS)|yX!h*zjbzUb-?8}odWY}s?AhUaWA^Ou zjb_gd-|_6(;rprV+2Q-??AhTvkv%(nC$ndV?^O2e@STp&Lk{0q_U!Q8lRZ0pXR>F9 zZ#;W;_$IPvhwp6m?C{;2Jv)5&WzP=Zx$N2DyFWhP>G1vW?AhV_ne5r&dmwvu_|9j~ z4&R^1o*ll)?AhU~X3q}aRQBxfUC5ptzUgFNq|XjuEpKoL>v@BNcrkBq7%$}w4&+SU z;84!y4G!j;@&3r63n?t&gH#nq=d4of`ls7n}59SRH>2luSkT&uL zhjb-xa7b7428Z;ayul&8k~M@&y2n#b}6hxGBh!6E%~d4ogx=ko@K^ohK|A$>A$a7h0`-r$h_ zZ+U}5`u4oRA$=-q2v^Qu%o`licjOHY={xfVhxA=}gG2h4@&AUj=hx9#p zgG2gP@&i24e<^QpNZ+3~IHVuQ8ywRAJ#TPG|61PQ zkbW?4a7aItHH2&EujdU8>EFm39MTWx4G!r?@&EFs59MX^G4G!tkd4ogx zxAO*v^zUR1;X?XY-r$gaJa2GF|8Cykkp3TegG2hud4ogxiM+uf{d;+XL;Cmg28Z;M zd4ogxOx6&trvEcb-q28Z;yyul&;r+I@z`p@zPhxD^~gG2hcyul&;=Xrxe`Y-YZhxGG# zgG2g-tRdV{znV8Vr2jH+a7ceGZ*WMzm^V12|0-{ANPj(Va7e$DH#nrv=M4_&|CKj5 zr2jf=2zS(Psdp%qyBx~;E?`@yul&;M&96%elu@yNdIHr;E?{Oyul&;t-Qe@eIajfNdI%*;E?{8 ztRdV{-^v>t(r@Pt4(b1$H#nsKPu}2=ekX5mNMFnw9Mb=qH#nsKEpKp0zneEWq~FUL z!X5Sh<_!+%Z|4mT>F?wX4(UsIgG2hed4ogxd!$m>SohKIx({?g)Ac@6o1g)jt_PjR zx6<;&!GqS4B+qT!%YgUd4mJJO&3(#iq>O#iAbqZ@b0%oSNSLwEke4Icr=_Vic~@7D zQkjzyg846F{zHHwP1AwkVQ~85p$Xi)zR=Yf`0aN0RIJcnsH!cPZ-r>XK3%T>uQG5I>qglFoF z)wvbw(5K(*!j%33KA@eaFPD;UGF+0N*jg?nFYs?(S5pTrg)ek<&fx?~5nC19ww;W- zLH*rX_hKV${@__67O-b)tMP70lIR0eui?5EG=6ta%~INn?oT-4pclrnM`HWLldZ|fv8yxWSz2kZawLKy`BSnj*>jYZ#d$QNY3J%t zvOR&?U;iy|am_t+yy$18##kLGn9Hqe*h& z)FQ=V&8CtWur=LgC~@!J-Q76=PQ_|+je&ToM;xtE%j$nacOfrid?R=2_4K-69+d2c z?v?^z9i*2X0zYpAhwOhkZt70>gBSRhJBE^*TL2g{${)wj8bedS!?b7dGTx@qslERq z@Xbwnm~L#`V~>s9-D%4-_P_kPjufzL+_n{4KN#z~P7yeBqG1ioP(np?&p}a=15F3$ zw(jBqx=j-fWG@_`+g=`y!?s@qU>G`8Rvz5`SJnp76NR71>|?EoT>H&Ctns$gQ$82o znwYwTK{NVNL!*opzCRJ0lXM@BB}-)JU8%>7Nbazmd~WBR-N~KZ8T(wo}^m4eKbi@D=6N=^qT+N zwXk@_{*~MX1RcZO$?%55@00mkp&#|E%5~aR&Z_+-$DlRwNv|Fn?JuhoRpPq3*L zt6spc`e)_`O&x9oCajHP|=%QXzqO%5!cPR|eD4sD(dWom^Ucs93WnnQEF&y?r`$pN{@2 zb)N6uT}oz~KH1v7{9Aqb=lP`L!S3Y24Oc>b@s6O!lxfi_?516ZvR2CzUF%7n-eHwj75fQRyomE^hJsooxr=X?PkA#LqXqcfLIb*m=(Z_O_ixL;q0Ikk7P-)jh*_{P{@Jdr!B6_Oyfc^oF1fPBqpRrYA$ba@bNU zl-GP4LJj-nH@QN9=E6$j7rWDUOX$cDJj78B`+a8b z_+`qW`S>P5>@N)MY{F3b0O2$wt}4)(A_cMnU@a7e#LJ{EkaKd8?ocFi9=D5nmZP|9 z^|iM{+?rY^FRYR0Jvw>T)Q^5=#OAu%@r`q}VxO@@S>phT045L$@ zPBsMjP>d!BWV?x=rDG3e7lf~%u5pgzXnt`VWno8^-JG>sBFd0uUMAEjl-PW(JIi4h z@;1T8#~*?4oF|cu6-&5?Y@E+^r&Mk-?x*immT;b5<7mt-`NSsCD3-!&Sz^biQtHJ+ zCbM$)#qCO-5s~qXsV=*(vLN<99bfNG_`^DJ!S71GsfB{Yc%f;D zzumsX-{wUq_qV${*KtQ52uEmfSzhSh0PfKahGqx&%LS^6j${E;41nfP&$I{Zh(PB|o>QOfX zZ6)E+8VZ>K{5CIU`nzojuI^+pE2$Qf!8YXK-sQ)Rv|;i=_J*&Mya4`svLe zUP}_Sn*obq5BQSg<6M}!P#-zM|G-z|u_Xz`3I-cE?M{+-!*1V!P@7?Z2*>Fe{KFN| z6dOy^A4=1{K8iOGHvYQ7{YlzCrH#JXmeN7Aj9p0 z4ErGZtK-;p34b`9Lw9s0$FJ+UhQX6TxIelAEQem1%+(l}$Amn$kUceAm-H zG+leHm^G^}4UGxOx8$Ctg*@B7kY{}%&u#)r)UyE? z1}(zbl~P!#QE!=fx|hS)+IC{9_9k@h*v5QeTYgXO2j2X$GV*kCd$_HN({lK4+jD+1arry_KaJ__fqo6_H?P}Mt|_2y>ckL4@FISbVf*& zzdfA`HqHw)w7tmP$layVex>Bu?djFT|Cr2 zDkXPzX8i{pZQJX3h`-T^cquuaza9vC+v|9YPmo-qvAVogO6GHLRzhRj2S1z~hGbBy zLm~miw-7%`^U|5VH_QVP6Mmeej2FMQ_0XH_JL9EJYEu{@JJUzQry;t&Hr4jY?quxl zy2!4oM@j#unlTTtIq8n{&NO~LwIHi(EGhF)>sIv>;3*ztlI3ZAaVLqUSF|a&y&?IL zMEF}E&4s` z-I|-4od;QN*pZ%tI`Qwew_b&jj*MKG39#wx$Z&+HVzsrsjvKujiuC^Z9T^UKaQr$S z+yD+PQVmbtfK} z+z5dA`uThvW60rh+Xy!%;=rx~&r3VfrLc`yPOi4Ej)DNNZ_Q$===#WB92c*A{w2D1cJuh_fjr z$MQj>vQT5&2S1(+9-Wz;tL0zavon2r7-(9*Om6rscjKv9#(8jO8n0VQ!L$wWN0M{A zM#QJ(?BIe7R~27AvNQdyFxG{sbtzkRR`TBqN96#}7g@tn^7u~Cm=H|c5YL)3j%|>= zHW?h_-Rw#$B_G+DK2i8QyLsC_y(3XM0X|h!CW`3f*`4Y83t#G=jm$XP_WA2TG`&$u zZr-KyodIm$wY@%+^hg;}qVl>BEqhz4qPCY0`K%h^O;%Bdm8g}OK34du7Jg{^@(tn3 zSQxNGZNH{3V_CSiFMl#2H=iZiAz9lh==y?SF93lOzi`?Hxt11GW#hAu)#%9)6Ia#N3jp3!GIm!p& zOhGU2FW)!g6-2-z01EFEbDsF?^Rn`^=#VY3;2xtvHrT0~rWm=;5LV+ll&u zPhc3|M4N#N`=ldNihroxeqRjWDa;KzNOb)rgS9^!Adc$;?K2Qf^OBaf_6$Dya+_Cr zXPFwQN`Ye?l-;hOG%BHC2BiyiN(QqHkj)kp+1i6kXz8w0{wQ(vvAIvJ4_LWx-ZG}C zE=hQu>}94Z&``6a5Yxx|sVlfTe*v$?q^C!qmv*p3gc3K+G5|?J8n`GqmLOn|VXIO` zr>X1#)lh2A-8rfim05ru+o~j+Sdyi(UX5viVkQw^kIJ5r*-P+hX>y3^f2-_I@!cjc z`$;L$pl&J%9e?*VcK6K69<%;7(&Pkk&wI=MM3ytk{=g!8A__%HH+8D2dF4~5CypJo zb&-BdX-Zbzo?|(G8#9(Cj8Bm=xDZIQ4SULJ;iWT0E?=v*NB-Z>myfGfmvV|(PCPPL zDTmX=IVg>##~53@m%Oz14>=HOuk%|3W0&UYJD)Y z-er#$$bE5%-&uh|PviLF|n1=3! z{g`86EXA$i7?wQHx~vN(8v=8z8EeU_B6HwugNhvswXbE{#T?bH?=IHSKG}wAQ42G+ zb--bbBct+^wl|pfRw=-uoM-Hm6j|kJpAjxU{C6)dvp@ZgXDA%%SNB)hhLGg$B1sQD z``sd5z=l94Q|rn1);_4JL0P68v1UDIn{QwoIFwLgAGIQ3?c~1XsGg=uF$va^IMkP# zOk3;_=ZIChL|r2Ge`RLXXTf4}@o+WIcoO?X<~w?VL?1!R66?n#$3ZVjJe9|lyV}34 z7IP0&4UfEOf!qgGEvDtK(qf^Zqoj~yf0o|G3sgb?C&DPCf2STT@_aZMy5?A;iDj0Z zrC|Lmp;xe+);M=eghX~#+l%;JRfMIAfx22L-wi3Nm$8^#oI*4tHReUFOr@F+II%p7 zgLM4XuGY@;n;0`>wv*-(Vzhwja6zj=2}#2YHs)fv8oP~Qako)R_F*u1Nn`Dqp%O8CNTP`^)93%A>Fh7diYgWv$?}`d-B#ZZ(4a(xb6?zXSzQ> zUp9cse5#@ZPao(Od9eC*W3Twqm&Hj-7N=E+eoBr9%yS7*V zvVd58vGR>`|NdE1{l5M;-|;&SKl$R<@OnxP|L(zGOTYWnUy{4~uYU5K@A%K3|MR}R)5Dke(??ScVT2tj{nEM^`jGiw(FyM=gBYr+dUus)qinL z@4WD?XFvS6|HKO~s{Nn+)0=GuL%lm)qKmCIK z{mJ*d?TOPr^A~2-ur_R&k^`DMfO z0-L8d{3JqVthY*Xr!EK{xnfmW)c4{wjm8~A+zE&YuMxMmL=M|EZaox)S@!>!f>D&T zf<|tt0X?5>+@^~ml#Ys98rY-D7+gul3Oi!c3Gi@Xc%@U2jYRQw(FjOoD{U-sMzXA$ za8!YeIPB>oDDq8@p4$J8^qI}cZlg3AD6@R_UumLzG*lZhdzrHdmCO{6ev917qCayj zF9up84OpdL=4iYrC1R$@d(yIZo+O>$weu-?UG)d^GOG{U;k-+j))Ijp(0GLtNB2^{e) zWqYNP^p}6UJgySZ9L8j8z@d|8$0x)o>%z8Vx$wf}OH=a~=HTk!%~kna`EvEUxL!GT zJ4ZM5UG{#C65Wej?l3FzCFa|}L4rRp^h&W@5d(d4`2K7J-arMkwi{pG<+UYbHFO7L zM-|ep5a>16=r7M;Pvxle>&}(KyWkMZi_1-2f{#$%5O%gfH+^%n;GjNO6YqPej7Ju< zYT?sGszrRnGykoK#yTbFRagR7Qrl9*&S`Kgcwu&3b)t-UV^wo)c7&n9D_?$g5?#=Or`PCOd zbg+Bq6ii)i=-vzpmL4eUqX0>cgH$M?Ia<~8vsx{_UOcD+HWD2>}%Rpq?5m#b$_jT}2OdGz$D@rg5Mk4_vveQI+2*c(qCJ2f$R z;@GJ-PK;J7$#0cUb7}xGbRZFvm<3@m8{p9Ni{Z31c?OH^5h!0lveHg=qjMu;CK_T&cs`+X1ynFb{?PsPv)I8_yx$;_>tpJ$JIqS&p@k>bpl2rs2{GssX3D8i-|2SEn0a=dJQFD9Fm|`(UOp188o{gWrska z8bqMX^(?HBR@f81TMFM=xz8`0+M=>=^0L@@utODPxM|T~?XM)qQ_)QT(#G?175B@q zNcCzzATc{gGMAUct=Ngs*ab(+4W0=@1}%yJQ5AHk%Up-^Tgvfj>6Hi)S^Yrz;D03> zW<7}Ujf?5D!>C}m8!gE*T!oCVh?~_@2W~SFt(SjRE6l~w3QRU}*%6<~F|mx3Fxncm zD!#md3L7L-A-U}mRcpa)q+|#Nd=5#)p{%e;?2T6{(4x>J+G=ORu7UF61xp~k+<*%n z2bH-ov>LuMh-@ka06g?-8^(FGl-*R4(f&6s&yw*K&t5G^5je`e@rG^%ZcNEOd7|#Z z<=&{2PcSvP6GatF@0ZG>Fjtu#DK4&e&f4Hn3Fiz@9B--q^ss<_AY!Vfzh*aEhMT%# zf+Eek$z?k2pE~8>X`-u3*Qb)^{k7uhtCX?pEUyWr?PNzX>cfGb4a_wnE%xb0xl3cV zY9XPngXY7tW(P{Q9a^OPR>Nyv#DV)vn8&AuTTBO6>l~NFHi}(ym0hN&s}iq{;K`)@ zhR?`?ZR9>Hi~;xOw^94h=;$^c+UT#1O93_?2NGmJ8K{2jwC!LQ%AIeN`_>j$jZ?Y^ z^^qgLk>$d$kWmP)l#5`!@h?*6?XL`uJ8s#lpvTj!OL;$vE>pcl{@HXIw+#$LOw6#C zeRZ&??P^t#v~$53gptq-fs*kk+l=gV1ca_6aQ{a5Kn_zCWn5t3>C|0QLg~P%l!sfg zVq5zisVBD#1c}q7EZYY-i7-a^YB--`q&Xhw0IMA>-FRG{1WszF;ltMz|vJvti}%bFib;N{L~7|it;gIRz)VXcm|$UI>Ka`!9|n3xI_k` zPSKShD}5Bxi`8(-0H|NJrOk?jal3^tE9v8$`$5~{k?7Y~Hjxw}-1S?AiC$sHHXOAr zGYNNxR)(&`GXz#EoG{@;g&W6->roe&AisVbgq*OSR;W-b=!k0bb%>*bp%-Gj$<>2S zET#R+#Gc_5^yhf|iy~O*2Dox(E^!LJ97qVeUkiL0vDdl^>a`=X1S#fepuF^IzifI< z@PPJ)SIXqfH~p#;BI&DhiR{SmkzMYzrcV;7A`KP1I||g zP2@xHB!b?k3>&_>0w8fGuL(_9YsQxf#4H0s84>p#xsxXRzn?>Hf0M98h*3-;0hO!M zRbBZKEULGa50rV#wBwEU+JU#9{sIS6Gdr7 zU*`UZ=6~rHb?SVBUp@n%`k4hO~tg3y=Z6Da4tJ9l@#B%WS@2v>Gd9oIyH$HRkWseX zyGhOlLI$|f;9~9x@3HMwga)pPRVu4V7?VJNg_VDj(w-AStF3xIm?S!G^;*4hEHYw1 zBcqU|`iQ(XCIx+I%j6iGUx!BJ+43UehGe^VxspE3&JCXAzM{Y<0iR^Z9w`5^^j7@0 z=P}gf42_iRvo&sjy`B5Y5H(!?+8Q_ljEMlgYWyB|Jb+6|F`sE z+pu7gjQRrMx}>({heS6`dQw%^^x5qNhfg*!_(JU+G#mGE!j0v1NEV30#WD16jL;K0 z5M~QsMa_cgH5|JpO&k|6|QH!{E6Q?m z+05|CbI`D!UxpQ@Al59&MQZ4F^U_#W$uF)!#P-U~5uhMX8P^YKoRxiZMWZf$8EP(%V)d>lu!M6rr!1b z@+p|CTA;LSjP7@EEZg~P*2&Wus7{u7S=Z$T(5imO_XBJ1s5+3VMDlgrGjj<0Gzh-7 z4cU9QFO9vOcG|7vP5D-~eUv_%rjPcFS|J2PbJ*MLf;#)&-)SPnWl&JG9u}}r?3*>S zY&3>pW-`o)s0@7zm9iNJV8P#b=GgGWu`}g~(cx3&KYr}Y>6_%FaQtFfBJVA5<=p(Y zxWoq24Z?y=68QV=g=zXl$?Vs*sujXsh!sW}7O!0Q+647lRUGG(q>$_oRHPztOMr%= zPy(U{q7V<@6xyBT*~aCA{)I6jf?GP6DYPOEySdQN)aNR3ID+e4C{@@x*QMx2cPwR<{Xc^PrIu- zU~${L^z@UZ z>S;9lhGSE6O&xWXwoY(rhgGZ(tr8I!*1rj+#gD4U?}+&B+scs>w}&@;`85xb5l-vL zhp#cRw1~qIC$m0_<)RwXbyX8M6uX==$uS$ueAmQDR82*y@HM;b7cT^zeajfq(?GqX z)Ls4#=0LL?Lb3#c!NqyT1B#20ie2Wun}Y#kHz$`~owi2hq=}vLXlsM96PDwY%=>cy zkZ+A^9GB6&9>8?ZKnoweORh787|HSq zumVaM#A{3ECAA_HvKbk4vF5nx##R_aIkkd|!kuiZnLrg&i@YMEj7<0WX2KhBXG(8p zJXwu0a@IlN6_nZ>`D_g#+Ve}Un1ZmtTo|r4t&ogGPB}Mhgut*bh>p zYLhF1hq7VaTUNbXQs25_DvWnrdUEpnY~6Ze=i^%#771Xu;HB!Fz`nT+z?>p4L$L!C ztQ;B;GiPc8>}Szr(-Kya^iv7R4f;m8j*wnK`?T=y&e6Pm90pvcU(@foNz(^iqKmCr z^x%y`A5pc;sWr{F2@3xG0h4!>+)GL`JP!agQ{q8}5OFC0PCxY;c2Fv2V+>@huh~k2 zj<_Q*(e|O_6KA3mI-8#{zn6aVwcO8sCa=lDQqvfpy0`D%sA|Wq@m$In58D_K9mFUx zQU+V2GH}%Q#Wy7Sw_nYie3&d+_P7l`-O8XvBGrzXCB_35I`0H;f+wf8#BBR>X4R5; z7A@y=KnZyYsfw9%JQ8l;=X`6;mg;^jjrW`W(RJvV#)Vvm(!XTzOaD~qb7;se#iVa$ z6Fcv691d@TnR&Txvol2_ffS#9gp19bE}*2=A;&pjdd3`wAa`!Glp)m2SXK0? zVNR3o(Jghl{2&?}K%|f>+6AGAA9?cxGshF{h)!1Wf-v#jhKWrJo$XA)MpP;D*=d=t z^yzJsh0DS%3RWY&tXO~iL#v}rsPf?iZrjI^Y`CRpfk2^Au4yYO={M8#SCaJ3&OAOl zje**Gd&d>XlqPqH1Uvzo##2Q4cy^+uU(2;p84O-Qeg^RC)t8^ie1#lu50?APzfjH* zQ!D6QV&cqT8`@v#Gj7fV0uR3VBnujSy`!1IO&M{Q^)l=3BUJVRtDG+aNqHh_-jR%S z13|X~{D>ZC8ue;+=EqgMwP-^y*J#!)_ki_L8s)wV1Y?Mel82d*W!4m=1mo5_=}7!& z{!u(D{F(E<|1 z+wgwqhknb)M2~ZhV7Wn)?UtJ3vOjZ1OD~< zGTEYgF^g^39QvAw{yavxA|X!jt!#3JV(ZNdO1zmNnD{_*N5chWuEj6)n9kl?nl8E+ z?-36zI9N%ycBG%}THmbqfSL82e=>{}zB1$w(3W=&(X@!u$8aYBtby_eb({0w9$ldv zk@+@J6};7}LT*zW=^XN+R+Uosw8lHf(LS6Hb2V^-t&zv#;8jLh65-sG3xeqDYy%bz z#K6=SlpV@ED0bbM?hE)}=_F)EZqB&uz0xL$^1!{}CSj^-#>H*Hjjg5t>4RD!R^upi z9NS)@q&GYOsp<74pb8gUuO&9nE^b;4q(Qp?gBGlk9`D?ljKN2h`o@TNL^{7Iw6&Cdj7dJkCZTB}-N&9mY!ukIrskSM z#n7?3Gb}5Ja?IY)4sg@wjeanzA_(nK^ zly`zzf}JhbZ6;emINTtBGm+D4m3_lYfXtq-r1uM)?`GieLExL4X96$J7xXEqNqf8o zTFcPN&5hqajDD?keRN8UtJXz=bNzxvtU0@CjsxtfIpR*ooWD6s*2 zAbtUhlOvf}DPNUHtsIHeet}O>xropS8H1g?QXUh(#Z@-jSzcPZb!E9hI+h!p$j9_P zAWF19p%OM~DAoeEVU&}id+c~aIa|n+mFbjWbSeW}C)r`^>45=Ex-eMkXtZA-j^CV0 zhgs6Xl_~k_go{K_Yc!LXDspyk7boL;GHs=Zu<0}m%tGL6%y1GWES;BEM3#a+kn9Rc zJ<#f}Wc%`tZAn}VRt}ep$Qd}z0mST7#>EQDD{=(U;W$|~9>_#G-?>g&q_izjQs+KT zm~{8zvMC=P>|E{qQjU(V^nX$2R;pny{Qh7+uhpjs%$WT?U70%a8c z5D`5Pl-$=_BSoBDyePSwm&L(V(mOlS*|by4*}Yl=oT)mHll+Q`pA@8(OwFWiVY))1 zkgh@2B&}RUeoMpB78(|VM^Sz43JGFxAkG{(1Sa&l9DgU|Iy0DvjNQs~y1}$=?|mw0 zG|IUR=OBz3a%rtTS66umGq`~ga6@R$DkGYbHV%x4r{Ys@!)@^iKgG=sNi3q~WLv@q zm85P8>zq2HSmpu6K+qgpoQdsbI9^OuIVPc3b}5CkZ^m%lUGcn4&GmC7ph)DFDY$NF zaN>YO?!pEWli;i$qD%wikvcG7DLXogd}MndB04))N#EC5%sZCuI}^&X12Gr!Hl|AEY;e>}gtb-D3rI1=W?e>g4*ujw5Z^&HFUNZ@k-fe+wOkp=hf!QFrvTsj=VH`AQ$Qn(51?c2YpcgXy#M(Sz!60!V^# zCQ2ajvnha|s+ltcgo`*qv?a|vkMkYjmwsmu^vc@95*9;Fw*!u)v}ZKEk|3rTrOuJT zd>BQ2t0NkTnb^vjOr@|1p#U)sHV@7G;6YB)q>atH)yiPgXFkc`$@m$Y<$CMgG=W_2 zQ0a>mnNDA{6(1}md$#&wVFj~VO?I`I?7s{lA@FUzz0f|#~28vnlAbSAM582c>T&U(|NmwGIX+&THwYs`s1zZ{{c&rj^ z2i@5}639-R0)p$wj&wfl9U0HOCo|WB-}{Qk633gXbVpd%X4eD1EsfxDcQ$ix+)oy% zSAZ>JCM)}(yoTpBXED%O(_&r?F$YKUt~d)3mOwg2IS=ZzR4f?Ead84wJ*)uC*{ik~ z6RmyBG0J@|-AlUYGHPT?=P0hByS{r6S2OZmSgU-^gTTVgqkuHi=tAZe*02h4suC= zK0^iuuq8~G)zDt&=JGg-N0lja#qaoC7%x(U3x^2DZpK-g8RqRwiS| zvaTR26a$EdfO`%}bWt>Ix-dPFMfsZs)m{bPJuFnyaD(PNIW4NEJ1Ru|ImusLn8My; zaf^G5Xf(di`Jvqe;P=Stk%E4Ye)kivyX98>%l}hg{;%-=SNVT=QFJ`<>u>1h@8rIt z|HcvmOoYFa~F+rz(ib?ZHU*j}^$QS86E@8kc~ z-0@rQxS2TqB>9u~9WvMVBX{2V!+P$xE_sXoPX5)u|1pE^&I@bs5DAsV27_8+a;k=_ z4pljl_x`C*{#;){I*OCf-!}MjM+f!^PQl!9eo>Q4l5bRAu)iOhd7EWY*p=)H9BX}9 zy|zj{#a=hRG+jx*TvX~mXlT2W!xyvEoxjn z;+4xk^^#WnhmygN1QW)SeafYGy z-+ACipL&NT?Ee+Uj4z6 zx(NTpt|R?QekT2|1KC zK@4Ogf03jNANr{Ew|agMw4#LC7wW&Oj!R$Jh(XoulgA+B_~W-O%)>W3H%Q)_uA9<# zPyb1?gg7T|+^sWyok60^@9AhViIPN?78uTI(Zy7Ba_(1Wmn3O_O&(h|WkZl2jFBI3 zArWDVOc{F}f?zuod+xTwsF020np~N4UdVR)j+12QxFmx_z6Iaz#AXydz-$~1W5FX> zjV?D(zIb0;cmW!#LyO@Ewc+`UAjH z936i<8)Du7)qzUoWWEhmGe0Bnh4^!i($3O07_%ws74z{~B0o!$dTA9$GuRjyPp0Sf zQ!uCa&5wjG)x5c~?YY-7MKg5dM-)0gKZNMc5+87BOl$%7#S?&==!TFoq3YRK_ z-oa5edx2V;lB-@~Dl62LKu1S{G)&^fPRK=uUXRoZxi*_rKWA_0j$N#b+Xvf46A(%0G8{RD1zw;y(28Ypc>9n zhx3RKK^q}XSXAPtD~px%%^m6E+e&++YnZ({^ytHwP0MFaAB|eQ@)@FQr?Y73gGqYB zj=cIvl765geR5mr#03>z3L3P=q-D_T>G|uoVB7Z0ht?wIUU20iUHA;e=-eE#BS2L$kzf-N=KW3b77%nOAl`AsJfRGrc_DT;oP(A^iP-n-J?&H zt6?LKyOSA~A`6T&bw60L3dnA%NQUv#jyZE0YCqsJ2x%jbjpm?lWO|S%!D|Skd`)$4mAS`5g=Ur)S1;kP|3SGHOe<#z0Rzxu&vD4B3S&lMCimn#BJ$z_ znZouv0724r#R03O-su>7s$qIH1N^v@1Qx|4fP#0WTa_y(&IUw{-fFBrgk@`TkA%?g zU^}BpXGAR#%wy9b#S}0aQy;wX*0dgO$2?mc|6*7eHI60&3 z{DSi`KDVWH<>K<@jeS=g4uSkFlEF8x?Y-r+? zaf>`C6MVcPu4rSm(u^l}FoovK0y=mq^S#}Bpo6Afn6)rceFl3c8{)}s@c_W)6f>9e zk>5eG1JVg^UnQNUg;?=^f0-QW5T}B}T7VIN?A+t!=-aQx%7D@E~U%@3l#7 zsP?FO-pGiv3@fXO0WK1fKp|K`%=N9boqnWjhuTcZ8MIzWKhlxDYg>8X2+0wrGh1lq ziC_JPIB#YDmA+({8CVhHJ-F|Rj%%_d>Q-?~4p$m^rU{DAdi~gMxRy3{Te{JY{|4QP zLy2JrDw+{^ruD{=JvSWDY_ypp=Sf_Z|JTJ?nqXTu7|kush0eJd!cyv3LY2ba#P!t& zLX(TQ?9jELn2ezca+2*)d%^|dr`gU3v2F5K#mUWim}vGDu4n9woM!B-fQdWfwrW4??^i=9SJvua{M-9*7Viq%~H|*ug2;W6| z7r!j)%c@)W`?j5ob^*O-jg>!kh}#z$=4s`haAD$_v3^(gJw z$B4NSj~tkL@78mDSu2*5Mh#$Rs2tEr&nV>0e`RzX zdJ9{L9Br0gv=Gc9{v>)&%OLUpwf8nKcAaIO=Q;6>Q%P<`muW|Gv}X6F+YD9ds*`f4 zWSkm@b@?l<89Onq3M5TX-Rr7rS54}})U9${EG?y_W~N($6-do&vjPdEMhg;1VK%+m zmO!Gl^a@rW1qq}^3lc5SBU)-CdY6%47Iyacf1c+(=iK@*NhjOt(b$UPs(a6QKc4sb z{(9RJW!NI2rh}|Fba{)kpDZKwW(cK|jD*N+5i{7(cdle;NB)XLQA&aeP*Qzbv`<6$ zNr^HYOq?0&pNmhOOI-EM4u*2N(rF&_z3q(U1ph$RYa{f{rxsV;S{-kYYqMJ(R9n30 zg*u($h$ob)>BpVf>fO8bT+pI!kU+pBm5b^$#W+3kEFl&1?7DO|t>EgGT4fXiA+S^v zIpYhj$WOe|;x?VMq*~5Xd*n6jV06;oJhg2)q7=Ut*pWg=2}XNNglYv7bCwLu=uSoc z9l)}%k`*yXKSZL@@`Ap&sbT3i>07)bvNV$N#Vb(zqC8=2v^cpF@}{5KS>_IsP{sS{ zgc1_EsUvyA66wa0K37{x&tIhnyAZ`=jS0}7Hsr71Y=o53Pc8YC^Fk3KWt(cIJlhgl z{n%bg5QFA8RtYtrWSRCQv_krXO3j1C2q+yMOKEr6hZv9AT2)#uFE~NY4UFFRuZlw! zA+ylmNACWZR`Du$YyHxsR2s#WW4FiO+1B$L`hhkT+gEy{_Caw%A1iXUae8Zm>_LO? z$2Hu~+V=4{+v0O$FM1a3Y|r7-s6Gt#5O$?Al}|8Qa|^mRp92btb;o97`C)}_wD z0Hl_7aY>n?un)IcjcU0O>;GgXt*H|_X<%x^Wambzy4p))`BQ_d`aVrs8?^0DnTf2g zbhEb{FPw{DPJ=ttiRY!Qs>_g`P{CBKT`H7ol;ChOT5UUci>dafYpoZl=I_Fs=$U? zP9q7qrP?abw04v?6nRw+W^G1F4BzLbjiw5_CvafTI!`%+pq$*T|svb8y#&!{eG5`Y* zR<`1`6L!lbq&s%WQvPREcyRdSN5A(^hJRmU#~*prbatWjLaT@Yd5dteT z)K<8!jw$^LMso5otNatOlw^Cyb6*hG)_c<9G2^^RxiU#?x%D9nzunmcC@M_TL7I}_ zVJGl)t7N;0&gym}>-;%(RtU;+8VL(wEl(*?9UoE9Pr2MQK#@OpAph*a)|u1RPBM&W zoC3YWCma8C`L7Nne!{=42r8?maE-6H!mvO?`OKADZh`$hzV%@fuC@d{tGkur)pKEs>p<#i3TfbVrac(SiE7e7FW(Z$6hbg_b z7&|?O5x>51_~ie1={*azt!9UIvCo~`gu&ETXvb@@lRY+k!ktnjQmQ&^_m0^v6xNAN zO#2DXET)ws@{tIZWrd%KV2O1~(<=d;Bd(Vj!TTm5&b!&w;bCXhiStx4;i|!6z#8BG zm>4CMw29?$$ZBOHZx=qgRfTQLV&W9NXiq3lL&#%~p+=&-Y|;y_*N3L%P{SW0L2bR` z)SQb7DKwt-UA;DrlU6l#ZmG_p8-Tim2j#I*MBzod8IAqiZT4rIM&B3KGY9qE4^SxzI-Z$Xn#>>ORNc40bIeRleDey$}$hx6;a z1Mz4{efNJ=MqP7maij6y+O?tdgYnTnl^prYeQa3q%M|5AK}tD#!CQ-6?cct_V9gJ< zXT#Aa-#_drg%(`lvyK5zq4}&)CQD;!oB=AKGIfh{K`FI>ieBUd)yxwWi`4nbxQgx_ zRK#+hYYa*NJ zJIny2c>r)WI;_Avj)*1Ze}4Co>}dLQBd>mJotU9JjGS|uJ!_I+{a3QX(`;eUuM++X z!5?lnV}?G6hRpPK;}V%>Y*#xsbtYLGhPIqg=^L-TDczB_Th`G*$Gm#ryPD@gX%xC( zq{JAB57+VC0dT7Ybo*r1E-r#y{o?Qi>#i+Tq@g}jt)I936F0!9`@|oggzCVur3Kiw z5?X9BZlT_z=ODcs?~v(w1I{CbZ=MnG}5aoV2wSqGH$oM0VK4$JF z9$*WY25to2n4GA+P~^P>`43?)xk#Q+v{o)dnCEURMx^YTr2HyShQ1Ht%Po)%A z!wVhF0VIIne}Q?~Jcx3udotJ-*4Wg$vIbRB zrl=Rn>RFg&-M;eC-6gvtltaB1aW0g5ccj}UezM0VqHnx{V&%i&(PA0eu+Ud~1RHv^ z$lre;|I>qqPYN>IAyr+oeEE0(`M;@^2xYCeIBZ^@WUVP$HZ4u-DzRD$)7Pg+zO5#) zyw!TCeu=VO^<;OZYDzpM`L6w%L|6ccjmVXX?*+{X{$o5h*9jNBoA5a~t zJ-X_cf;}GkVdJSzTD*wzO^!j$y@(!Hnq)WMQc4%hk_)5EM1I(JyzZyUOA&#Oay;UT_}(E{(&NC{vIrdoF z4W`jzagS{!d|vwZM}|ve=7*MF(o&tyUie&JyKxVbj{_U9Lv*YLk82Tmn&6(dVr7wI z$E3|u*6N4q-)i-b9goF-IFRsGNS^=d?*BUTlnA2rksQHKjiZ((!B3&i8)0)&3vqeD84hJ^$W(ubjEM!bKu( z{rBB*kNiv0+7&;6RZ8f_o53r=;m%}bb?<3*kJYsMlE(Msq%XCdL+oe%%9m@POsMzL zzkTljD{Y2*;?}sQOGpre$#~sqvF`?Gks%ZI!_AW8);Q{|P)(iFX6?FUa-`%9wrJ(w z?!(!@JksLq$&%wlP%^Ev$cOLwZ!+ahlF)LkXIYf?Q}gJo)hM5{V93GAw+MCJqZH-x zGE7v&T(f)>(JW40RwIi3=HUBpea-KWrNzY54-Spr_$6v4C2wZpFNd zZ5H5)?81mVTX&wbWD&GG{>6OY%o9Ft`t>0-DcEC0Q&T7A-Z?dePkzMKF|U-@(N6xc z1Non`!$5u4x!KpJY2$o$Xsu={$a5i;1P{j`_=?WJ`0fHf zqw0QK)_;XUQ3jp(DB=Y+V#)%E@h|{LBPOvC!_sc}1M95wQ^aUI{3o^C-RDKX+wTWU z{`;5y_utTs8os2e!you*CQiTToR-UaeIvNs#j-y)4Yk^zxhrcu;3@+GRgYm57}%tP zVnkUJcIhi}gyEX3_1)6S(o6J$ukK<`Bgn*9H@v{px~0Nqw2MUxBNB-OsCe)#xVUqP zT~ac6a<0Aei{-UWac0MUx;NFmY^P7nTBp6)-OF}Py}YKWFPF^{Tw(eDrE6Q9{kzrV z5toh3@WUr}W~4Q)m+j&_kIS^3z+d_uqyGjL$e_k+efZ?g`%zNH&_0BrGqlvXi1G;s zs96_xRAX^vqsejQ#|z7;(Z9KZwC>CHP)bwEPSPCBZtipElBGh)1&{{woF(h2bgDAP z!7-F$OanL*m}=W4l@vq4nkdmh$}YT%zE5K1jOapHov}sO)r9di^oRo_RF;a245AyLHv3<9pVoy zDg!GW_*l%6R^Tv@$`>*?6urpm+p~!E>VX+?>OX4RSLK3t@_M%qpReA><}SH z8v?f>a2o=*A#fW4w;^yF0=FS>8v?f>a2o=*A#fW4w;^yF0=FS>8v<_>0*AT^d69|B(%_~8M{jmx?(2I~;uqw=mpjvbc)E2V)4$fNU$iP{wo7C?&( z+3!ReVl@!kBlj*1776|evPJG!XM&DK7L!m2=Z@BMiYNWhz~d{{UZ@u(4RuBlsvQgE z`s#9UmEq5Bt?FXqJnP-_>DPKpjhEZ;8n7VV8P|k(|6GnKTAW)_3Rm?~jL{=k!Ft8C zmbKjJGW@MLn~FTQHpyVI%sXO`{&qZ1iT?AE_?g?vxd3l6!48pH`|*wQy1XKFz}*j))z--xgQ0+u1|wl|@2XNHRw>}uX?i_? zIzOo*;b`JD#l(zN8Ycu(i=))8x(ZEuat|Q$JM$<^QJ*}k!cK);icT*o<&N411F|HP zXXK{2kSMT?X|L;|io~uECC!Z-A(Kgim!Ht+vL7j2D#q~6U94aAqvR<#-ZQCMsco)L z82VGA#IIJk?AwaskrQ`ium0qt#czDV|2&YAELV5s?AX!`|Ag<_==zH8AvbJdw#1?x zx1ziQ*pn$v7k9R2MQdquh7_xGLgyAUm9Pf4FmSfJH@FSUa!-tURp11UE3d80KezW4 z|3BWownD8S?`wg@#N1N%#W`BmZEmjgR_~d}vhV%P7shWMxRcXULeLz`;!VdqaO->cpZFu*l!Ah6=r#T~(avM8zdUp;|>+6dx-+)Qe|} zY^42LT+U-}WRvYqr?W=m&(-T>8NJ+YFEdaKJ0I`&r>4mHyb8AxYF+jkp!R?Fz#VP= zsB9tSGtV-2ul+L_#B6Wn>eN(#;zYdv&M{;I1!MDmC{t5ZPu!r;Yoqo+ zyfTA89~eW)U?&0w?|f&o-TvK{wxRO$=hnASMA@uv;u9={n)^T^9ad-7I5jtT88qKC z0B!CE9-FRO_Pe}v*K)eljwCV*DMVbPa{Fp@oYA4i5vGGpx_7$&IIzLC-ACQ-)FIrl z8WI4*-3q#7%;1s+RC$T`6LXT$31>=ZlpaW^5HK5M@Hhb7d}eSNk4}OAphEj;<(-@$mJnm6eB&J@WXY#~$urAy|(A-}*LNZ*u7~ zM5YVk{G0uEoqefXYWeUjR;#L+H?r14=QV&a#=pJ`Q)Z=YA838M4&=x=2aP?Q>*AI_ z;C^I5t2)YEFXf*-kbnDN>-^c9>cogL(_M)KQY6QZ2Jic6gM(uBI~1d+n6wf@yCA*d zqAF{lSIfm`X6M?c&bFVte0F;7?B({{`RS+HzjOBT(+{e;b>^y7+&|=n{SSGjv`Q_k zD=;Mp-W%R~;l)s32<&P?%wq{ggEDO>UKg zOxJo-EX%flA3-(fK_t>HtUCfQEVXE?{0C*O8O^s^$|-F9Y(QtJG*72N<0Mg(XZ<1! z=}NpSzHc3W)pck=Hg!*?`9kWpYAi=`Fe-#83Zb?{idOLtOYAaR6TSPko5O>;TD5Og zX4iOt0l<(>w6SCN|G<1eop^%0qYo4aZnU`D0>`fb;^|6Y=aoVIx7v>ILsD%m5gZJV|DBc`x+G%DuE>B3*{7Gn7@&792B2wn46F~0 zMRa`W6e{ky4l<^rFx4=Vgz);W&53F2|KlI#+3(#meIUzF`)~2*j$3^9`oB_*+9H4R z_*)-AGo`=f1A5SYNl&&&M}Fzw{rme~`rp2hzw~eaIDKsYn%(ksLn2eq<*ShT8tsot z_XY(ZmYz;W7PX!zj$iVcRfh{n${#|49{FH9KHf13C`5xetWely@{7=K#Rv+A+Q5wQ zENxoBJg*y3b9kGUBUJu7cv>1t&YOfVZTfJ^VO3;76*fM6Gj0R!_9<$y>Q$T$0|V+7 zFmDCJ)Ap7K-c%XZrbc|4QXTVt*?z>j==P^d$XKJ%G@Q7u7@n}QQ+6qskFPt$v!}Mz zI1#AzP0}uGpI+)MypU&Y?{SY5G=Zg6_q?~W8%cvOl0HTA5THXdjw?2#P03SfTvROv z4nNc@QWa$lCwXd|*)~Y+juy)W=JHtxR7L)IP(1(0J@3fIMF0KSB{JU^^ZGBX3uN^R zA!hwx%X6yr9+54|19I5h8Amg%6xR35nDPXschmjAZtbGM3Fla3+m+Wn!TbY0t{_}o z*s&b-?aZ@}Yb{X@T1_E`i)tRhe>M3t`TqJ>N(Dl-R;PxLujU$no2fO3SHq|ri`r$m zdv*ehmMcI?9lb8AB#ndOG+6p4?os<>I|M-zYs0#JZRnwK_M)eX{M(#xHknQGT9+Oy zbb4k}`QWdOp?4osonQBk&jJpGLr#O<=91Bk5>86tN?FF8N8^ue-257mzK}uz>&A=! zO=>@f1?+SU1*UOoLP@a)5MAMr)R`EutL}GFn*>%C+bx*&8CbgNkh%QUSP&Kg1)K8q zZI08e1I=Cs!YSW4M%crAjdm&%iaFRSr`_LUi|m-WhOPB}dS6&0BWsZT;xeXd z5iH=h)Ir2-&TkgH^HCS_F}EIfO0(!nV>4rCQMd7(uq~9!EAsCi$iGW%=NIpJG@Ed! z%f+;|nGgIn1nxR0vP_rD9R6FiGGa;2QUnqivi>Sng!&~wS5|64>gMLMM*VZ_rt`EF z=bacCeWz9H_v{*Ba0-gT_PnybzCy3WD~Mur#Wg9&G&I2>Br6m^F@7K6c74c@TLICWb(=CRIyjZ2fo zQGt^vS5LYFZ+XqQLoxC6+G(Md`b^SU`Agtw<80oZUD)Ve=U_k!$2>Ej#h2;E3d1lY z6ti2o!BeVm-{O4{+lyQUrGM$*PEGDL>of_ud=GNT|KgsGIn*mnwkO^i^AueXEDTWYk=J_EXR}g#;X4@MhiL?Y zoK4oG0VVrO2fVnAM@*8FnFH@J1DkXLf-})K%w7EbsUP81duYdD)lNCh=qE974v^9A zS1b5JHL`0xIyj)56s&B%dT<{2&uhO_^oFuPV*q^EvM-aya0Da}P@THtJYlBckxbf^ z36S>sf@v0ntdI=e(g?JDf!-usS|$6%?~lbrZ<3*Z!ufjnT83bM3WmX#JKUsFnWBA&e_u}yH~spz0+4SEvX0Z&@nKu z)C6Io7CQJIyu+TUsLW*{9J)`cg9A{|2x-C5Z}n*Ctv0U~z0I>9KwV8X@!F}Y^X?v( ziV)N4KsC{j!MBL^OjirLuEBwXN4Qk9MM!Spf^g0=Y&p`nq{g#zLn_mo)wvLr%TTr5 zy^2CzJ0=j4h5*_)3@N<$l4B`A#EZr@Ij6D%Uu_*u;K>r$x{gay(DebOp8Yf0e@U3r z{!9PNoxF78>a;6*peBA`Xnu$$|YXdZ4)k;@+`j>m~cLlsR|CGw?$W?igJ;w z8>kGz^t#noX{S%`=D5(4foOAt9lKIhWIt954}}0|@Lzfq-fQFddQKxFxLL2n1>B3p``Z2sN%Rd&Rqov*7GU z036G*Pojg_>h`qEaVUGs0sA^Xr?c3gZS^U^WlFNA@#O^nwa014wq~)DRhjj^mAk>m) z4?r1*A?x=nEu(d5Q*?8dfT>Q+Si4%N=#oKu%@~r7XgBhf=cKQ-E5??=ggl|+3ujeR z0+LmtN8zr*6@WqW%Y^!gAvj@-CFQ%k>h1{|==ux0rbPwCMg`^F+60ZmPeuFI6?s6p z`;K|l%h+0HBK64MLam>Z>dk*ZRgR6&g`nhRadYpVp~RZVAK*#rKP>0F4qhHCPYK-h zEQ9a1#r;eZatjhAVrdHU<2Jkeq zH*ASW8ZjPqKU;ZnHEqGK57LW1xf2X$F>|JrBEc`BZEgR7JW15VdX4WJ28X@sV;Pg9 z37@s6Yrpe}b|za(!Bgfpv+qTZ+4PycLuf0c44znC2QHug*B( zG$^X8a8^l0F&p)NeyHIDEC${Isp(=5zA~wT8aacm%1F{v9h;mw z>st)US^~-J&AP6^s!I-Fi7|clX>>vML@;p@Dbc3ngOfshl zr=Mf-N$8ZPAo>9DMDShpy%UdhF)4jB9ZG^o`0~>ky*9?nlH9_MrNxpCe{^6)r5LP> z2jt)T^Y%XS&lP>`BptYq^l82pU$!Zs0FgZ;dM!B_LDRyBy8w5+cz4;SKtjh_d>^Ghj?If}z{{ZzJgxfY|SvM7n>`!G zZh#vDMykFfM?n#*_JcCv218b+KVXtt z{zh1JS9*wG669m(@;))+^d>;9aqg_#;>3LMitG$l*^{-%6IN$von;KmFhV|qF{G6V zYQQK+>ZU)#ns#S>Z9W{ZI2%RH=agz|4J}vMGXYq;(LFrsLP<8PRf+oHYHy4C+obz0;Q1}$mfnCoF+bKxu11o zsap%WVQ7t?Ie3T#hkTElgH1&U87Fnb3}Gptk?8c*Qp8y+RNmwSSvc8!*Oc?`YJ(IA zJo7N(B41Tr-s4&G%)M9($Ld{ZAljOwAExEbsuqc4vfez>RsCA!F@RW9{=J z7e_}4Ut6^3$9TIt<@cQ_(YltRkLj!KwZXAK;whO&Fm9@@qfKvAViRbn6(=1t} zyw+QZrro9mY&9MSs}8%HT6T)815c%BpTB(Zk|p$-dBKZjOrXl6NPX4Tr5Av^l8jds z!*|IR>0ZJ^Xwj24ih)=KPMjUF3h@wT2;zF((TSCPw&-z+C)i@P&m&fAu zHn(i0s))%2u)w%GbBN{HvG%-#kkdi+=swff#w~Ta-FdcCd{B#-HdkYBaS%~^>9iNx*=x?2FH0-pi-^a?qtgRl!Cle%;Ss7>31J85h|@9iQojy-ItYf3W;b;O=c zacIX3m(y@HA>}nJ+-Fjjhj~l%F03yBJ7F#uUW*opST(fybpDYM_jRG>Ua+lE_i;V* z9$Z;?KDgVd41H1LGKW+!R`z20nuFH$y9(pDx>CuedPEge8TZswp(QD19rw?;Q%i!% zZufCo?PD+XuSQlJrD4l`&y1MYyCatZ`yl4-7}*vPcP}PvYr*@p=&i;y%!){wtvH>P zMgCsfqER8MMSBJ%bQMe_jTijowXeBcu;Ka4nmJ5Q$GS;k>fLk}D$8{eJdYnKRd%EE(orh63d8H7^_0b(BK0`^4VlVA!#PV#x=Hf*TM)Ls`p$!gQCj zw?eniDa>1qvtZ-U7uvJop3`9nw585mo=(t3f%B~&+W~Qkcq3o5+ zKd=EYj9r7fW@KIyU^FLYD8^uFUS#NSJ*7BZ(X69Ko0Fr?1~&xo67xa#oXEM2E`M) zwMV|FcqrxPH6UjlBwiDHsGLpv3MXkYvC=}+rA0fj6DGu)=9MR`^*#qvdkS6{>P8w!p@hCaHE>X=*NN~Uz7td0>j}6}0bNNN_M0mquq8SOLPJuW)!&Slx z?0JfTvIaGxO!K&v1vDvl>1;Q|rN@-gF2y96pOKci- z?lbQa2rW(;`Te>PZuwq8>#T1e1q+=k;UkI=r4roD3`xo9Ld`nol87nMu(#knRrm+bWF!*Pg(r8{v{GH2@aDVvR#`*_(YkBtQ9eA?e zGU)2{=@|>(8xIx8SUhovu2SAPL$bB=HC-tx=AQh!9)6@A+0}Q zJ9kwpW$6Q81D;)qd^et6wjfV>grC_ZlnH5T8bbgh!aZOZt0;c1P_jg9DrXm^B9vS_BH#(R`Et zCC5luvvXAC+W39MbE=|B-_n7=DBm;s^WVh@lKcP4s)}2Zhb>K{l^*~xpz|xV&6ZFZ-(Soy`H2sghAmikNd@qugVc2UkdVq_W7~6Md0R%SeLaou9b(Q-b0j z*g{aAJjM;PhP|oeOqAgB<{xR~zc|=xGw=0TeE#@+UdpmVkyWG%1=AMv{6BYMQ*2i9 zLP(X8@sn@QUh$<0iy$B=U>3HX25V>=1qM<+*IJxpGc_}QTwm)3zGwr zY;Vfaf!ZNPhTZ7Qzhr1&kBI;fH6&$J6D5R<&`4Hh`|Md+=GP`d5;8U zP>oHHsl_B8e7vQj+YdE4&{y{4w&gUwcK(n!r#S`Tp z>=5y)0&krn`=!e*-z>2y+GwauU*%!J>q7OZdW+C90o@F#tH2z`iB@Tp>ye46DJRI@ zyiJU%NnnYrMh28DgqOaT7u4uxhG>eA!{2rQDTzywmK*5l=)I^95^%O^o+j^Yub1|K z>Y*KIwm)>44iYt6%ECrfp-!AbIk_JM$Mrgn;@6yn?db_CbELA}v#jtF3Vag+W(TFj3uVQoPWj2EJ_5MM%J<# zdPS{}wqecI(8NN73Fe=ymMayFVk?l^cuQ^Rl4eE>5}RA(qkQpRMA~2+rxc!z@3)^e zjTDvC9@lh6Iyj*eFIEc&F3Rnum4>Y{I;L(AXWekgvp)x@y4Np7@?!|;pE`1Dh^R~^ zM(er ze2aeSfXSsnEnL=(lTy{0A}UD-r^`Qq)p=Lr!rX?oO*PQfE@{Q+Gh4mAVq&guAc*u- zh*#}g+!3D)xpqEI3YIP7*2uqg@2PA__@*qwz3_Vf?}q3TvC&JlpVGM+-@f;|oIq=Z z`qPxlSRtv{p6A+D^O$NJn6=v#V*+{G+3Yoxc4fE-Jy1qMuI#U(Do5cWZVCLz zbmzo*3H-7!rL%H??vitq(hc^JZu&#hM89kN;NbUEdO#jfeX))?Vl&mLDii4jp4VlQ zV6j@5Dc69jpRKXevJAVTSY7sxY(|f>75gcbP}^bLJPW~j^s%-Y9km;dFifqJ#On2_y@hhF9?8;TM(D%AF zwu}yxx|J)b=niOga!s$3xCe`y0|EVTlfkdlaLWM2Rp{+1g{Ud+5;_}{LCt_!GM*&k zL33Hmo*9C;eum5t_5botM(7H#`Q?5h>@=YA>qn-ezO9QJ$k-xnjlidx1;cMPPBD7? zDJmhwS)429S@#a_>(H^ySi*{Nq{Oz1{8Nqm&bx-JLqyd$>ZSkV@$S)*$z?;|vDX7S znq7F(rQC)eCFQ&9W_)KIY=LN;Gqc(i{;-k_V-_fGGJ$Doo9nvP2$(b}2bbW7sx2!Q z!^~j%8t+H-82cWJmHA{>qlVu?!^-Y1@;jU7vO}{g>o{@!pT^+}s!xkdjk}wT?Bx9k zskA`SdwDy}AtW%Y8UcNT7Zf2|&BLgdxp~pF&y`x7L`He2HcC5|4vNBr6jNIQIzlO= z3TscuhrOU*Ev*_TnerIjgPaqgIM7Lp>MLiWkqm^@WXhwl58ksZ&li^zqI9#)4VoA+ zCM!F!_#+xYs+{Ju_tVo(WwH9iw3DmUKnT^U+iuZ5mnv0Xjs=MwrB|$;9l429jSMT6 z##!+eY!|60Ivf-aFv&>d(rO4Bl@=X9(juh?xYL2ig_4Un`p7~ssVS!Viht5u#3sQj zfk@*Y(<`FGAe)pwibNj>F~dSZEi(}qLoecq6v=vbt%nfF4|y*JOs0~F z=B=YS9q5EN*}qU2BFk2B<{rX5RdbjtQOT031uo7f5l#$f9#=kxPB<5(I%PN<=XCDo zkEv7T=9W66@|eaM*qyt;4N3H!zZ$B`Rhrew@+Qni<0$3D)n7I5Myy3cL#*y<2rd(| z4aj`Uwr3u&FTH8_{hRLY5jCtW{w6z-D3KAxVFa(TWq7slQMqyi0f! z`)_F;#uy3G^#E7KM=eUxFOIy& zKb8^Hx*vJa48|0Xd;jKA5X4T7O?Z?8brCiJ+feYz4$66{rLVSk?iZb0klBF^$;)${ zL~A7~1oS7yl{Tg{YWeHRWa?R;M?Nuo@vV8Bd@LXq=*n4eTMaoOA6fWX`L$CUhp^r; z!o#0! zF11=}i$t?}jUCOESbZIuA|IMb*Ncw^HdbWcAlt4 z9L%q&4NP^IMqxq)PL==UGC`w(v-|A`fUpc51k3g5!d(I_Q1NLFeMFL9-Hs2>8f!ab zz0GyWAW=pJks;1q913Ev4Iu7eZo*w>fVfHr&J7u4jC9h}THt5Sg>s6|wXrZ2{VCN5 zQ*dkkR92uEj69v%c-wzR8Lhq>1 zsEv0Lex@@%3UW8|SLznKRA&C$+@i_2@LVX*0F4xc>yBX3ln6zrj3 zB{Z5?Ufsgw>spn;DX2so+6G9_A|p60ut*Ws?uymFtVlURdUU{bq>9kL35Q5wa9!1;*ezrh<42cPD-cZ_`pOEt>5=v$k3J^eFAYv=_mCwvdGBmk*XN_#pJYF7K>lSrP zPH!mJR%&vH??#K`vm`wL)ORENSbztAS$8;V(!ylm_14UwefIQ47z0l9fGWC~-qi6e zDsN@Y4K?wWHS2;w#I$r{K4Buwg<7O(&1Q0AVZ3U&g%q_6k>S}SRKK%Ba-Mx^exCjysz2EsJnxxtb@0dy^ zlT4)rcmeZpIO;Z>ro-StR1szZBkB?7TKA7X(s9+^(Sy(fdW%};!uQkwteA^M5>mIu z1ly3x7Q*OV(tCPBlJdOM2?kQs50a6+al*@qL7Wj0g&}|s`miK{k^tarSOo|Sjjcy&h$TvMs))Nb2myUKq_J{B*N-!OZz{TWi;JrwQlV zyz`Dbdd+1G_0x9x+?j?TD8Ft(O`S2v9_|3$#i9|zQ*mO~$XvOwtzm!ox`s9O;SPy8 zxPWJvK+UsT)E!C(%hlJk@k;y2m35lggLL}b=sg^nuCM64-PMk5kbkR@KX6x;f2g^T z9Xi$PUER+8pF>ze^ve*O)w1mmwchK-KNCc|)%S9@9*6sRtIt_U>zq`~lC^IRyoeO` z2lW~aU`|L?*gf0dV$qc=utx_h^b|u%X=Yy96-g!&wuV^(IbxLP{}V8ok#}Kjl!<-j zEIoDh?78P`Y}|x_lCG6QbHdMuYJ~U@588mHyEq2m`dK1Yw0cDbiDlP&Qlfbp!}bGt z`OkcZ9`!;S3m8ZY!Ge}=1W!|_k-BnITy}qsH@&|}eyKDId|;vlr29CPKg_(^mk7_MoPj1HMr077jH6EF<`ykZ;jY#3>mM?3B9 zUj#y1o_JVV6KggVdN2>lxCwN{IC{&?i*z)!l9{Va1s;i$kYi)+Jx@P7{uI^xQ-cW@ zGt?FUcQGtfMm7fUEn5lWWu=&iI^0vDThFj*e!p$MCB9`vP5}XlG|T^oJoz>AQIAUv;wWWRhJ%9>R6Rq#Aagi; z6o#?_4r8DzhFAD9oi*OfuF} z)&>$~vOnOh**(-+`JiE-8G9u@6wfkLohT!$HPQZDaEZf@yA<6$FeZoP3Q8OiQ$+R| zhG_fl&Q4_MlpC45R@6I-1KZthguvlS!4VW9XPnnal&-m99I+eX{b601BgkZ=PUK27 z(4sKhbt>?^j0ACh*6SqnPD{rHQSfh*Ei3j#OB$ruQ6;q+YTM<;>FAMrs==M@u$qs_w-fl zXc`j@F!z_+A%H!3B^amPAE^`od{n$QS{!vV?fb^(7h7dMy+t58hI2sPXFUiXE_*YRv=AIyStG5wcKJ&hbmu{UGN5n2ee z!ZYb!=rgCRkniuZBY=^8U(M4GLnlpA)~Jjo*3FlbxO*-CHa?9;1`}6feR{IH1{16x z(WFs$amnV|B_dzve9b?q&u2Eb^PR!TZTQ>G&G~Xvnz7S7Nf7zJvXe8o!8gfDa7}G}gOc}y`Ga?5+0Xs%gZ}K+;`)2c zB;vbKdhzFksK-wN20@ zsSWrqjJ*zcQC$`#S}x8HOkuWb>CpIE-KlILR~WtFoJ%ll!@;SG<8$QeW1DYm*B1OK z=~qkDdI{e6Grr#9{J=|tOZezsOV~L;bTz)kFu$x1V}a)OjzL722~`Eg0hrPKuzPc0 zc-TaU3>xFkfiw^S9mAyg4u~ z1fH&+Og_xj9Jj~MZI%H>hVjch3U$dCDNnbGUpZ_n+A#=`Jtnym()hKLRG`{>lAVxe zXSJzXEt>?_;cGYqixXFhHrpFGWeVm$)BJz3lkZMC{Kf7X#?(f>>yx1>SGGU5ewn0? z4a`wX&PV)}?}w3JWq2t)1P3Frt*XfoL@LLV^JTRaM4c;pZx&S}a3-2w#PqOPe*YGe zxO$U6elQ<}{roaJKdV%aIn<2Oip=-;ta-BhnrtlPiRIbML84*xKdnpc@+oQLRyk!? zLYAC05?TACBeU_c@1Z5?u9_JO6OrQ%m7t^v(|6=`#kQ0Ll>Cw-@H^th)`=j3&ml|w zK1LQ$wvIL#8m`e1q}RIn581;sZD^XVBHFE^aVRot3De^3u`oAGeO+ZE3*1H(7Xjcn z`;J^jS{o}Q~UFDA>*YB42on|HOoC}~^XL#0}V z91pm3kx@nViq<2gpEapBV|v)U;cmVm-;iCpsiDZ9IGB&$)i}!hxc{JhI2L!j%)KIS zDtVbC?^Y2`Za7Pj(dihok{hYWUT#|(eq{paUMNMGZ4I_?xRAMFBNC!&JrN?x3-^YW zUTN8OdNQmu;=po~aL#sNR+7hC>PVp$)zf5kUiE7V-3vw(b_vV0?Gu$};{(#Cy5Lv$sVZKicPtSA$Ozs{B47Z& zwAJ>B*LoYB-M86)_}H<>CLejH@-^oeyjqC`JjvjQWGc0gI9>Sc!Qvk`NKe8 z1d3g(`jRX5g{?B>QSkJm#~!hCm?C?rt$Gdviv!GyG|D=jsaJ{p{aO@(4b%1eeN*js z__$wxEiV~bO|>7Jw59y;wY+kMk~rlagO5|~#~-s7v-9MaM5=_`nGkFbSe7UH;)^d9 zeJ*ds*KuWI`2)*#(;)Wlwb~tna`>zL^SC^$AoFH#JWyktrhVfZ*B2gsXa4A2|8F)X zD`?Jqpw}omJeWTY-~UC{lE#_a{~JvhfP`^IC5Mm$jmi9(@*@OG?enxiUgXam%%8w* z_Sxot${K%`Z|4^ee7@N}e_FQy!32MYTk&S)liT=W^DFsD`*@Zs=fX$(rDp56eKvP9 zKKavTYr;MWuf(4(}Sb4$j zrS7&m^?Zvjzui33QiP{@1T-|K*y>%BydajhHq_dT{l*t*ujGg+Y*9?Qudp|7u7<`T z`{%n1Np_$6Af0S$DV4>^D&sv~JFH$Xy^W9Of7R68@H1sADlp!C7)c=yuaG})LJsc0 zB5jSasPJEs3yB1zAieRR)3c=n(?!UaPUvr$x6mq;I<(D=_JJei1K!;j24t=O1gm1w zqE-gC>Fdj_4;qHelY-E@ZVjAhCSYIATlA>k7`wT!Iv=2G{dM!uD;E4Qk*3IEvJ z;YL=y`fs(TQ-e3|XMd>OsSQX^n|J$h6(@Zm`qI*yKx3&3Uxu{?J%0;4qU{ApAwMjk)+FYD{`wD|Vi$c!gvfkqc;8(V+@p zl3oal+Nho4XJQ}Xmpo)$@ z5&(Q0Y3Q-av0Ovg2`hy*WJyUL_Dw|+HD*yxP<%QDC~*?~O>jtarXw!6t#q!Q7NS|J z1;w1P0(an)Ab>iz)aV%&Gd1P0K}v?GSl{sMpQ))NT2Ly9KBUjb+MV?lhVa z{F9I%D~(VMm1(%VlvCYg;r>(ht7hZFCGXN|(>H<>k+hIP7t+Tx<4)|hkz`pbA8!50 z-h;sWQ`i9xBEeT=oal^4cU)$5;v0nvlp7jhWhuC(^Oo#Z!h%p2Yrq$+>cGXi z9P~9vc8b(x{YZ)V94*sP<~%zgaXo5L7%ePSgan*(GdPSxJ1>WjW*xcf$|kzt z2kD9iLJ0G)IBto2Fh18%vXAHZ-_F4%2` z#L%R@NeL~#fc7HQ22*|x>`rfZF}`6Ic@1GAxPLhgdO~u4R``o2#4fz%qHp=>Z! zVyM(ckNJcX%Q{Q@6%s^9@f6aNO4BWf-PT)H8G0PcJxC zwRt65qy{*$Mr{T`CGiq_^n;EVY#rm$(kBMTR&sKLR}6o6(3nJ|u;KkfDk#ka*OIni zP)c{DMOKIWP_=#Z|3qdr-GJfxwt2NAl=?#*M3h=6MIIheG}yDi*x4H&>If&*5lxcy z08ezW(psp^>=k&$nH0f!&-w=0X-J{Q3G&E|rsiL?&l;sUf*JGm)Hy*L8L!9u>aslpfurA-E(@~R7^vLIOFR3;$->r zyx&)tJvyw^ox}?DTKPy^Y3K%0T)qZ`Fr(qZQ2hsVXqIK{YF>M3o4Pz&1zW-O!V)Bj zhUY@o_vUF`?xNwaMJ{5ZPBH4iUm;3|te~=GRmZMhyc}y#u6*a!6eI-)v}(GvOEU$S zp?Z`aC;QswFV1&8=g%$!*%QMO5DH;de?od-ZP8nsubvrxZuro0xha9C93dSqkGX&l{^^Mzf8iFU z4O=JU(P==AymD-w?QZ^M4fsa&CLNiDmlJD2@Wy6kscEB@tCBFywH%4nfRL?H?}HNZ ztybQ5RlDfh+9G(SBLFUT{@Bp7e7U=VTWoRn)X&??y;}kBlc`&SZaCZ<+%6Nk!%cvj zHeyq!7ycg5)%!pPe2GS5D1JeLIwMQ66w_6w8NcpRTB|t=OyE@~q<2c>m7edb)vR@JRfSjgS;yF*4HeSw@E*4cdGTtn!JZ)^xuYJQ)8Nm$r{%YQ^$!@8_*d)EDj_Oa7k=!=*sBgWVx7mbIbR$)!_yi zBJ$gG(KhU!TCm2yWCp7Q6eX4~hND5NfUL_#_~C^tCKgxU&l12MS`##mmfa?;^|xvG z%!J?(m=Zje*Sy+3jB(qOzTc-Mw|KgvQE@X~onNALDrDjfnD?H4Yj_AkwvFjF zTH=BCH^v(z-KG^*&pHKJ5JZ)-#xIW}BV8l2ODVJ88*Us+S4pStSd|?207_hwM`U=Q zL6|TF20eJabTLt}p{whSL&l6+9~vgdFDxv)?21(l52I--JN}mkupM|Td{l;WP zGDz;$$A=sLYdKQoL$rt0(9pe}Vn*>^ab_#^SDUvMd?fmPVtDAe3NtD0TpP5#wos1hl$m|;fI1DO zG0P25%2Lz7E!V`XW2a0Ti6rzj)rcpM_=I-bhBR4(PH};gRee@ze#uwyv3p2LOA}UP zD~6IDuj5HLAAKXPuTLudmY|!-v3~ZG149?=$n-I>HUIbx9>KFXnaOYJt_UwUz2Ico zHx4xD3LM|H{X3~lSE-oCKP%JCAZu)FY+;4V)4h3G_JiTZMB8ptcW=@MOJMhZoeups z!;Mb+ta7*r5ccJR0iD82AKenv16U_ukx6~MH+o2=a4%HR_Do|U(UYED8>Itk33_Kj z2^+?pI6(xjwRB;!Vsk`Iv!7Hf-?hweQbjR_XAGCG!0I+%32i1gQ$2fqKJl2!Wj=I% z-~r=UcON`aGGJ%E{{e2*eoNw3;P`&*$|u$L^0;%(5+oOn>41P5^mq@v@f4*G4YH)lDol#o_CsgrQbM`9~mRPT* zjp0p&kdP$2W`T=4NsIR&XCW3{E1kCng+d zB+l^Lukv3Ej{$)co)N$Iljra`Jugu*01s}Z93=G8U&a=h#7ndyt zi2NY}1koA>2(kU7++ajtSeP?5o=5%)PlcuC1950pOVC1>`v^YjwG4PEu!-m~O&Sch z^!ijNRZBQX8XDc|R9^;h?b&)Rm_{+d0%M-*lU%R zrT0welvbPRSHMWwbdCsS})R9QtvyfEf|P}DmCSWIFE&}I%}N*k=`e% zS#PG;S@~Kq;o&`J`a_3-8&ytkx$lrI`+@r&yzkJ@l)eHgdCy69O%kKYB z@J2pSAT;0!PtQw=315Wi*67(hN(}fRn4PYDu=adXxnStlUsIEHe6~(<+G&*Z`Bk}& zHB|Ynct4?0$SC{+@4X~G_P%H9;CDZY?hb6W1d7Q$j^hZvlzq=5#8)B(_hOG|b zWOkoOnem-`9O5kH=|oN{nX>Hh%Yg=P65PA%p&{G{glY3mEwzhvj{HA zq=&AIBBZ8m79&p*@L#;%g=MuaP+Op%%OWy}K6~|WIA4V%i4LE z%%^6O(I*)>_1niNBL3}1#@akBXkYb<*FSn(!k^>^&l z>fd(XZLMDTc3Z2jYd>#5tN+W<`)(`s$kpN>p;G_LU8=F`^vFM0(Y`9ZM5aCRUz$RH zJVctxr7>8uiN+tBvur;}=gl8T?K_G>gK%|^pTw&b=7nb|$wz1X6e3;ga)mM`jRHl< zk6A>nXeoZGqeBMSc@Pl}o8GSf%dnK@bdEa84eFUTRPtpaOAKzUcMWG8rW~tCGG=>R zQqRS288_gNeL+P#t&~AzG+O-2{AVifAcjGSyd?C%kP@W*DWZmH*lGvu`be6 zBAZd33X8=HyphIa&!nnGg!lH3$l=mOBc-C5Hr|bn&gy)X20;hFC`?L#?sc%ZED7zj z-jR~GxlY3Zm;Vdvq`ax$mOG)?%pw+`yhFN^nwg6ur@B{q=s$-i2OO2z_*Luk1=9h0Bk%4&<#~-75k51O$qFk_DHl>Qofbv3_TA#{Z?sEO_u_aWl9&| zU*ipGsS^8B`G7O%6ZxZWj@$r!2LY#UgT4QvJwo_$UW-SFL;26ZAN13jJIK*e+)cRd zR+?4$!vgno4ejC8GCSb)xQ1ShywV-MpRP*$XwD$?}|RgmALy0ey&2^BxeC zR3}aFM5(%%+eIA^G^SR{A@s=B1~3X}d6bwQL7P{PbJx47VXhVAawdJiU{q@=(4IX# zec^00Fy#^k>c$DDYAFP&xha8|@&Is-c&pRJ<4@ez{9}3?S@Mwv^$o}Sbs(u{Tzz)C z9D&n{M>o3Me^|}RMLVRq=pX2}MF=34_yjFcKcfWuePBaT1D^jS@{k39lt}2*`3Ov@(8u1cX z>0Cq2t(%+QYc^>X(3-g~JLBI_PdFd7F7*d4-j_x7th>@w_{*b>RPuW`eeJCW%CG&` z*5NE0v$(YfA%-rL1Z4J&IiqQqMNr(&p-w1L@4WfY9{s7@b6RwE_n2}IyaxSxeNa94 zFk9UME%zUfLU_Rz(oc7S`LlKhU)z~Lzc?=1BlSEg+?r!n*W_O3M(bbo*Vm3eci+(- zy#Q73)b3n%n^B`(?krxvUm5}u_e_@-Fm({2vghOWD*R; z2<9`W#u_&pL(7ZryAQTp%gm{tE1_~dmuka890+GN$63ZcODIK%+_Z<=on@8A;}BMe zi=Vaqh~o>y<-sC?tdBzl>b<8A^qL_XVDCfss@^2L0*yG*!9q6!XaG7vsvB*WwMSZ^FmdHs?*1w8Y` z)D>T1>eT^4C}=nv~UN788Cf^E&B%*1fOAX(u^d0<=2e$UiNE z;#}hcY3)y0K6-UKQT*-UiEW2IWCq@%n*2CMgW208!KRK*1-^p532qPRKeH)WU_ vI0hV!l|Ej0N56 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 diff --git a/artifacts/polkadot_metadata_small.scale b/artifacts/polkadot_metadata_small.scale index 1a58319a8ea91d88652ec42c68b47cd4eafdb3bf..7f9abf73c727429b633efc7939d8452e37fb8217 100644 GIT binary patch literal 90484 zcmeFa4`5`+c^@{jcsTA!ptZC>8?-^|(E_Cfy|=<0K?(R7>kLRNH*DujaZAR*;0+zn5o!`v6M&-8H=q{TeX-< ziIm8#RExFbmI_Lb73;OIRSg#~shnqXw zK^U*=jUJMBdPJpkYNHVZBifcJ?KgrjXq*j7@xqafM*WVU7B3p!s1!ECQJr2m-)t0) z(1TJVfZ{SW+6RiZs-7Crsn-4jQ%Yf?2bCHdnlw|~+TN}=ntrJqZWo%xt=W~JF>ih! zt`x%1^VW1)4e60uy-_Vx(%M^7I#b^c8ii)LUb7`*)j|zZRd4KY4V4~B0|U+l<;|^T zI41w*&K?-Kl}oVJH1>^Lvs?`_dZ=~dq|#|DO?@L5mhZ4dDx=h%2{i$b_o&I_%yy$( zEjP<&gB(wEYVp7gH+EqY#+XQ|nH2Tkz?!3n(aoS1G|I)1Qh757n-^Vsado#ujVh%N;;~q^l*Bm5uA|Tl4?=U9|raXK)`UJwpp$POC_bI z^eA=HntF%YqsCl?T~zl}YBeZSc2N^pdAzw5G`x6kN|g*~3$?T5M!i-AnxEXpas?&Y za*No1*n{}Fj8U(sm5%+la2EAX1lZ1{q_?2gfDx0xh~e$6LKu8l53kU_n1g`ot!ZyT z>5*oAyIc%EqDN@RYnafrO0yi6H$C-!SHEh?y6V44sZ&F36lg@c7-m4QA(S4SrJY!= zh2`REtB9>1dV13Cpb-ix?xQ6<0@?1LtNDTb$}iTd+n^mm$q%K0jaH?ylbvzx z9x0S7K`E)HT(d!=QEzPNN!#uMJ*$iKtG$)BemA(;Z02yi6j&Tccq{qoA`0^UxkBi- z1U0hhW5GE?w>>>t5DKpJ#M<<=JtvSCIob%0lZlTx+2)VM8?<#{pmM+?e=bZwO z@fOg)HW~ost`-_+XdXtepFp=e``0O8-`1oa1yqapr3St2<2Aot+gIEwlxv_e)PTQL z*xm*aC}rnQZf`aUrC_er+^RP~YtS@!MJdR2w4*1BTS4(m?kso(2%WD}>-Bm??ZJ3! zm?Cb32U~D0WxZ`i5r3oJ@UabjL1|ymC;Q%hM7IM|Kx~CzrnRM)dbmi$I3F!O6KAE- z_D-1F2!fJMt>C9p`F_1PyfL2+jT~c=jt!ML9?^59)!0!>%vA!!qhEv4p-v9n7NB31 zJXXiIYAYF|ysl4!t5ZUrPrB)^IR7Gdx zr+h!4n6MICC&Vb%%C$|151C{270cGa-DcP7b&Oz#NGwYLptr+o^)o@uQ`P;Qd1}D_2#j9bFNaUpF{P_m8!%it!>EQl*45p{`sU% zwx)>6(ym|BA7uII=-jE?(c|+cmltviCr%tcky|)+`1t(7d~S8=-3t({w&U%_N3PSe zM_RQ~7>5jta=cdAu~UgfnK%>x#G{z!YO9KMF^hJXx3?Nl6DMnDYV~uqxiAcxScs7$ zEV^I~Fyv4~3k-0Nnw8a-4;Sl|lDbSyVhR?{V^@}VUXp6`P^DhPURQgSY9=SazYA`0 zx)w$cjh!TVumJ#pPX2N1Q~s^h)O`6YsC~V5Xy@HQqfR({K0Xh<)=wuVmPxoc5frfP z!L8NkvHEghhX{^RcXkO`Z7d-Pmf$TZeQI=}R-z?M_9d4Zj3o%H#5e+MoSrt^3@qZQ z4k~EqsDBPP>WB4e;M3Q>kvFscJn(I~9yTw~-$4WMPK!ICekdXfT zN<9p-KJS^0pfN;JaJ||^#*2c8eMput5*HT-bws{}@(qxQh7tI(?1Q7lkW#ZYarTi%CqZdn%vCB194{~9% z&}@Zw>ycIdq4p$?>MnR=^FmzH!0FdFn2Bzb8)4H42Y{XGgb+t-C0m;P@)2}c@e7Sj z5d2ybC|D{NF`SSq#{hCGLmEVO)L`$WO!#Hqmw5oPuNZAgvInqx(m{4JE9^hw8a~)_ zIG*)y#V#&23g<4Rx1@Kq%vY>Cq6XAX4XX%LqUo@r(}nsUU4;k%+IA`3@AY(7_m)yz zpz~@uTo1MiXUp}*cyJ15UKvT(`kNiu)T%g?!)W<)n)Zz(&n6o#z;-}R(|Z}9f%wR#g9vW#kE z8sV?YHR5L>1_&CP7lh7dd}eaQHwyH#g!#Y{V>%2CEoH|r4@HuJ`t_IcuI<%dDY#gF zrC`0Qw~=KQLM~;_uki9+G)+XAtbej5zb>V{ANRJp+H0A1vPQZLdFw#lYiGQA2pVI1(UsmO*FebfZ7qmC z3T>(wuzKu6r>kv(-FtU(W!ARxeo$*wg1 zy}f3C&#>@)tW{kP8dx~kY~G>trGl%y&&|1SxhA?8qE0t!^Z`{;$o6&TR7^L8nq@Du|wex!67^qqe9LWtLJF$TPk zT^MKs)^4`beK5X?t=l5vn8O?|6GI)Hg2Fno#a7;wj=zEG%6e=H=3Y7k_@Fl;vkUD> z-w(UumQE&*pYhcF*n(;ZYPF}f6m3Biz&!ckcB`bdIu1<%=_@SO38`N)KNWN3vCFN^^<2TM<_v|Shi?vAXq z)+^;A!Q<(fpmgAd8}=WZp0=f*NDiGZR_AXKi&0PlCoz2wC2u+4sZZ+pvj?W98AYOZ zDtXKGo_ZeduJ3#|fOnIg`i`DBJ2^e=KEZ5!GDTe_&mNfM1p$xYo+jJd##)SS7aEX= zLt{Q50Scz@dgD`i>=#=#wraq5^Qqp=#j5DB)MC&e@|Zle-&4P(efv3PHhJnmvaP7? zA%XYT549Ebf54DWO{V(4@BhZbmp2Uef4|E&gJ|Z)kzH2aWwkwM^X;R%to%xbLdXw+4kXhhT4ktSV&6C$3n7RG{SSn6_$i{YftIRgAv6V^-?UtK6=&D@$ydF7JFYVAwq_A(BU(`N5 zV>X*~Q1cXy!&2%qLuTv8CoVNKSKGnn96pAF)6(u>(aK+`SI!hlb#OQ}@~&1`s1`5{ z>bHlM*JThm!vzl$DlvNwgUi_$XM^HY`)G-dC%si7j#JUO&u4MCG)z=OeGbr%sLxyI z-AL1^lc39&4EwNI41-?@GQg7jfa5`oVQeiZZq;A|r~sVIag6I4#nGbyNlrKh z8s>v;0~MzD2zCP5fg!Nh>Q!4lTneJ6gqojgE~Bd^Y_D`2d*SK>YVj!aL`d$nUDXG> zcs`W@PQ$pqnPawb{VQb~Uv6U?Up7?W`Y}rd!u~AdE8Q$3UZmm=hGoQy+TOQ47?!cS z%57g7mhlR{Y-`4_j32d`wl)pRcvahM>%g##*RF%M-ax&+Vv(g6%Sc}W%lHF5f1Hn2 zW*p~$uCja9(fj+|v5?;1zRIiw5_Bb~Z8o=z(8f+EalUwAF7k~IF7mB5E;94ZN*$&Z z=YQa-ug6(1DBT};BQn3_`|)+?#qhZy8kZuY1gf)8{`IcajI*Q6*r6R_jbRyQ^l`}H zwsL3(`sJCVo>+&}dL{?m9fWhjI)O+boyEpK>&L1_Z-s3O7CI35krV7*0Qx?1tNhxd z`~?_C8$qjzwpbj=l}koQxJ+dZm77JV!8oc5Kq4)gIIxWLxVv-Nx%q!aaz^#or*jC)QH36Su; zn1KOUet_kd(@&^7_<05W^!VqM^mCAZUPV9m@XxF1=Vko!8v2Rtg3qqS&p}U(>rUsk zjPX_@LoN(o&bMu!){pBjsBBD6lY7HsEdtOv1$F}rl;Gh zOix>fu-8pbQ~TsSLI0A~RveBpe#}{p4Ru)W>b9qD()!b{W%pzgt|ofIf(Zbg9Dzj`*csg z#uQ->A7o@;0Vj7koa@Ptn9r&j+B#Y|gOhjiZ|HEZ%c}ce@1{dLYY3+!z5p&cIOv0y z9Td-eb_(7Vxh?qh<+clO!-b~I|60k<`#yX(_%K@}LORgl3NTr6@vXr+`59H$D`+}$ zWPNMsQ=?h91T?XGN&&oj>7N+r39sbZhNogf{B+@hSqif6wV&naSRGC)Id=O4c%7{b zq^{EanqdzeeC(GXP~s%BwgY(+-h-iaV%UV~q2}kQ%Y0Vdtl|3nQgutA(h4AH;FJ+F&g;ol2v+k|cH#`6h}uZORu&%A+BZ!=67ibk+!_Cz9Rh3v z8E#-3PTpm>u8qi#DLsV#;XWI-)~Q8fs^62kLUUsnp@qN~kj!XNS!N5=rO~80fsfVBUw7TH<7*4k*Inn|N(bsd6}WCvMe@1x1r_OhnGfhnf!`7jkqG4sWIoyO z8aHYBR9g4X!OfyUjlx}prkorRiba_3n$!(er`V!{d+tsAH{F@!hOv=m=Vel zKo5FswadIm`ffGgR>=?GsYctY*38a3_tTugAg{MS>)upBJEvE2p)l2X9A+LFKluI6Y_e#}@(yhhG2E^cig0ca%E8+{ENlc#yZbXVi?`|E zJh*Sg?03Q_-mNuQY6+WQB^M-w`4uRJ1+^~{F$4SHG!3b@mOetf3^AE+waonUO{ z)sh<;K#$Ot0lc8K47+x54kLE!Trn45L4R>y0`ep zYeY9Nuw~n({2O-4u_wiwpncBcl$6id?W|+cZqslW!-UiJH+01e5nL#LyasxDm?%70 zOKqdPNwfi`TmzOR0)DlygZnmEy(Z`ePxBQ_XUL0QID}<+j1g=R0qOD!O%U>Jc326? zNfjQ_JT$YBvnoFa`YALHNQ;4ko{~Fi*1KH8-qU1E!<@mbwg4wN_b#)YfgvBwSWac<0KJ@7Tyq;68wzdE}YS0 z@OnK8IRY0y)bbi}AzC8PQj(B-Y9y;p>WG+xV9XV`4F#B(v+&>m1w0R{I#YM-KN<+n zQr2HGyK}n$<3DDM8{Q!2Ky&K*Jl|T$IL1m`l}1;4D>=6U|7;HsU}P2;nmIs&*|x*; zBZxNH8Jhh4fzmV#pg$bnz*t~4BQc1|jQ1YlR(S&i6Xjd)$zx4`C723vuwJ2q*;4*= zR(+N_vtqvGS|BB8%i?zxuD>)PIWo@WNTlHDav$-10TLT>&Y3?)q~2@^@Q=*^jMT|% zM#wVLcnBb$0|wm;#Ka`>Mq!=@xa8)_d7N1}{>GDta}TVMxKN;7c80g#ptRnC7Y_s( z?C|#sN)t5VH^G#%j)`iploMvvyI?l9d$bUZuS{ zr=8!D@uLglThe;0`ztu@s)g{&&M~dXm2hzfX6F>S%r0oXVvk?p%Rm=3j&IOqE(h!F{IcFL5 zE-#2jUce-!@#=w`29U8E*()s1ke49LrYG7A;=WEh5_n}@*nQ)_>%*a{U=a9ISY)bZ zAtM@&Js~g)WY~Pb9lE6iYuy^&y1i$_%-$O|zgpge$7+O_^py#-HJu&BPhJNfE6{i;lZ@{oNeE6xVlt!B0IW?Vqps+Y1B zwh8-#cI8EO4C*z5Mm#i7Nk|+HotfPm!Vr0p6B&>1%-b|8Qz8#L@ud#` z1uKhSE#QxDJ93yy&F8EGFJ1m1wp9&4X?Pt9niOO@{Rv7L+HmY`nIRdc$F>ap^tmlk zo}*!c+%o32KxH#-A%S_PwFQR!sG0eqrUe~OAqAQ+xR6=UwDwiL z&{D%~I~q3_J)AT|2D6j_T{;Dk1_}L_%s$v6Ozq$ykg=R+){q^P1kGYLn^nKvi;6HI z0+`HW?H&{wl2soAUnEkUC#8kxQL(&Dm)ITFnx)C!MjSLYfz$q+Pxl$ICNz{1ZlX5e z{Qv<==w93I0=>2O1Fhgg#FfO$quRH9VU|m>H|=CVtb%(tc%~HtEWI{l6di+Dn3+y* zfK3NjPSTkC2&veL1i1$yx1mYc$bcJ6lZaCfgaJlum5W<~7n>~@-{A9xWvYMF_h}0F zyADv8F!^chOk9hZ5jyOy(TJ~ge=6M5O?q(XQ|?BOSV`LUTY>a6h^;%M4HY5pR>*?J zdkb^IJCPCi#PQ>6*;ymv=giE)Iz|54M{%k`1{p}xb26n%C7c5J+b7NS)IvmwEhcAG z6PO?*9a!Up55twR_v0;^HV9=`QdY`90fu){^Oj}~eXanS&U4CpPrO~|&I{p^TPxrS z6XpFAj-=Yb;QBD#;lcvVX^h?V;-_K5!P%?K9w;@$DC&u^#@52w1uy|pC2pr$9v(OIk-r=XDuB=%5Ee#UR{SY^{NO8r6J6G7rsvq=5OeY2u zDySCnB9i>X*8vG5K$y@wtesufJ{xl}M2AbznfKhUj*{xEptW_0=@LYw_kt$^X|kRfV`Q{#m}jMIf!wxxj8 zTehk-&tfzRkvB_qHrrE0xEJC^C7CODo4EmDTof!KdmkX8F&Q9u5`?ZaCI>DC@ zNYo))D&~V2J8BWzvoi{^iIv11g-(_EDt$ctZvW@}!!!bjApX0lA^KEYi!9gXu1Wnp z42!$92Y`CO+)ctx7Ki}Y6B^nub$kd_5H?)ixhS) z>v07Iy5_EtPN%Dd^Csj>I*Od|(UbZFxqm{yi6Iu5)7&H)mQqDn2y;Kr2}Jk~b|f-+ z&@E@D=zz6-UltV$03KdI6LjAVG(YcV$%p>Ws%j7911k{ICRT=INO*&`Hn&*Iti|BM za?t{1ade014n*FkVSAA4riTh41?(W@1zZzYz*4jba9C=y+UEAG*-;r-tXttt(6}uD z$cs_SwR(hAQJ5uQNkbEj0L%dDDkKxgun@z-2s(+W0lQ0M62;MNl2^7%$tn{AO9Wb( z)#!A_ZY0R`)*5Da0ww`v*m4ZF+eULg^5)0D4C2THRBVqh-9X(Xxdii1mf0N(TwvqNIpdZrw1X(pxJY)pqFq-T%@MaBLGEO1Zt#3l+aVD?+woyK|N$4wM zG|BJB!W_q1G|rX7;G_nvG$DLgmoIJ~*p7L668&^s1wGhZ>5 zlnwI3w`{~HjM$BNmUF;G7tF;oT!Q4|zz)Od3ij0T^eXrO^8(E7cs~32eYp5bG>;9` zBCYN-^aGn2N1yJ&s(o4Fp~s;fZX*f}riF-Aq!dDDBh3+R^o=H1As8w53Tv&fp8P5+ z?1a8vN2#c6Z2x*m{#3Vv$*l zPoqb~8>7|0N8{P=@AH@5c6=H}VzxokLXBgTEnb`b*wL^;LyYEPoanhFV*^8woiIT1 zx>xqG0U&rb1=?&ET(W!#abXdM+QJD+vhRAlJ4ilvhVNe8r& z?klv!{70eVohFUaX;sF8kD4l;VyW96b=sD$Q6y4=ua7a5198 zeK=^70C9xRKNvKXfGQt%>830V30)8$6{{ygu z)A8FO9v29+3~L76NGw_op+nXpM70UOq_t@6^HQ)%+8tT+aDId!zL-q>CjWTMcL4h; zT2Ts-&STM3T^wtvH6n|X9682UD0M2eNOuJ>x{{vcY!*dTF>ImiJHpK~Y&)ROzEW)Bc#X#af zHg^`cAj0RcF=!fjVNg1U4+$Z02!YD;(TK3X2(}RJYUUs4JAzVQ;AAXGorXt6u>ol7 zjR&cPH%EV~b)h6RK%j@nbeW#xx(i;tp# zOyDX*VTTAjdYjbVqQZq{gytZ`e^_gT8u1|bCJ^I<9Hz}iH}#_J^Ktka*q$N;LQVzn4yIg_+I+JT>zV9u+|Q%Y?gK>RC@u8r zAwATL=(puVxrmY@Gk^*FAJS~ZcEZDbcfy379^A6)h}+~gfsNbr@!hquyY2MoC5*-r zqqgbrl$}QPSYPDniEW;DOsA0QVWzbW=iO2czStpMwR#*x@gx@=H6=AW4)AUfdTR!OJv&DHi81b3t$pHBBugk=F>(Pg6Je5T zZ7>?zrl+;J8X)?A9q&Iy?Y?q)U6o_WZ<3KdH zvg9%lJaNg5JgKFXPsdt$QYZ5cSt-Lw3{RKAVi}}GjKNHw2aMGZ;l8*YbKY5YSF`Xn zr77H4*ep#?GY273NI4?Zr->LpsnyeM0^u{=_j;c}Mf^Q;35aKzi&-<;QZd&C_3R}y z6|HYaBhL~1U(o6ceUW&XF{hp6Banx`1SuUS=(sD{hhZZe1R{rDxDLE4zC;kbpw$cg zA?PKHLDrZmT6V^i>qT6ibJUuN7Ot>iD`EOldSX?68EHd=DW?8k)%shsoJbYIGN2Rr zGQQa}^#*?xdv%0rx7&61?Qtd2le^339))n*6vo2uyW?v94(1#v&YmNR`{(!|}mE%8C zq$@jWidGLn9PbS1_C-R?&Y9E3!zAaU24XPW*IC9VYPe9~))|pYzD*np3+T#d?I}hB z-e8Jf)EIR?-Q&WO;l&4~zNeFmZ7~PKO1&A*FOb`ZiFdIA>3kz;M1E*7L{?rVT?Y1U zM6iO=@UoE=QuOf;wN9<#Ux*HD3XT*D(*#rwiJ{&7M!l?u=G(woFRTaM@ejNB=ns1i zL*T%qnVY^!C;I6H?c!^Dw8gI81`|W=lZNX%8#@z0u@n|^l6ETA!rp|Q02^5SA~8ncpWQJSM})KPOF<~u;>hK7vox#k%~#m zo-`$*GmA8Gb)tWS&~6#gMG1A2uGBTaJTG}w0>iwv2WY(~X8e^*%)ai4i502w9=%8S zaOqRCj|VnR1KXd7ha*XK*|AbAwA_%0XXcnzFw*;o}m>P7b~XR;Qm!^kXC|mQ&qQC#PK7m!~V#7qlDpl|<+R zI0%NgKExLdY_kh}o1I@dyTSa>NhOHzg?R4BW`%n{CfgC;)PEnu?LN92F%cGn#QM@D z4DG@^qn7&4xR02PA$k6Df+QHxm>@u_0fYY$^1L5y!p=oN}$jQ2Jt+hHI!N4=sz z#*fo`L^AGrkGNM9%=n4{yhk+SuJ@3tZcEr8n?qgQLx4D)&}?v9G9hvxez$=DZgv_w zIZ;Tcf@>)gtKBi6?a5nBDh*Cxuj(V zRN&##fcd3QqX{*6a|@AC(DF8A2^`Y??exsC=|=e#$r5x<$M5e=Py$Q&4O?yG z4VV;FxM;*ZLM|y#KBlk>#>_fG@==;gT*m*T?uZrbsg*TzTPQweTte*A8s9zaYDQCV zTHweit#2Ai%piqPm2<5jB#z`@Fr2^f!Gum9=SSI<9c% zLT}C25rjKfVE?XC+xjB_T8UI|MB_h<8@IKfg1lz66A;QkZs|59%gHtb>nzQrF_CcA zN&8|#X!v#kD(H?Wyi6@q%cfb}B><76d=!yVZz>{5W31v~BtHW6K~4Z%@kZ=%kPq8S z2Q*y`?Nyn>xaQQ5DMIwYNiq{+1XAFsPwBNK6U>`&)&;~v!Z9TD0Sa(VNl>`(;O*RV7f7QDwtzOd_nZPTrHc{meYNcm=9fVTAHB9ns#*<1VKyC1?~Aax(@I&M$>Bs~?%Rf8h^DB%e12%HI;U8{+lzaV{xyJmLK zRcdy%wN7UX>w)33$=>sRfjRsswMe=3+M7{7jkCgp3Hf;-U4;{JnKw>5JM&aIA<1r| z`3BQ06Vt3FRJB(N@uh(TgD|_dgSzvK5StppTC}i6M_Nd9EBEYhp4O|O=$j;68$xa# z(rLRUO(}nFoq})|VgHL6B_X4 z+3D4GXSGqzIS4(LGX&b(VzwWxM&=rg!VZL-Sm;+oR_D?wPu+!yW6#nliZ(yW#rtoB zl@lDE%lF@S8e)#T=)6@ns8WXzxwmaj5S#EWtQ|)qOrjb5gj$7zynCJa6B8X$sbh#` zi}xcudf2x*37S^OKWjE8C>pTHQy+jlXAJ#mB<{%gyfwhs6AE|XI5#StOim#dRM427 zHbod8zKm;tA4+tofFA9;FGJ{nFcZsDx<}0z zf!bC^j8#Dye07A37g&llN#wg$w^9&KJ|YayppxYmbYUJWe$h4rgCj0{aH7oDt2J;c z+>i~A7S5YPg;h9ft08p?5&={~J}Qmp+q@j%?@8n$89@D*qRfJbO~-w_!R72^!iH4l zQx-m4C&ZDQxixC&>g4!hd~ z$kfO&Oa*{ZptDG3i7-@~HFNC~STeRs7)rOUfx4t$5RN`1O-+?psLYASe`&H!#-z)W zxZpWzUdCvWde|XsjOO-`hLUi52ibtbefOq=K6@*&L3rxp2|Y!>BHB#5sjSv7bVQLdLp4uk?B3Ay}=9*Jrn%u2@s6LlL_^t`?gKVlQ#5kcWQT^ z-nDkuS@QzgU1!x!?XHht<+QsmCHiQ0u`7(DB${DMyqwT$h7`BaD2gd9X^Ojaz)tXV zTnK;uQgy(t)>uC5YKC<{*a0rA1CohmmpWif=J=_$Qi+$HLCDr(3dOp02cHt9Y<7m|)bpGQE# ziZyEPLT&5ayj9ySj_?;!+j_UX%jvj+)F0yOh8e@82wjp_6(-n?dhfNiT6E8@dn;wn zTu3RqeBc!*WgrM+q?C!Zuu~grf4dtstZSW(8rHQsudW&v(V~8u*cj!cWhu{7oj{JN z3<*ueW}o+0s|k5;tvoOHrTIT&n_?N+Q!n%r)Ze65q)jV#nh5k;aBi0zhjHN_Do`udhrI;Yfm9weY^k zdNxxn*Ko+o_!;>~KAwf*+mYD~d16-1^H7Akff;(2neCF2oo zLL-jDH`Qb_`+7Vkzs{5*`MfW+?qZg2QDaa8&M<-`^>BggU!A)VcXTThKC97%>~B>W zh+G%@engHnyS`4dpdUyJByRTuU>N>eJ$fG}@&suG8P6DqexHx@f&MzS(U6956xitL ziT9P893q(VU0eG7bIOMyXRW?nF180=$r$4ezf${DX08G&h+V<1!DeZhw+rQx(|M7U z<{aCa#P-xl=JW(Ris$NVweG(&-v;L`D^y<}Qw%zdF;Dk0#ym~J?K27WOs^KYjWN%5 z8e^X8G{!vJtD)Y;n64>ODrSuF+A{O0=X$k!>DHJp^s>f$p;z0T)|in$S8I&=lG8q7 zHkOet8%rk#=w)N+OS&&+W620<4N0Q&)YlUFBas{AjJ%^)8APf$AFE0(OdUCHdvXJ$ z!FZv~i1T8%5$8qVD>Oj*2S%K)Ce&Bm+I1LlKK9xeaV9`5*#u(jH*5A8c7wk%-MkXh z&8&zEGN}}mPyK|=jfpuG!`4r#iDQrnj+Vn}p;_D_YmG7TAVd|cHTalpT34wRBdOj> z;en5XscygtLj4pAFZPTI=IbdKgK!V0-Vk$?8dW35>hrh*qOMkHVhHH@C~nI9jBrP> z3nI71vHA){E@USJNH4H;Ni#4wT*J)FoGP*H=x2LdrQY1zDiuk3W06(r+TK>Fx2Snz zrGs!)JR@fnZ&lcmm+HCv65M>q0P<~k?vMcl@pjcqj?|>1O$|G4FNx}#34M2r2+-ve zxA|$smIJz05tp@g_r-9V{51^u%Sm07$pbiGWH9y3OCED~+R$$k7knuJ5!HAET;D0F z!Z&EOg>%@Dj_Jit?5Xc1^ar~KPyQhUAR~>8UrntcejMmVP%`54Za)QJ-+L7X_;MRv zeZI>!{ybCFAG+c9(BR>x9G5V=n0N1^rI-Ujgy2dK*nDv@dF3L8%udec44H!iy$qRy zy}IZ!WFnDmry;XT#MwL0%aEDIhlgQwr*nCmb(m5ClR?y!57F_}?wV^$;|fFZ-d@mO zqLuXW0gKGLvyw*Z0|tA=z)(lpu6Bdzl>_|^rdMJBiK_QT)4FkKklrF)DWh|vu8n}RwGzL_gee^pz$})H{_n3GaY|Dv%%sL(% zpZ>}q`dT`~d{@I)0?sGMZf_S|wfn+&>gd3w*g|iHos0Ew>(vrBgT@#5A{NlDb}o(~ zee9myEs@DHj(o4c+S%2pHFU;@*oDIvvT=5`c<}*W%(B^g<*a41v%}s-&1(nrFt2Ba zlS!wdzbhw`D+VrP&uo9Y8+&Ga5sfJ`KL3B7R?HY^od(Rh6TWEtCQ&RQAA=iY|O*jL6z8ULoQc{28y zSSI6N^)pJwJ~H;m_*bu`DKg&Ak7$MLxyN9Dyn3KB%d1$Dogjxyzymr>8YWXjXqnfL zlz8ocy0*`!hIEP(*f^va{?Iys?E|ljdlsniKFzq#pyb9ULhbAGL0hxC^6=U}(8I%P zf1l?6f|(U>=#tSdXkLub-`CKxcyQp=w=5nUxKz`~O#@;YS%5xbO(QpTP1nUuBy$6o zY9iU)7rQr+%w6)>yGl zmX7;G#jw~}5l%wBB6lStu;GeIpJwB=dYBKoDAjF0lKEhF&2^d&ZtDa4C0Yh_*c*>Fp)Croc^K%XbVn?6KWtqlmY##D%)6%@0eMPzAbK;aJuLU#>Jsk`utQ?A2B znO@#IpzuehMJe@xf#k#nE>8xza0d>&)l|=6Cm@GEztprS)psZp!I+e%0uc!1f zd8;Dg5@rlHb(%BqO~xvWaitm>{Lp|d;S#&a65C!?a(r5czqMBLiO0C&3P)Ca$GR)m~knICY+zu;{$wcTAUR^dkJoSU1o|dBBv;( zxN*kT!{-`sJvLA33HjJy>y+7ThNa-dzkL%;n)hbo;3gY<@7W&+JFN4i%|>0@v>Vl2 zL~h@`u8`X@fY`!RVY?hYN$Lgu1z|y~qGl8rv$NevT;YIokZA*s&#ft?o*eLo4%g2S zLVtPybPN9jmkgpkPY)>k5n)QC)H9u{y$uKBplJ@1XeGw1hyN;Q51pQ2YOm016v!SA z6l&U}I+PP=q<;^P2??nh_)rviA)4nXrz}Ojx7lqCL0Z8M;&RIRYs#`))Qwq)W90I` zR(A=1bW(EAws&a8O<4`7Tfk2@%qgxih$Bz{=}IpZh^D;|us{Jxiq61dvbc~@dw0;N<9->R7b(xXf!3Omicn@N`t%OG2c2n4>c<&>DJTU-Lo1Cd^mGg* z=^jj;f)?URl(G}#`zW?#oKFvWUqtH|ad{JYf;RZ#q-~2EqH&lI*(Gy?iAE~y`^^;T zXc?h2C{SK_yvE^w)gJGpo-;|7n4wV4La9T8s7o~t$GMHLA{4t$x-z+!iM_=EM~XvA zabC*KG!m-Q-q z5^FQJ`Kv4tm;}_%_Ewl?&jp1uIgYtS;qHRs)U7CpPJk&C*mFi}{8CJ7d~U#{%UYKN z7@_3d${dnM93Y(Wa22IO_rvrEC^Y1|yWlTLFP1n22?B%So~z6KXDcfW>vntTB? z3|icX>(N!wLqqU$0HI33sRC3_@kuC-o4-Va>$w5-Lhm`aKoqnW&CtIZ8~Tg= z0KuhUzLZL_+LH6;AsVW_D`AI-`QRHSn2+vyy{1Hcm4@)*fcn}c58)*dpKwe zAfO#lnkGWPNg?FHsIsqyj+M#F76-GYUacIqRe6hABwyTM4YxboUWOOLfc~iYLbw}b zR`|c#jojA6pCT4jG#wTY6Yw`314nxfcHkJG8cIh{^{k&hw$bFE2HQx}4zGuSAv@k) zQ1xtLhU0G_@`Q|zuv@)MxbV_|`r#$xg7(DzGw4P3AMN$o$?dpseO`ED9&0qNqSro`ofY}V`k7V@bPHK!;9l5{1zw#+%Q5oQ3} z4U1f4TCTMBIdg5zB+*6%5^h}$$0aDs6S>AB`^_?LO0_m9x&w&11tsB~H$TyH9VvIu zbwIGV5aq!(o>JhX-@1i!!o)rySt6GHtb~j)%>F6PC^#Q3SCk~LOO{-tF~Wkm3+#FK zvv)N(=Gzd!m*V32=QvY5r(HI@GW%YJ1N_Cz+$voRgyT7wGq@hDRE8p0QXy*(wmH;H*9 z?s2L;O0q_In&?I*C&{t(^I5tPNiEQ(3&HljAAP<>MeeIx3XL*OZCS{mjOtD~jkfDM z^4TfV93?)#BM5l zQq@{jnnBKQCKM-oIc>3&x`O_>5^>GEp;J)Rjm&@mVUTu;bb)hc7eVK)LL*)hLjKiW za>h`!D&2n%%bPxnO8Aiy4Nm4yry^o7W{?EzLQP;2ZLB45?37NC1bLr6MRA3?G894` z9W^*VqHTlF7))6mvO&~1e%nAz;Wb{HkD3D@Lw#uxF4aJ;ggzpDr?Zb=8&NSk zD{WMa>>7G%_9!l=R$J9In-&mrdZ&AE$>k1^c)rP`ppl)K6BH4UfnwVGB+0idEF0{R zK?AjrQHl`&YrzSk}I>LCA)+alUy>TQs zC#E$B(AXXW-Y0-|kkt$L|0amt1{5pX9V#GDJxjV3kgV*Y*<0}jJnxh34Zz5;)3=4S z*ry2ldVJ$JuZEq#xlnj?)bgkhy*OIAw&#NE~V9DK}5Iheu_7K}n__v(WH>(c{|4@A;6kIU`>U+W4=Q6I1OzB|{eVFA8Y?*qGQ zbO!W53_8HpWjIX_iNaW=>x>|(V*SC&BYO+%4NwCkETd$CvXO|_R+r@QU5@*TzKSI*zU7$UtYy^Eu{84UPBP2 za*d4dp^YBjH<<3-Cfc5jK3#8wIanj32zxhp`fAN4X@pFW{0l~8MT~Z_OQ#{sNQ!`X ztX+syu|V_V?-+j_2s+zFFPf}D-9Upqh|>mUJvVuCp1P^;xMw>7yTmZ_vqg6#5E{d? z1X)+;RwWiZg+DTAX~bGy@?Jq&keIz|xMT<;%uWcd1C+8EG{6wO&%08W^#fa%Z7oEg zv0FHWeG$|yKpu2Dy&$oak021X5c^CrR^YJYq$V7MLB^%&jO+slCr?|Ff{3FT%M1`} z8zL}ny0UePHfD%y@Zc=ejcqAI=vcvBBtuA+qo6OKYl4$Zxx~T)kV{-Sn!~`xTroLR3_sv( z_ng@jXLHC3j65{6=2Ir9Se@(&;(i#RI7+qv!xgT_fxZv}b1;N3!E7UFHrUI>CA6c2 zTaRjWGyQwgQzyOtVb4!3)z|_vZ(_QeLqM-x=7Pxp+Z-uQ3eA*`zk*g>4L7IsOvm>K z2k6C5wx_ym_OSHAG5RzTyR=6uro*YBYPB)X$5h5*)!e~xmv<`u6dks44hvX#CiEI# zDn%R{OElz=ObS;zF1C1>f>#?8rHBW7CWY`#{hL~prpRV&O{}xrPR!73 zTB-JLWmZ~gp0{mGaT{wm3zYajkRkEk?fqLY2V|7u7pW;G`15zlgXzB2|Kl0y9wY|I z3P87|_oMca8}QT)j%5}a1w?Z4dgaU+!WkC7*D!=2H$8t1phu;h{T@Q~0GrI?0e-~o zJ9&$fb-YE$CV51FCp;ohlRSbQ;BnACBA^o<_t?j`^W$aq5n-V4HfbNhLh!g(`38&$ zetw;M7PwyTo&~TW_biZI?w$p-A9K$F+Z)`o0GD#l0^JqvS-|^o_bl+e(LNs#_=erH zz;~s47WjU`Jqvt4>7E6?5%(0^d)&XMu0jJqvtS+vn>AzMpZ=0^gh5 zv%u%OXMyh;_bl-Jta}#t-t3+QzA^VK@LlVk1-`eqXMyjn_IXm^OS@-*Z`?f#eAl^W zfe$yH4dw}a8TTyk?Q_opU)DVfd~b8l0^fvt7Wnqt=NkmR1MXSiyWTwue3R~3;Jd*+ z3w$@aXMykS?pffQa?b+aLH8{1O}l4-@8|9FjRN0{dlvX^a?b+aJKVFt_Y3Y>;G1>N z0^gi_7WfXiXMyjqdlvZS-Lt^AV4vSE@Evi_0^d8`v%t6Lo&~-o_bl-JqI(wj-sPSJ zzGe3;@Evu}0^c$BEbtw-&r<^5ihCCLZg$TC-wF3D@U6OMfp5({3w$Ttv%q(YdlvX^ zbRiD z&jMdjjam9E0G6TxfiQ>)1jLP~Kw#XA3Ixcls6e1BM+E}r`=SDY^GsAAfL5Xcfwbxh z_6wx7s6ZgCM+E}uc2ppc-X0YQq>ZRRAPu7efwUPF2&Ap3Kp;IE6$qr~T!CRK=c59F zbSEkhNbiUW1k%426$qqvMg;=tT~UER`kzGw0_k6m3Ix)-qXL2S9#>%4%P&U-0_lGq z6$qs7j|v3Rd!qt@^uLG-1k%3|6$qsFMFj%s2ciOj^lwH50_m@~0>fxN7!?SlABqYD z(*H6l5J>-4R3MPv9~B6s4@3n5>90lw0_lGh6$qpsjtT_Q2VH?-Ie$AU5J-P5DiBCN z5)}xf4@Ct6>EDS81k%476$qpsjS2+Phob_4^zTIl0_op(1%~;2EGiI4KOPkbq`w{& z2&BIe6$qq{L!{0_lGf6$qrChzbPK$6SG7L;r15Advops6Zh7WK02pNI+s(tj8g2&DhLD=-Y{x1s`p^vS3|ApIYr0)g~@ zj0yzOr=kLZ^wUv+K>9yL1p?_miV6hM&qM_R>C>*ju%`bxDiBEjaa16X{&rL#kUkR? z2&DfcDiBEjm#9D>{cKbqkUkp~2&DgOR3MQ4Z?@pTgi!v^MFj%sb5Vgn`cI<*f%JEx z0)h1NQGr1Eg{VLv{bx~uK>E+40)h04QGr1EC0Ag0)bBB-8fk67@s6ZfnF)9#9|M#dsApJjFf#FeKi3$YLuSNv|>HirO2&BIs6$qq% z5ETfdUyBL^(*G+e5J>+pDiBD&9u)|rFS!E4qyAM?AdvpwQGr1Eji^8%{bp1kkpAna zKp_1$QGr1Et*AgC{dQC!kpA1KKp_2huE6l9??eRx=^sS}0_pz~6$qsNZ&Vm|3$ z(P`Y((wx`lVX%k$8Xx1+VQ{?$&u==&H&A>|Bl8+NO3`694lY07b^6kb8ebYR6Md+s zeP)>LxWk9Ynj1@VHbzc}W!S}v`T>|m^oUr61DtSLTQXVBq)PaphwQ&_MRy+om1f==6V871G&Yk0S`m4BfbizcROO zt{%{7ck3nuf~Ze>$x${{Hv;&!7Z4~9A&m-j7(wR5SbRnGG~gHScWg5KX{>h&+nl`v zSL@XP{mN=T(>BfzVp5*9xbeYgQl6E{&w4|#Y~m~NtZ{zgyM&eU)W;HfX5ig}1v0fIhvaVUBXLG@$%Lg_7in^3?oXP28c%jpi1U7MN)fsA;Q!Xz?L7RlU_f1R)q}M-HQ; zUL_Jk9^{u%GRYF0d9XJ1#tv+>%kIIP3}9ElZcE|d>5LvH;je>}=PriUYf^?LaH0fn zoaK7`OluoMgoiT@b~s78>5lwKI-w-rP%nvlF$n!it`BhLZOeEMq|%&Y_61LW_|O_$ zhK?4t;n6O2BiBxMe+T691<&(s)ui_>czq%#-xRR(McOs=KZ&n;3V-ZFKc&9b0l*4# z7uyHTF$fo3a!J+C6n5;@7@gSw(pPdpqXCZ+n`~@^AHy#p?xSsBp7+K}7oXSp7?!Q_ zvSRZBV`bG5AqtMW2qvZ}b1Y(n)bJbA_szEL^KBv%ZvT9n25e}n*+AdEI2^OQUNK0*|o zoF3B4HV+(JLmN%Gwv?jW%{sqH-yo&9e3XOd8t7iFxFfHJKrZ-~`XP0%2bCV|=Rz<> zR|T-on}N$r2#?(3#bRq4r<$G`9Mp^UiK^O+n+W|6#!l{psC4OJU^N_j1b3lg|oPzK#}J54!TI~ZGB-Or|Je?5W?dwD zGzIIsa!{vvf!R+2kh-Jeeo2s5q8bQwi@Y}5pq39JGdReZ9DGyGDk+9P1`fIg<7^E} z(aF{>hg1L_ae3c$=vX^CRmORL0XG|MR&Crbs8on-UqR>q&n0AuvsvqxN&w=DHXt7E zPN@AbAi&?1eSwHi6G)@ExumY@`@yL=_CSDWkw+C62+)@$Lh^o7NR$RFD8ZX7j*?fm zL3>U2lwBiJc1_>T--~N%ICX^=XvDgRu0~jl19@?p;AFth>Uh%j_CJh{^G8g z5{g1Fj=dq5Atal}Mz1#~HRVp_JZjtZvz%Pb&e64P!x`@$&bSPR{_&F648jLtU)v`S zbg$O~vR?b~N#cei2!9mR= zN%jlyrEUKxHSgN6i~K4ztz%7FoEds$P=n|l>^ooa(M4!}(_p)Z@Q{XxFgJ*eu!I#* z_yxD5LA5a0-(>^>9=nWCs=P~f7h#cRN>jq-uvwa(X5vOn6E~0*!;m;SsPG2_dWZnK zxebB#cMH?d=4r#9Y^!%$H*VgBHc{`kz7vKFV;qT8?krF0Jh9-jxZY;HNhnWh86xL6 zFpNNU(jDUv$Z`gZzf`Zn=>yCv9&mYzu7JTejr`xr^-@==)wJs)JUysC%I#stcl8m= zHBZz~Q@i49og=rFD?B88$4AajX5PN$+A{@=Z?i_)KUXgd>Upm2in&_s+BvhCuso1>VNl3j{j`$C=WyZ-5Dj4V9U&VW~>2meTM z$-V^`TA&RQ460zTUmo!)f65z5y{LBv)lT28ZOUF2*F;Lh-R}rTb8uSSm7KB|`v#&bY(dRkeK*XK zsEAh+@RNo=Be*Q&tNqABVZ;JT$9`Aa@bBr~^!Lc7zo+kN&4~YAy+KS8d7!7n4Y1x= zF=?TZnHr)9ZIiY)==@%q(+>=)5A3>eT(6-7ZKiST6U4A(iTfyMY=vt->T|=!KCxJOrNE?kR+r)MtuO`)p z26e`iaUNG&b&#tPw65v{QkBZus_s$qw-&-G6thFE${869RB$xiPZMbC5h0;0&|p85 z*PVnFLfHo{*noorrVW$Gn}jfXD}fq#kk;p+L4`lT`G*J9!+qDv<*S}rfy*8ykZ-@i zz5ppTMa1>vgE2k4o#u6tC-5CL4F0|jY@&kX7*SU2tC3QYR?<7nt|Pn~Cap6gQfU8HCZN$q`ZP(MP`oTgwhP=K6ph@%Ip6l(!7 zX7m<8%#HK~dB#{&N=9>OliZPkTm&-cU=TA*L>I8WMYAbUei+3P-DTNaamTE>E0`|~ z>Mg@WOtctSy6pW-KzM3{4U<;zv;BN^P~T}jOCNJvKGqvW(0O*3Xk`7aNr;Y3kYJQ& zLjUB>!CZptA&oQf}D9hy0LJv3h|h@RM#u@ zLK_))v6~FMC}iNpz9fCIdm)teh#ipIIjExgYFi&)>+a)g(g*#6=tPivUc#@$HwV=> zcR4rP7ormpF&f^5Z6&=ciwaRS8!;+;OzRZ~K;+zxV~qYvd`~6)+a2uXAPJ6tL>k`r zFd+)Rz!fz=Bwij=_``f197OpK=@s;Gy(ezy8QjxF{0EV{7VKtlPp>d!6OK2M&wj?~ zA{>DX_!ZN2_U_S$h8ELTSpQ&G{;oh*d(meCL7y(~+39ZC+7)d>yS#g7m&?$uL_H7% zb8a^Y)ACiQ%g1(;gpG1)ca>DWYEN<=`YbLjAeaEu+CCB&d-=oIyGqG=v+ShBYmKTtA1h>vBfk-C=IlgQYNcQ*oaG0ma<2zM+4P>H% zPpzJQ!yY+Nb`t^Gp5_W1<7EQ*zQ8ABija*1S0%%b=rKY_;vFF7HxSSh>R{Wb?~e}} zVo=AJZ`zY2;|9qqxDwI|bBN$lD{U8ci=lJqOt=gk9^TZAp*I02Y`z7VkEoyZ!g?@& z2>$~CWuv^=lE5(viAE;FO1+uG?IUL6MjOx*xE5X9%He7Z0%O@iueh{Fr_)duGCuxi z95#)DM0siA8t&0OB2cAcn>vFtyY;{oh-(7z`Lq~AaA_p;bovBaM(9E5NgypnIuecj zj`zT*Qnb+*FzIHn*r0@G0mx_d7eY! z`2Z7E!n+luhObElttve#+;ZZGyoQnOwqCssFVOta{AOe(%ed)t-cDqiHCP_u54BEF zQwmoUJJ#SenA{Nz5X*mhk3K~U!$5Xm#OYqc>03LgyOH8zD_Cel;-DLe13}`T7bLsg zDdo0Ks@RYmaK}8L~(DBgMuJ4nD@95UuTO2NY7VEd#vT*)wzj z_ZkU2v}`aJY?L`j$C;hj*fgz-Q~NH~gPE4dp=&EB&|H;qKg{DZwkf?&o#j&#j>s9D~Q z_kK^?q~F^;>G#T{-@6MaaZqf40l0BEhctq(AgW^f$n_{_RcG09q4Yk^9-otm?Rc*~ z0C*!tPPF?&h$F;|JVv`Ipd@JOhuQ{56+5(EQ||%7DExkKPp7Zcguw*kc99y9Kv*8a z)#>ectjy_Yu41GAf!Qb!QbrhPj8(O0K$2QX6I$wZ>C}n&zU|6Etw{Sr~E06fMZUv}~{wQRIt%HlqXDMVK z?)$><%a?WKuB_SrYK(oIKw<9VVcEU}b6xB-(=~Xa8$pQhm5>_I^&Gqgc?80@{WPvQ zv%)sc-xEBsvEj@CcceEN){N`G_A4EYu_#Cq4_0w7HF@{NmeBhMf}LzrSQu`=7h4B~ zEQsCb4nhhhWG0yoEV*$wYkD_n^5QT~e-g=nma%K{5jdoYrB2xWM``U!H9ACR|SMIgwd)wf2u4Ut5^wc_BHM!bP;i+{57n&82lh=>TmY zLS_KxLCh9>TM7t!QuCQcWWVSyHEF|CP)3!{l|w`&s%_xNo+1bY{!0B8L|wUqqiYt- z@YO!7xI`=D4N~y2Q#a|meO0!7^A}nFP#p`4HqbRkHmq|rlg&CsUD;RPFqMDc6TQdB zxEznpLpapIw+>-2%0PXBmSZATB@QBm*fODG8rbD9duP)O3X=r*jtItpDxhD%W14pZ zf%!5oz{5K>kC0vnK$GDDPE;Eb<(s@`0N#<;YT6dtgkLslC&lPMqFX-=tF~A&DCWTq z`TY{QASh0)1p0LrDW$Ok&@p3o5PrA^5Hk)63x>K``ydjg4{0P68dM6%ZUiGDrlrUs zLSVQ-JdvUp@(5$Z$W2R2bIx!|1cL=lRIPq4#9%kKn)`|%WM(}om>BXCkj)C~9?;sy zR+cCv`~uwM3{6252N4DIU!^gA-7Oc!Nagh1Mu4n-+!9S{Y{WbdfFD~Xt8SCc43l4r zLrw^^kktHqnh6)wYFJv2)EiizjNln-bmMs}LlM4$K(q~nTk-LWFc}eT2!W1jZb{ab zKgd%-%|VKf+{93X3VyOwz);~hYM}1hrIM(Yptpa8yn~yqNgL6?Ou-|f@$&(?;Ebl+BAl z(hH!08<;P~4ZF)s5(zG)%&dwWc z_l}@s27}WoTBE1@JURGc7B;Z0$u=FEaBu^b45FZ^dLO*4M%p5ZKREER{^fu6{vvXp z`M>zsm-HL|z4`B#Up(`ZO27VNFM1E0(r^5Y?VDcrd%v;$w0^z%$REGsw5#@yA%WSN zgE)f^Nxhr)lhf|HQ!821X=4=^|uR zIQi|9r+sG+WHDEmsq!1>A2t8`@B5vthc3(iU07mO{d?JOocdSKK23nV{SSZb2X{X3 zy|2RWjv#a|!zC)Dphm>F!0zvGgQaH2e)zurO zVCml|pTAZouT#Tl=_Bin&6h!xAQ%TsPg7rZstS#WKIG1rqcJ^dab+_pm`EXU3VV*{ zRTwYIZ9NP#-vn34qXaV+N*Z5iXc8ovJ*a4$kbPWd5P2v9cPYq1xPSzS<^T-|m57Ri z1u^ptk%YcP(8?_V0~Cn-C5Q}LSqx`>8)Z0vL&nVeTX4D0>YKFkCXY%CM0iWWziPsN ziVz?FjeJmukG!SOR(S2?GahT0RbX_75CHESu*0rCK*V1x#+<~HyUs?6yUw=dutf+G zu&vbMdsa)3qqa$>Zi3&Vm?8*ELhqfcH_o7} zNn#SsS-k)gq7m%?FGZsb$@$mJ7EL(#E=0-TJUdTi?6l3n?r4H>6JnktSs6k}sotWm zsqt+)9?Z23v5qiF6gm(Sl!%NIm?~qD7@cHI)CMfY4To8t^Vt7DRa_&qV~w>{Bb|+6 zm_~b0#+`+pEzWiqY|JQj@z#JY*pEPIcG&>r+zhZEi!5N;DKI^?SuBP%(WxKhzq|7W zC_5>3mdy$fK9h4TiNv%4El{*UU?mW1MOLN#H$y4rHB*y*KA*24mUVR-0rNlQ`;=$F zG@CQuBNDaPbeRgA5Y@*2YgZ+F{KpcRk&#$r^lxI(5%M_{l+~?rb!IiFY#^hMbnk3X zun@$uxlB*52+}rU6|Cq*se$5ckcJ>R5 zW_dI0S8alt{icV*)kk1MvpU3N9=i?;0g+O6VFOX^>Khwj#x1H@Lc6doQmNU{V#MRx zL0Hv(K0d>Fv3?Zj?nemf!1H1oB-;i{w+)BwuG}nZ#`!<9?B#)$K@V0GOE8n*Nz`+~#zby~Jg5&bb&|kpNhaT~d zwa26GJ8JcW1C^`?9K8Ah&~lvW9|6{3ieN2(evP!5iq8eKDxEl&9i>Y*m>M?x{*Y?l z=SxwvlwBX`IoxeY^@v(NGJEo4KWHPxK2VT22iY(vTxx+c13=2-n^qh}k|q0yh>|>B z%lb!8uCDoq7W{XfSeRQ|IN`4?&K>jLy>R0AHDpRy+VFQkj;@292>kUr2~rG(2!sVY zBrj#ecQy1XsL_Em@5v3sPsdF~KMzF{0tr%{aBRPzgsdjmQ6w_DO_0T`og+Jmv{b@2 ztCN6(W`R@ZYJQ^}o|%>}m=6=&kfpFctA+Q0chA>XjYTL+5F0xeLB$$4oA;qMqglTH zNO)?biw5S$BsT$tqA#krwZ|4kn1EsMv%<>)`RjP@-BQRkqXmDBe9T?=A zxK@c>S_`HD77rl=)d#3%kI?>Np_ioHrjN6AvgFi)Ye-?^EuTsq0Dnz=S5~u2i<2$L zgv3bM0mZauoO5WG{R)LW1_7iX`w)u)3Yv?&Cb%61BFz*B1vaEE1YDf{lF;~Pyw@`r zv)%48?4ipI7I%%iBP2af05Qp4qyIA|18EGy?Cw;GHl+sy=e^i93YaU)5NlgFP!UpT zHvff&LwG`=O<7pgd%f5(7Sw!upfzTH!CfFZn7GQj8Wp_{GaQ7fKziOcyc?h=#i8*5nOwL7Spr6?d30K!(I-FqD@CEs5Mp zd?gD19H}Tk!Djva!s}53S2Or97{U*vZ9-78k~gwS({zGf;BPB{C7oUo9V?aKIaG&k z!%dJil}+{MNLLV(iz58#!hinh-zadr@p^ylX?lF(hyFh-3(ApUF z!m%$np;-mC-#t^9CaeG;mLb7;o{kc*QqXX0LI|os@)AuVYp_}Jv|nX=0!N%rrEt)% zyl=H3b_Bmz9=N6$!y}EwVq8{V>vf!{>bCRMBxtwXTTtqLPmO%5O%o@@kc34!UgQwN zd^Ar{=H00UFvO_iW!Zvx>wh|qLjb%D5CWYqDS;|NzFV)?D|w-cm}@!1*&?OO&V|*Y zDI7r_GsCGYJ_END@HtU%H(LM<_HD7E9yu|0bO9zC`~BR?612f3W~9vX07G6HYuDjf z!YASm5tM>D*KiC$%mRmM6c^gP#tdM6%E+!24=t_`iX7V=#sU*}ocMv5YgjC%9Yd#_ zr0ij(u|?|@3MWlljv|1=@`7%$>+r7$LhhfXnB`f08Wc@0c{ft)QMnY%{ zg3UtCB4-nrRpkD+=Yq97U#Ov?BQs6+zPj=ySUYFB}7b&(;2mEwSIvSlYv6{{ww1d?!*Q4#!e2x zXRzHQ2@ZY@9PlQGds#s<^fDA!#mrplVQ=`i+>}B?Feg#b*T7xLdm~?GVU&BbKiAlV zGbawk)RupppN}<|pZ0GtX3bdvgkFjj*&8(;)F%^tK&csJD*4c%wo(VU?4;6Y&wgJ=8I+* zlrq+6KFh)>cx>T6w0AzCm0kB8zfZjqub{v)Okn~Oc!mkl5b1g*m0MMeAsUZdPph%V ziJCfijNTjRY4n=WAL~8YqvApX&7#nPy$B@WMHeo#i$V(tv`~W!S!B_Lv&+JpK)UEI zixv_XLqFf&?|06~1pJQ7;&tNiQ&#q+}xPw`x}4J=5;s*eTHhEOh~>0!t?Rx|&)2(Pt^tZ~1_UxBmFb8hfYgs@GM4yRUY2b+ z8ZR&3P+yb>pqH1|QRO3)Wbbw8IsbjW+Z+@WqVsvyMtt@xREIAtuL^HECLGNIc+5Kb zr?UKuEV`Wj{1=^5KMCq;Exka~W|FpL(qx?v%Fg?zFCy;n83|y=<;)LK0xEn6Rr}QjOUN`Ul zERB2pp#{0Ag-A~l@q+#A)i9|(bVFAzU>v^SG0&lw*RD^pS8*el*{;2tff$Maq&$u3 zOojRZz{K%D7Us!J@Wk`Aqan%B!_HNb759$ofokPNSy+(GaP!^rU$~k?y_J}mH5&5o zm9lVYtL(rGS)op6sqkrpArsGF_X?e|U(+XK%x3#{xVPp%yPbhVSK+`?%KNy1QVd$< zPWJ`G1a(&eDkaCUHj5F6!(h%&+uc`g4FA$!F5d`hxF(xB zQ2G!>q$HFbS1m>!62Esu5;Ck)1=p*LG2#l`Bu>EWD@TK)L76)72G-LrNyAUG=RGp@ zZ)JOY|J`!V@Zp!={CjzEr~5V8`$#K;0(vzG#d{SPbuNHncgWHiNhpz?6>j6{?g74z zc!Zb}rX~VZ#m>RFaXCz5ZCnY%rbY_Lax-%x-Q8sotdRnItcOIP*TyMIx7KWq)wGb5 zKm!7jhSAcVNsm0#m<*i06q2gmJd!nEf@2n}XqMWNTr_BpzU_p;)-9}s|B}es*Dlxy zu`stKc$NoENGQ;U;K0vDE9kbvFj4H3%w<)`&@!^-hc)&wdcUqgvd!x@L76`UX^5bB zg3(gkRmq;Ux!&pY&?Gq7VHlFY!+AnV*;#0Oxr@DbG^nn>yuED<^oOK72Zv~(@+wId z`_qO}po7EO8+oVvA;~NXer15DE@yioxUfI^hKV>oc{|OxhN!~v5!h)_%d6srA~37P zTll-S!i(tow;RoAjD08%%)-=%5*my_HK1rzeL4R(JwA-d8ZnP+78*{HP_N}jxOq>H zxD!k|RGh*AQNaYqn%||2Wo_kkca9HKVoCiT0in$uI1&TTb*%5r<2XhZarXCY~Qb5Y_?kaybs2JwVx&9 zHzcejc`jP?ow8X)!J4m#AKX=^b9(S5K?kv)*0wv$gU=&P~5IfZ&;)4sfgY9hVK-qFzqdh@SlPZF^aF zcDpEN`x_??@V%63P*3{l$L%WN^V72&ZraGBp03{Kbf6dAHHO^5?yG_1Cz7m^xfSsY z&O@cm7_Am6FnyP?-mLTCDCTj6s8)px^@V!HOVnd1Pit~KX#-H4cCTEBo$0Z&M2#rc zIsO79E$m>>_wQ9btA=TwDb^F=tWkq5FT|hzw$&|vBTR{~rV`QBz{&d3`ydkqCcwj0 zVR9X}Iucwa{8!yh!~d{-2lqAEWyAQd=*<3X0x$6#Y^@6XyhAhConu2-xOgZ&Lgt!! znlNeQhrsGX834*i!hR{qx)})SvIw73Kf-d+Gad=Ka-MKTM`f>(l z!-}0p#g%F9?li!gW$*qYUw|?XMGx{q{Uk)VkeHx=t#fQVS*Dk_cHdC1trcXK7deR` z<0SXS-)+4T20qRlibse~=Mi%*aEyGOK~jucWM?S>BcmDd8Z%GKrm!BPesw=y_3;&0 z4L$?o)bBqx-NqJ3C`ykQj({h;wN_sz(pOa_aNQJ-PpYek*)wZ|)P6E;}!tO|s zBTX#VoBXKicFh&WOiT_jp<8w&ul~CAL92W(Ls&oS9AplTat9_amo#fbPR@qK(F>-s zT}jdT6n2NILXX?K`+IJgk&lR;0DILag)L7;?5oSQ7-BH#ITJFSKbW5VI0IPAAB-kZ zY|YH^6XkARZAIv!_-rfpyg=|N#w3Mk#Unw(%A<2$uJCMw6crNliMT-bOVy6wZMkvq z<~Aolu%Eeg2roGi?apYtJ6@f-=;dsBp+Uxw-e z<4ucL_WI+4eI1}RuEPRG%qH;RP{qx17U_|6ZdQtDHzYU^2hYWOlkg)`gHkYo6X(eB zBeG9m`0>G>d`lS@0?{bgXh4KZ0s_Tr`z9W>mZ}UEa@_kf1^Y zip}y9wSM-fU>;OfF4i1_LhdjM?H}_>bp%oB4}V$#+r%^RUUmIwPca|dJ=)X}2!jzL zv)Uxa6J^vv)CS5;9IICa>c+4j`iA&21K5*q#^1_hNTA_Q_|jX|<2k!$t2Hv$8%Sz) z#Ox}FdVhbryqp1KmTYV4@21=T+SmniH@*R*+oP@|^WzzMR()(BCXqo+I$_C;$VzVL z(AtaXUk1&MsnfRe57XbDp2f6uF~Wh8I}b0W4w!MecC<})#3jU?G}Odr+>U))PD9eD zegaL@J+_UnN4XYds@4S-%A(Vz4kl^BRMAztl#}YgY!UN6oDnkImZm{`^FJ~(u2YKLciBxGXom+hT;-PcyAZrPxn8B)#A;BnTZg z*Um<{Ud`+DbcIbZ&j4p)vh~Hd##IpmVA< zFsrm?_P&tA#ig?RdH!I{wh}1m@g|)_=+QUg<~ma}k+D(eHY$!fc6> zh=NxUH#n%_$~^3m0SaG;s`fH_SFGn00iy%e;i) zuE&zz&WEk5#y{1B{$#rBbyw9Krw&PlV5FTrlTdza@gilZgaN*Fc&wjKCl6T^ZtBp( zs_To1V09L0uGl`_P%S_1Z*gU+oK7TR%XkbYn1EhAjJIp6t1o>?(T)PVo;pgR{ugyQ~ENjzP-U%u}%9jn2wltIA*`z>V`9A zZJg=Ga7iW6U=8KAqTch}L3Ov1@!LEtcH<|m?em2!2n4KF2~Q)M2j+$qp=*mH1}wu7 zOOW5)lKB<2a8}phpaJ>I>ZV2Js{6+x#sKJXTamFm`s(1*&b@sennYt?zU+ra{+EAE zPdzm=&k3aDjO4x1p0+=U_Q|c}MZzw95L=X8O1(M9W*rtl+$U#kXQ`9dxM31KO8g%Y zC3hcFC&c!Xaf8!L%-3SE@jPf0okk=+Y6TB@*WU#=JGk!G6amb?Iat+ulC zo++K|wV7>GEoBBZ9&0b!LvdFCV<&Ilp{`)VE(Y?%Yy5O&>gk#Gu;x+&%-K}igPI91 zx=Y#Ab);2q(4Bq8qUuy4Up%*WsW-pcGIOrMdD? zqz?0I)n!lax!!7@=iC_7cWLIFfqiA>cV^E0hsw8<|IMc0rFtLOj1Qe4(P}?fy{9Ma0?DkNM5Rnob!8vw2kga9kYbJnHOh;}U{z0GF z$e-fbmMXE;SHosZ?YMxthL(xmSU1BAdMOn+ysOCcjqG)qe zMWtv~KQ-#mL57dq2tsO$RtxpuuM3Ytr47a%y4UVui@m{J0&WgP(lN&ig4flr!wP&L z*#W9Dr06|4jh6nh_?db;$YI2gF9ja*k~)IX@|9Lzw%&oi5BOFjM(3QVY*u+GJQl{{ zxxq>C4A-Zqrbx>B_@|U`Spp*&nsG|q{x+5iq^Zuiw1``}$q0C05xzRuhOIwl=E6N- zP8?yYJ{X=~WR1qS<<%2@+r+P?QLe3ATdmd- z1^MV;i|-Ymw8|gkD6S}C#MI!hHaq~xKWcl*Uab}gp9rTGX%NR9M0BR1*Rz4YHigF4#pC#{KK z&@Wp3$D=nO-^8ANa8Dva#B%;85h0NBD-aL*StA_eWGNqAwC-M-@e(5N)X>l=Q7w}L zzf5T8qbMsq5gYpS(9ols?*G|3X}S-dnC?$Z_cKj*;)8PUCxemhOS-PM%!O%U(^Ts# zG5`Pgdb&&ywO2ML*B4KfCFy;11`$7^Nwv=R7`H~Bg&$mNFKKksA@$Q(2vuinin;zH zX$!yM(8{%oSHhU-)9eB_o97+1?meGW`b>UzA-~&8QGQuc3Csp?@5yFq>cumlOIJkx zKKFsO*K_1F;`Mf^V%Zr{{P6X1=>m3FN?}+y)Zz#!p+I^dh6?T5ZL%_F*iF*UA+uPi zLN=`<#q5QK%|whUET#yu=>h!_D}@*yzr8uk?O0c{>0)7*s`z_bQ;>p$XsIP>Mp2$h zdKuw4-d^ev2vc;sqLee)19nE#s9+h%I$|{6^DAqs3r5gmk>$Jfy1lc;f4+MK>Nj?7!7*e3dZBKb$b_vU;8@Fz1xw9a}cOuh0tij6Do z#<=2YNxVnuJ({6r=dG*Bqt0dLkC^tj^yf1d2O9K6Zw2#WJr5dhJ#R)m<9*cT)$jh^ zS6?Vw{F*nFtZIwCdE+A;XbSE5yet+tJGi4AeI}IIZeEhD%W$V zGc44BXlA?s7-xWxRfxj0=a~$G z^7NkGq`ZQRKb?xLKHL2vkmJlwhc_J;I3bm^g|0pWZpR79 zS`J*3Q7y`?6Pp)h#gPpu=2bE)9!@zMSk|T_kuY$1#M?bx+QbdgYO*uBVeW?wyaA8( zA}T17f7nHayl`P;v_ z^jiSy<39(!kI8d~mV;2^TW6g&Ja085((tzL0SSnpG=jV#;m5Ov_vd-skQ#?nc}|yY+0hD delta 12634 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≫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 LMyx2iBC-DgM~l$G diff --git a/testing/integration-tests/src/full_client/codegen/polkadot.rs b/testing/integration-tests/src/full_client/codegen/polkadot.rs index bae52ba25c..41a682df45 100644 --- a/testing/integration-tests/src/full_client/codegen/polkadot.rs +++ b/testing/integration-tests/src/full_client/codegen/polkadot.rs @@ -6,28 +6,26 @@ pub mod api { mod root_mod { pub use super::*; } - pub static PALLETS: [&str; 64usize] = [ + pub static PALLETS: [&str; 67usize] = [ "System", "Babe", "Timestamp", "Indices", "Balances", + "Parameters", "TransactionPayment", "Authorship", "Offences", "Historical", - "Beefy", - "Mmr", - "MmrLeaf", "Session", "Grandpa", - "ImOnline", "AuthorityDiscovery", "Treasury", "ConvictionVoting", "Referenda", "FellowshipCollective", "FellowshipReferenda", + "Origins", "Whitelist", "Claims", "Utility", @@ -58,22 +56,28 @@ pub mod api { "ParasDisputes", "ParasSlashing", "MessageQueue", - "ParaAssignmentProvider", "OnDemandAssignmentProvider", - "ParachainsAssignmentProvider", + "CoretimeAssignmentProvider", "Registrar", "Slots", "Auctions", "Crowdloan", + "Coretime", "XcmPallet", + "Beefy", + "Mmr", + "MmrLeaf", + "IdentityMigrator", "ParasSudoWrapper", "AssignedSlots", "ValidatorManager", "StateTrieMigration", + "RootTesting", "Sudo", ]; - pub static RUNTIME_APIS: [&str; 16usize] = [ + pub static RUNTIME_APIS: [&str; 17usize] = [ "Core", + "XcmPaymentApi", "Metadata", "BlockBuilder", "TaggedTransactionQueue", @@ -119,6 +123,9 @@ pub mod api { pub fn core(&self) -> core::Core { core::Core } + pub fn xcm_payment_api(&self) -> xcm_payment_api::XcmPaymentApi { + xcm_payment_api::XcmPaymentApi + } pub fn metadata(&self) -> metadata::Metadata { metadata::Metadata } @@ -215,7 +222,7 @@ pub mod api { ], ) } - #[doc = " Initialize a block with the given header."] + #[doc = " Initialize a block with the given header and return the runtime executive mode."] pub fn initialize_block( &self, header: types::initialize_block::Header, @@ -228,9 +235,9 @@ pub mod api { "initialize_block", types::InitializeBlock { header }, [ - 146u8, 138u8, 72u8, 240u8, 63u8, 96u8, 110u8, 189u8, 77u8, 92u8, 96u8, - 232u8, 41u8, 217u8, 105u8, 148u8, 83u8, 190u8, 152u8, 219u8, 19u8, - 87u8, 163u8, 1u8, 232u8, 25u8, 221u8, 74u8, 224u8, 67u8, 223u8, 34u8, + 132u8, 169u8, 113u8, 112u8, 80u8, 139u8, 113u8, 35u8, 41u8, 81u8, 36u8, + 35u8, 37u8, 202u8, 29u8, 207u8, 205u8, 229u8, 145u8, 7u8, 133u8, 94u8, + 25u8, 108u8, 233u8, 86u8, 234u8, 29u8, 236u8, 57u8, 56u8, 186u8, ], ) } @@ -290,7 +297,7 @@ pub mod api { runtime_types::sp_runtime::generic::header::Header<::core::primitive::u32>; pub mod output { use super::runtime_types; - pub type Output = (); + pub type Output = runtime_types::sp_runtime::ExtrinsicInclusionMode; } } #[derive( @@ -312,6 +319,249 @@ pub mod api { } } } + pub mod xcm_payment_api { + use super::root_mod; + use super::runtime_types; + #[doc = " A trait of XCM payment API."] + #[doc = ""] + #[doc = " API provides functionality for obtaining:"] + #[doc = ""] + #[doc = " * the weight required to execute an XCM message,"] + #[doc = " * a list of acceptable `AssetId`s for message execution payment,"] + #[doc = " * the cost of the weight in the specified acceptable `AssetId`."] + #[doc = " * the fees for an XCM message delivery."] + #[doc = ""] + #[doc = " To determine the execution weight of the calls required for"] + #[doc = " [`xcm::latest::Instruction::Transact`] instruction, `TransactionPaymentCallApi` can be used."] + pub struct XcmPaymentApi; + impl XcmPaymentApi { + #[doc = " Returns a list of acceptable payment assets."] + #[doc = ""] + #[doc = " # Arguments"] + #[doc = ""] + #[doc = " * `xcm_version`: Version."] + pub fn query_acceptable_payment_assets( + &self, + xcm_version: types::query_acceptable_payment_assets::XcmVersion, + ) -> ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload< + types::QueryAcceptablePaymentAssets, + types::query_acceptable_payment_assets::output::Output, + > { + ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload::new_static( + "XcmPaymentApi", + "query_acceptable_payment_assets", + types::QueryAcceptablePaymentAssets { xcm_version }, + [ + 232u8, 67u8, 173u8, 246u8, 152u8, 193u8, 90u8, 68u8, 49u8, 200u8, + 118u8, 68u8, 139u8, 225u8, 161u8, 38u8, 177u8, 158u8, 83u8, 135u8, + 180u8, 97u8, 4u8, 94u8, 0u8, 232u8, 114u8, 119u8, 77u8, 5u8, 8u8, + 236u8, + ], + ) + } + #[doc = " Returns a weight needed to execute a XCM."] + #[doc = ""] + #[doc = " # Arguments"] + #[doc = ""] + #[doc = " * `message`: `VersionedXcm`."] + pub fn query_xcm_weight( + &self, + message: types::query_xcm_weight::Message, + ) -> ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload< + types::QueryXcmWeight, + types::query_xcm_weight::output::Output, + > { + ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload::new_static( + "XcmPaymentApi", + "query_xcm_weight", + types::QueryXcmWeight { message }, + [ + 58u8, 118u8, 149u8, 47u8, 144u8, 85u8, 10u8, 89u8, 29u8, 123u8, 249u8, + 209u8, 165u8, 160u8, 43u8, 246u8, 12u8, 106u8, 89u8, 20u8, 219u8, + 133u8, 189u8, 58u8, 14u8, 136u8, 189u8, 142u8, 123u8, 145u8, 77u8, + 68u8, + ], + ) + } + #[doc = " Converts a weight into a fee for the specified `AssetId`."] + #[doc = ""] + #[doc = " # Arguments"] + #[doc = ""] + #[doc = " * `weight`: convertible `Weight`."] + #[doc = " * `asset`: `VersionedAssetId`."] + pub fn query_weight_to_asset_fee( + &self, + weight: types::query_weight_to_asset_fee::Weight, + asset: types::query_weight_to_asset_fee::Asset, + ) -> ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload< + types::QueryWeightToAssetFee, + types::query_weight_to_asset_fee::output::Output, + > { + ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload::new_static( + "XcmPaymentApi", + "query_weight_to_asset_fee", + types::QueryWeightToAssetFee { weight, asset }, + [ + 86u8, 75u8, 169u8, 75u8, 0u8, 231u8, 241u8, 122u8, 197u8, 232u8, 188u8, + 66u8, 247u8, 240u8, 170u8, 39u8, 199u8, 82u8, 104u8, 16u8, 28u8, 40u8, + 214u8, 232u8, 177u8, 212u8, 117u8, 16u8, 181u8, 240u8, 33u8, 126u8, + ], + ) + } + #[doc = " Get delivery fees for sending a specific `message` to a `destination`."] + #[doc = " These always come in a specific asset, defined by the chain."] + #[doc = ""] + #[doc = " # Arguments"] + #[doc = " * `message`: The message that'll be sent, necessary because most delivery fees are based on the"] + #[doc = " size of the message."] + #[doc = " * `destination`: The destination to send the message to. Different destinations may use"] + #[doc = " different senders that charge different fees."] + pub fn query_delivery_fees( + &self, + destination: types::query_delivery_fees::Destination, + message: types::query_delivery_fees::Message, + ) -> ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload< + types::QueryDeliveryFees, + types::query_delivery_fees::output::Output, + > { + ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload::new_static( + "XcmPaymentApi", + "query_delivery_fees", + types::QueryDeliveryFees { + destination, + message, + }, + [ + 248u8, 169u8, 153u8, 16u8, 58u8, 94u8, 83u8, 239u8, 80u8, 12u8, 183u8, + 141u8, 169u8, 8u8, 137u8, 178u8, 241u8, 228u8, 241u8, 66u8, 89u8, + 202u8, 78u8, 125u8, 240u8, 248u8, 109u8, 41u8, 189u8, 119u8, 20u8, + 149u8, + ], + ) + } + } + pub mod types { + use super::runtime_types; + pub mod query_acceptable_payment_assets { + use super::runtime_types; + pub type XcmVersion = ::core::primitive::u32; + pub mod output { + use super::runtime_types; + pub type Output = ::core::result::Result< + ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::xcm::VersionedAssetId, + >, + runtime_types::xcm_fee_payment_runtime_api::Error, + >; + } + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct QueryAcceptablePaymentAssets { + pub xcm_version: query_acceptable_payment_assets::XcmVersion, + } + pub mod query_xcm_weight { + use super::runtime_types; + pub type Message = runtime_types::xcm::VersionedXcm1; + pub mod output { + use super::runtime_types; + pub type Output = ::core::result::Result< + runtime_types::sp_weights::weight_v2::Weight, + runtime_types::xcm_fee_payment_runtime_api::Error, + >; + } + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct QueryXcmWeight { + pub message: query_xcm_weight::Message, + } + pub mod query_weight_to_asset_fee { + use super::runtime_types; + pub type Weight = runtime_types::sp_weights::weight_v2::Weight; + pub type Asset = runtime_types::xcm::VersionedAssetId; + pub mod output { + use super::runtime_types; + pub type Output = ::core::result::Result< + ::core::primitive::u128, + runtime_types::xcm_fee_payment_runtime_api::Error, + >; + } + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct QueryWeightToAssetFee { + pub weight: query_weight_to_asset_fee::Weight, + pub asset: query_weight_to_asset_fee::Asset, + } + pub mod query_delivery_fees { + use super::runtime_types; + pub type Destination = runtime_types::xcm::VersionedLocation; + pub type Message = runtime_types::xcm::VersionedXcm1; + pub mod output { + use super::runtime_types; + pub type Output = ::core::result::Result< + runtime_types::xcm::VersionedAssets, + runtime_types::xcm_fee_payment_runtime_api::Error, + >; + } + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct QueryDeliveryFees { + pub destination: query_delivery_fees::Destination, + pub message: query_delivery_fees::Message, + } + } + } pub mod metadata { use super::root_mod; use super::runtime_types; @@ -797,10 +1047,10 @@ pub mod api { "validators", types::Validators {}, [ - 56u8, 64u8, 189u8, 234u8, 85u8, 75u8, 2u8, 212u8, 192u8, 95u8, 230u8, - 201u8, 98u8, 220u8, 78u8, 20u8, 101u8, 16u8, 153u8, 192u8, 133u8, - 179u8, 217u8, 98u8, 247u8, 143u8, 104u8, 147u8, 47u8, 255u8, 111u8, - 72u8, + 203u8, 103u8, 117u8, 19u8, 54u8, 45u8, 218u8, 47u8, 46u8, 93u8, 221u8, + 120u8, 188u8, 43u8, 183u8, 253u8, 108u8, 177u8, 242u8, 168u8, 97u8, + 191u8, 129u8, 190u8, 80u8, 182u8, 43u8, 75u8, 126u8, 241u8, 248u8, + 188u8, ], ) } @@ -838,9 +1088,9 @@ pub mod api { "availability_cores", types::AvailabilityCores {}, [ - 238u8, 20u8, 188u8, 206u8, 26u8, 17u8, 72u8, 123u8, 33u8, 54u8, 66u8, - 13u8, 244u8, 246u8, 228u8, 177u8, 176u8, 251u8, 82u8, 12u8, 170u8, - 29u8, 39u8, 158u8, 16u8, 23u8, 253u8, 169u8, 117u8, 12u8, 0u8, 65u8, + 237u8, 214u8, 4u8, 255u8, 105u8, 58u8, 207u8, 5u8, 161u8, 200u8, 229u8, + 237u8, 83u8, 29u8, 131u8, 64u8, 244u8, 255u8, 15u8, 4u8, 224u8, 242u8, + 16u8, 182u8, 134u8, 20u8, 111u8, 114u8, 242u8, 218u8, 138u8, 144u8, ], ) } @@ -978,10 +1228,9 @@ pub mod api { "candidate_pending_availability", types::CandidatePendingAvailability { para_id }, [ - 139u8, 185u8, 205u8, 255u8, 131u8, 180u8, 248u8, 168u8, 25u8, 124u8, - 105u8, 141u8, 59u8, 118u8, 109u8, 136u8, 103u8, 200u8, 5u8, 218u8, - 72u8, 55u8, 114u8, 89u8, 207u8, 140u8, 51u8, 86u8, 167u8, 41u8, 221u8, - 86u8, + 244u8, 247u8, 40u8, 151u8, 56u8, 125u8, 160u8, 14u8, 133u8, 36u8, 95u8, + 142u8, 195u8, 41u8, 58u8, 243u8, 51u8, 140u8, 131u8, 63u8, 3u8, 143u8, + 104u8, 164u8, 193u8, 39u8, 220u8, 141u8, 141u8, 17u8, 182u8, 168u8, ], ) } @@ -997,10 +1246,9 @@ pub mod api { "candidate_events", types::CandidateEvents {}, [ - 101u8, 145u8, 200u8, 182u8, 213u8, 111u8, 180u8, 73u8, 14u8, 107u8, - 110u8, 145u8, 122u8, 35u8, 223u8, 219u8, 66u8, 101u8, 130u8, 255u8, - 44u8, 46u8, 50u8, 61u8, 104u8, 237u8, 34u8, 16u8, 179u8, 214u8, 115u8, - 7u8, + 75u8, 75u8, 47u8, 107u8, 25u8, 45u8, 177u8, 137u8, 39u8, 157u8, 170u8, + 247u8, 55u8, 83u8, 48u8, 240u8, 120u8, 227u8, 107u8, 42u8, 84u8, 78u8, + 79u8, 170u8, 249u8, 233u8, 249u8, 121u8, 105u8, 119u8, 7u8, 248u8, ], ) } @@ -1075,9 +1323,9 @@ pub mod api { "on_chain_votes", types::OnChainVotes {}, [ - 8u8, 253u8, 248u8, 13u8, 221u8, 83u8, 199u8, 65u8, 180u8, 193u8, 232u8, - 179u8, 56u8, 186u8, 72u8, 128u8, 27u8, 168u8, 177u8, 82u8, 194u8, - 139u8, 78u8, 32u8, 147u8, 67u8, 27u8, 252u8, 118u8, 60u8, 74u8, 31u8, + 92u8, 45u8, 100u8, 230u8, 156u8, 157u8, 244u8, 49u8, 130u8, 181u8, + 20u8, 225u8, 159u8, 38u8, 33u8, 32u8, 147u8, 149u8, 41u8, 20u8, 158u8, + 61u8, 134u8, 225u8, 140u8, 5u8, 160u8, 223u8, 8u8, 11u8, 244u8, 236u8, ], ) } @@ -1096,10 +1344,9 @@ pub mod api { "session_info", types::SessionInfo { index }, [ - 77u8, 115u8, 39u8, 190u8, 116u8, 250u8, 66u8, 128u8, 168u8, 24u8, - 120u8, 153u8, 111u8, 125u8, 249u8, 115u8, 112u8, 169u8, 208u8, 31u8, - 95u8, 234u8, 14u8, 242u8, 14u8, 190u8, 120u8, 171u8, 202u8, 67u8, 81u8, - 237u8, + 109u8, 63u8, 65u8, 75u8, 87u8, 156u8, 145u8, 106u8, 214u8, 111u8, 24u8, + 111u8, 229u8, 171u8, 147u8, 148u8, 51u8, 80u8, 156u8, 94u8, 49u8, + 229u8, 151u8, 155u8, 255u8, 0u8, 72u8, 104u8, 42u8, 124u8, 222u8, 90u8, ], ) } @@ -1119,10 +1366,9 @@ pub mod api { "submit_pvf_check_statement", types::SubmitPvfCheckStatement { stmt, signature }, [ - 91u8, 138u8, 75u8, 79u8, 171u8, 224u8, 206u8, 152u8, 202u8, 131u8, - 251u8, 200u8, 75u8, 99u8, 49u8, 192u8, 175u8, 212u8, 139u8, 236u8, - 188u8, 243u8, 82u8, 62u8, 190u8, 79u8, 113u8, 23u8, 222u8, 29u8, 255u8, - 196u8, + 10u8, 97u8, 0u8, 72u8, 221u8, 159u8, 123u8, 113u8, 166u8, 212u8, 213u8, + 173u8, 250u8, 217u8, 54u8, 27u8, 120u8, 76u8, 219u8, 71u8, 28u8, 213u8, + 243u8, 103u8, 44u8, 198u8, 102u8, 43u8, 15u8, 81u8, 228u8, 110u8, ], ) } @@ -1203,9 +1449,9 @@ pub mod api { "session_executor_params", types::SessionExecutorParams { session_index }, [ - 207u8, 66u8, 10u8, 104u8, 146u8, 219u8, 75u8, 157u8, 93u8, 224u8, - 215u8, 13u8, 255u8, 62u8, 134u8, 168u8, 185u8, 101u8, 39u8, 78u8, 98u8, - 44u8, 129u8, 38u8, 48u8, 244u8, 103u8, 205u8, 66u8, 121u8, 18u8, 247u8, + 94u8, 35u8, 29u8, 188u8, 247u8, 116u8, 165u8, 43u8, 248u8, 76u8, 21u8, + 237u8, 26u8, 25u8, 105u8, 27u8, 24u8, 245u8, 97u8, 25u8, 47u8, 118u8, + 98u8, 231u8, 27u8, 76u8, 172u8, 207u8, 90u8, 103u8, 52u8, 168u8, ], ) } @@ -1222,9 +1468,9 @@ pub mod api { "unapplied_slashes", types::UnappliedSlashes {}, [ - 205u8, 16u8, 246u8, 48u8, 72u8, 160u8, 7u8, 136u8, 225u8, 2u8, 209u8, - 254u8, 255u8, 115u8, 49u8, 214u8, 131u8, 22u8, 210u8, 9u8, 111u8, - 170u8, 109u8, 247u8, 110u8, 42u8, 55u8, 68u8, 85u8, 37u8, 250u8, 4u8, + 37u8, 39u8, 110u8, 177u8, 177u8, 107u8, 186u8, 189u8, 36u8, 252u8, + 88u8, 92u8, 92u8, 3u8, 118u8, 28u8, 72u8, 180u8, 56u8, 113u8, 168u8, + 228u8, 180u8, 53u8, 56u8, 77u8, 129u8, 94u8, 68u8, 18u8, 199u8, 163u8, ], ) } @@ -1242,9 +1488,9 @@ pub mod api { "key_ownership_proof", types::KeyOwnershipProof { validator_id }, [ - 194u8, 237u8, 59u8, 4u8, 194u8, 235u8, 38u8, 58u8, 58u8, 221u8, 189u8, - 69u8, 254u8, 2u8, 242u8, 200u8, 86u8, 4u8, 138u8, 184u8, 198u8, 58u8, - 200u8, 34u8, 243u8, 91u8, 122u8, 35u8, 18u8, 83u8, 152u8, 191u8, + 75u8, 218u8, 234u8, 239u8, 79u8, 135u8, 77u8, 217u8, 172u8, 222u8, + 123u8, 195u8, 0u8, 79u8, 68u8, 22u8, 143u8, 185u8, 45u8, 209u8, 235u8, + 205u8, 61u8, 159u8, 205u8, 15u8, 169u8, 73u8, 84u8, 12u8, 240u8, 155u8, ], ) } @@ -1267,9 +1513,9 @@ pub mod api { key_ownership_proof, }, [ - 98u8, 63u8, 249u8, 13u8, 163u8, 161u8, 43u8, 96u8, 75u8, 65u8, 3u8, - 116u8, 8u8, 149u8, 122u8, 190u8, 179u8, 108u8, 17u8, 22u8, 59u8, 134u8, - 43u8, 31u8, 13u8, 254u8, 21u8, 112u8, 129u8, 16u8, 5u8, 180u8, + 107u8, 224u8, 213u8, 121u8, 155u8, 13u8, 89u8, 111u8, 110u8, 3u8, + 143u8, 126u8, 104u8, 78u8, 27u8, 220u8, 212u8, 51u8, 70u8, 241u8, 98u8, + 135u8, 61u8, 253u8, 19u8, 250u8, 54u8, 46u8, 195u8, 234u8, 92u8, 105u8, ], ) } @@ -1306,9 +1552,10 @@ pub mod api { "para_backing_state", types::ParaBackingState { _0 }, [ - 26u8, 210u8, 45u8, 233u8, 133u8, 180u8, 12u8, 156u8, 59u8, 249u8, 10u8, - 38u8, 32u8, 28u8, 25u8, 30u8, 83u8, 33u8, 142u8, 21u8, 12u8, 151u8, - 182u8, 128u8, 131u8, 192u8, 240u8, 73u8, 119u8, 64u8, 254u8, 139u8, + 207u8, 6u8, 220u8, 174u8, 230u8, 61u8, 153u8, 23u8, 219u8, 185u8, + 118u8, 139u8, 184u8, 122u8, 192u8, 47u8, 166u8, 165u8, 171u8, 69u8, + 119u8, 198u8, 51u8, 56u8, 141u8, 191u8, 148u8, 32u8, 104u8, 183u8, 7u8, + 51u8, ], ) } @@ -1350,6 +1597,82 @@ pub mod api { ], ) } + #[doc = " Get node features."] + #[doc = " This is a staging method! Do not use on production runtimes!"] + pub fn node_features( + &self, + ) -> ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload< + types::NodeFeatures, + types::node_features::output::Output, + > { + ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload::new_static( + "ParachainHost", + "node_features", + types::NodeFeatures {}, + [ + 94u8, 110u8, 38u8, 62u8, 66u8, 234u8, 216u8, 228u8, 36u8, 17u8, 33u8, + 56u8, 184u8, 122u8, 34u8, 254u8, 46u8, 62u8, 107u8, 227u8, 3u8, 126u8, + 220u8, 142u8, 92u8, 226u8, 123u8, 236u8, 34u8, 234u8, 82u8, 80u8, + ], + ) + } + #[doc = " Approval voting configuration parameters"] + pub fn approval_voting_params( + &self, + ) -> ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload< + types::ApprovalVotingParams, + types::approval_voting_params::output::Output, + > { + ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload::new_static( + "ParachainHost", + "approval_voting_params", + types::ApprovalVotingParams {}, + [ + 89u8, 130u8, 95u8, 58u8, 124u8, 176u8, 43u8, 109u8, 222u8, 178u8, + 241u8, 177u8, 242u8, 32u8, 84u8, 22u8, 252u8, 178u8, 168u8, 17u8, 38u8, + 249u8, 25u8, 229u8, 75u8, 119u8, 150u8, 112u8, 144u8, 118u8, 189u8, + 253u8, + ], + ) + } + #[doc = " Claim queue"] + pub fn claim_queue( + &self, + ) -> ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload< + types::ClaimQueue, + types::claim_queue::output::Output, + > { + ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload::new_static( + "ParachainHost", + "claim_queue", + types::ClaimQueue {}, + [ + 43u8, 105u8, 112u8, 222u8, 33u8, 252u8, 194u8, 53u8, 104u8, 185u8, + 210u8, 179u8, 95u8, 149u8, 44u8, 86u8, 70u8, 202u8, 154u8, 196u8, + 186u8, 165u8, 103u8, 172u8, 66u8, 4u8, 135u8, 9u8, 255u8, 137u8, 52u8, + 125u8, + ], + ) + } + #[doc = " Elastic scaling support"] + pub fn candidates_pending_availability( + &self, + para_id: types::candidates_pending_availability::ParaId, + ) -> ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload< + types::CandidatesPendingAvailability, + types::candidates_pending_availability::output::Output, + > { + ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload::new_static( + "ParachainHost", + "candidates_pending_availability", + types::CandidatesPendingAvailability { para_id }, + [ + 214u8, 41u8, 247u8, 245u8, 26u8, 171u8, 246u8, 174u8, 66u8, 162u8, 3u8, + 18u8, 234u8, 184u8, 2u8, 12u8, 137u8, 186u8, 106u8, 64u8, 125u8, 64u8, + 199u8, 201u8, 19u8, 82u8, 177u8, 198u8, 134u8, 238u8, 115u8, 51u8, + ], + ) + } } pub mod types { use super::runtime_types; @@ -1358,7 +1681,7 @@ pub mod api { pub mod output { use super::runtime_types; pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::validator_app::Public, + runtime_types::polkadot_primitives::v7::validator_app::Public, >; } } @@ -1384,10 +1707,10 @@ pub mod api { pub type Output = ( ::subxt::ext::subxt_core::alloc::vec::Vec< ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::ValidatorIndex, + runtime_types::polkadot_primitives::v7::ValidatorIndex, >, >, - runtime_types::polkadot_primitives::v6::GroupRotationInfo< + runtime_types::polkadot_primitives::v7::GroupRotationInfo< ::core::primitive::u32, >, ); @@ -1413,7 +1736,7 @@ pub mod api { pub mod output { use super::runtime_types; pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::CoreState< + runtime_types::polkadot_primitives::v7::CoreState< ::subxt::ext::subxt_core::utils::H256, ::core::primitive::u32, >, @@ -1439,11 +1762,11 @@ pub mod api { use super::runtime_types; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; pub type Assumption = - runtime_types::polkadot_primitives::v6::OccupiedCoreAssumption; + runtime_types::polkadot_primitives::v7::OccupiedCoreAssumption; pub mod output { use super::runtime_types; pub type Output = ::core::option::Option< - runtime_types::polkadot_primitives::v6::PersistedValidationData< + runtime_types::polkadot_primitives::v7::PersistedValidationData< ::subxt::ext::subxt_core::utils::H256, ::core::primitive::u32, >, @@ -1475,7 +1798,7 @@ pub mod api { ::subxt::ext::subxt_core::utils::H256; pub mod output { use super::runtime_types; - pub type Output = :: core :: option :: Option < (runtime_types :: polkadot_primitives :: v6 :: PersistedValidationData < :: subxt :: ext :: subxt_core :: utils :: H256 , :: core :: primitive :: u32 > , runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash ,) > ; + pub type Output = :: core :: option :: Option < (runtime_types :: polkadot_primitives :: v7 :: PersistedValidationData < :: subxt :: ext :: subxt_core :: utils :: H256 , :: core :: primitive :: u32 > , runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash ,) > ; } } #[derive( @@ -1500,7 +1823,7 @@ pub mod api { pub mod check_validation_outputs { use super::runtime_types; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; - pub type Outputs = runtime_types::polkadot_primitives::v6::CandidateCommitments< + pub type Outputs = runtime_types::polkadot_primitives::v7::CandidateCommitments< ::core::primitive::u32, >; pub mod output { @@ -1552,7 +1875,7 @@ pub mod api { use super::runtime_types; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; pub type Assumption = - runtime_types::polkadot_primitives::v6::OccupiedCoreAssumption; + runtime_types::polkadot_primitives::v7::OccupiedCoreAssumption; pub mod output { use super::runtime_types; pub type Output = :: core :: option :: Option < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode > ; @@ -1582,7 +1905,7 @@ pub mod api { pub mod output { use super::runtime_types; pub type Output = ::core::option::Option< - runtime_types::polkadot_primitives::v6::CommittedCandidateReceipt< + runtime_types::polkadot_primitives::v7::CommittedCandidateReceipt< ::subxt::ext::subxt_core::utils::H256, >, >; @@ -1610,7 +1933,7 @@ pub mod api { pub mod output { use super::runtime_types; pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::CandidateEvent< + runtime_types::polkadot_primitives::v7::CandidateEvent< ::subxt::ext::subxt_core::utils::H256, >, >; @@ -1724,7 +2047,7 @@ pub mod api { pub mod output { use super::runtime_types; pub type Output = ::core::option::Option< - runtime_types::polkadot_primitives::v6::ScrapedOnChainVotes< + runtime_types::polkadot_primitives::v7::ScrapedOnChainVotes< ::subxt::ext::subxt_core::utils::H256, >, >; @@ -1751,7 +2074,7 @@ pub mod api { pub mod output { use super::runtime_types; pub type Output = ::core::option::Option< - runtime_types::polkadot_primitives::v6::SessionInfo, + runtime_types::polkadot_primitives::v7::SessionInfo, >; } } @@ -1774,9 +2097,9 @@ pub mod api { } pub mod submit_pvf_check_statement { use super::runtime_types; - pub type Stmt = runtime_types::polkadot_primitives::v6::PvfCheckStatement; + pub type Stmt = runtime_types::polkadot_primitives::v7::PvfCheckStatement; pub type Signature = - runtime_types::polkadot_primitives::v6::validator_app::Signature; + runtime_types::polkadot_primitives::v7::validator_app::Signature; pub mod output { use super::runtime_types; pub type Output = (); @@ -1826,7 +2149,7 @@ pub mod api { use super::runtime_types; pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; pub type Assumption = - runtime_types::polkadot_primitives::v6::OccupiedCoreAssumption; + runtime_types::polkadot_primitives::v7::OccupiedCoreAssumption; pub mod output { use super::runtime_types; pub type Output = :: core :: option :: Option < runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash > ; @@ -1857,7 +2180,7 @@ pub mod api { pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec<( ::core::primitive::u32, runtime_types::polkadot_core_primitives::CandidateHash, - runtime_types::polkadot_primitives::v6::DisputeState< + runtime_types::polkadot_primitives::v7::DisputeState< ::core::primitive::u32, >, )>; @@ -1884,7 +2207,7 @@ pub mod api { pub mod output { use super::runtime_types; pub type Output = ::core::option::Option< - runtime_types::polkadot_primitives::v6::executor_params::ExecutorParams, + runtime_types::polkadot_primitives::v7::executor_params::ExecutorParams, >; } } @@ -1912,7 +2235,7 @@ pub mod api { pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec<( ::core::primitive::u32, runtime_types::polkadot_core_primitives::CandidateHash, - runtime_types::polkadot_primitives::v6::slashing::PendingSlashes, + runtime_types::polkadot_primitives::v7::slashing::PendingSlashes, )>; } } @@ -1934,10 +2257,10 @@ pub mod api { pub mod key_ownership_proof { use super::runtime_types; pub type ValidatorId = - runtime_types::polkadot_primitives::v6::validator_app::Public; + runtime_types::polkadot_primitives::v7::validator_app::Public; pub mod output { use super::runtime_types; - pub type Output = :: core :: option :: Option < runtime_types :: polkadot_primitives :: v6 :: slashing :: OpaqueKeyOwnershipProof > ; + pub type Output = :: core :: option :: Option < runtime_types :: polkadot_primitives :: v7 :: slashing :: OpaqueKeyOwnershipProof > ; } } #[derive( @@ -1960,9 +2283,9 @@ pub mod api { pub mod submit_report_dispute_lost { use super::runtime_types; pub type DisputeProof = - runtime_types::polkadot_primitives::v6::slashing::DisputeProof; + runtime_types::polkadot_primitives::v7::slashing::DisputeProof; pub type KeyOwnershipProof = - runtime_types::polkadot_primitives::v6::slashing::OpaqueKeyOwnershipProof; + runtime_types::polkadot_primitives::v7::slashing::OpaqueKeyOwnershipProof; pub mod output { use super::runtime_types; pub type Output = ::core::option::Option<()>; @@ -2014,7 +2337,7 @@ pub mod api { pub mod output { use super::runtime_types; pub type Output = ::core::option::Option< - runtime_types::polkadot_primitives::v6::async_backing::BackingState< + runtime_types::polkadot_primitives::v7::async_backing::BackingState< ::subxt::ext::subxt_core::utils::H256, ::core::primitive::u32, >, @@ -2042,7 +2365,7 @@ pub mod api { use super::runtime_types; pub mod output { use super::runtime_types; - pub type Output = runtime_types :: polkadot_primitives :: v6 :: async_backing :: AsyncBackingParams ; + pub type Output = runtime_types :: polkadot_primitives :: v7 :: async_backing :: AsyncBackingParams ; } } #[derive( @@ -2065,7 +2388,7 @@ pub mod api { pub mod output { use super::runtime_types; pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::ValidatorIndex, + runtime_types::polkadot_primitives::v7::ValidatorIndex, >; } } @@ -2084,6 +2407,110 @@ pub mod api { crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] pub struct DisabledValidators {} + pub mod node_features { + use super::runtime_types; + pub mod output { + use super::runtime_types; + pub type Output = ::subxt::ext::subxt_core::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::ext::subxt_core::utils::bits::Lsb0, + >; + } + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct NodeFeatures {} + pub mod approval_voting_params { + use super::runtime_types; + pub mod output { + use super::runtime_types; + pub type Output = + runtime_types::polkadot_primitives::v7::ApprovalVotingParams; + } + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct ApprovalVotingParams {} + pub mod claim_queue { + use super::runtime_types; + pub mod output { + use super::runtime_types; + pub type Output = ::subxt::ext::subxt_core::utils::KeyedVec< + runtime_types::polkadot_primitives::v7::CoreIndex, + ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::polkadot_parachain_primitives::primitives::Id, + >, + >; + } + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct ClaimQueue {} + pub mod candidates_pending_availability { + use super::runtime_types; + pub type ParaId = runtime_types::polkadot_parachain_primitives::primitives::Id; + pub mod output { + use super::runtime_types; + pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::polkadot_primitives::v7::CommittedCandidateReceipt< + ::subxt::ext::subxt_core::utils::H256, + >, + >; + } + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct CandidatesPendingAvailability { + pub para_id: candidates_pending_availability::ParaId, + } } } pub mod beefy_api { @@ -2123,9 +2550,10 @@ pub mod api { "validator_set", types::ValidatorSet {}, [ - 26u8, 174u8, 151u8, 215u8, 199u8, 11u8, 123u8, 18u8, 209u8, 187u8, - 70u8, 245u8, 59u8, 23u8, 11u8, 26u8, 167u8, 202u8, 83u8, 213u8, 99u8, - 74u8, 143u8, 140u8, 34u8, 9u8, 225u8, 217u8, 244u8, 169u8, 30u8, 217u8, + 89u8, 55u8, 143u8, 190u8, 77u8, 133u8, 228u8, 92u8, 245u8, 253u8, 70u8, + 232u8, 213u8, 119u8, 88u8, 47u8, 122u8, 60u8, 179u8, 61u8, 199u8, + 251u8, 45u8, 230u8, 76u8, 202u8, 49u8, 178u8, 204u8, 143u8, 196u8, + 135u8, ], ) } @@ -2153,10 +2581,10 @@ pub mod api { key_owner_proof, }, [ - 20u8, 162u8, 43u8, 173u8, 248u8, 140u8, 57u8, 151u8, 189u8, 96u8, 68u8, - 130u8, 14u8, 162u8, 230u8, 61u8, 169u8, 189u8, 239u8, 71u8, 121u8, - 137u8, 141u8, 206u8, 91u8, 164u8, 175u8, 93u8, 33u8, 161u8, 166u8, - 192u8, + 170u8, 93u8, 106u8, 193u8, 102u8, 51u8, 222u8, 58u8, 165u8, 172u8, + 245u8, 128u8, 116u8, 25u8, 252u8, 107u8, 60u8, 93u8, 218u8, 91u8, + 132u8, 18u8, 214u8, 7u8, 135u8, 13u8, 248u8, 250u8, 7u8, 255u8, 169u8, + 231u8, ], ) } @@ -2187,9 +2615,9 @@ pub mod api { authority_id, }, [ - 244u8, 175u8, 3u8, 235u8, 173u8, 34u8, 210u8, 81u8, 41u8, 5u8, 85u8, - 179u8, 53u8, 153u8, 16u8, 62u8, 103u8, 71u8, 180u8, 11u8, 165u8, 90u8, - 186u8, 156u8, 118u8, 114u8, 22u8, 108u8, 149u8, 9u8, 232u8, 174u8, + 119u8, 183u8, 178u8, 109u8, 57u8, 250u8, 176u8, 255u8, 11u8, 190u8, + 35u8, 142u8, 102u8, 112u8, 4u8, 219u8, 204u8, 81u8, 163u8, 87u8, 129u8, + 134u8, 34u8, 227u8, 213u8, 163u8, 50u8, 90u8, 54u8, 61u8, 84u8, 215u8, ], ) } @@ -2624,10 +3052,9 @@ pub mod api { "grandpa_authorities", types::GrandpaAuthorities {}, [ - 166u8, 76u8, 160u8, 101u8, 242u8, 145u8, 213u8, 10u8, 16u8, 130u8, - 230u8, 196u8, 125u8, 152u8, 92u8, 143u8, 119u8, 223u8, 140u8, 189u8, - 203u8, 95u8, 52u8, 105u8, 147u8, 107u8, 135u8, 228u8, 62u8, 178u8, - 128u8, 33u8, + 8u8, 1u8, 99u8, 227u8, 52u8, 95u8, 230u8, 139u8, 198u8, 90u8, 159u8, + 146u8, 193u8, 81u8, 37u8, 27u8, 216u8, 227u8, 108u8, 126u8, 12u8, 94u8, + 125u8, 183u8, 143u8, 231u8, 87u8, 101u8, 114u8, 190u8, 193u8, 180u8, ], ) } @@ -2655,10 +3082,9 @@ pub mod api { key_owner_proof, }, [ - 112u8, 94u8, 150u8, 250u8, 132u8, 127u8, 185u8, 24u8, 113u8, 62u8, - 28u8, 171u8, 83u8, 9u8, 41u8, 228u8, 92u8, 137u8, 29u8, 190u8, 214u8, - 232u8, 100u8, 66u8, 100u8, 168u8, 149u8, 122u8, 93u8, 17u8, 236u8, - 104u8, + 27u8, 32u8, 16u8, 79u8, 172u8, 124u8, 44u8, 13u8, 176u8, 89u8, 69u8, + 60u8, 45u8, 176u8, 72u8, 151u8, 252u8, 5u8, 243u8, 82u8, 170u8, 51u8, + 179u8, 197u8, 117u8, 177u8, 110u8, 111u8, 97u8, 15u8, 109u8, 169u8, ], ) } @@ -2689,10 +3115,9 @@ pub mod api { authority_id, }, [ - 40u8, 126u8, 113u8, 27u8, 245u8, 45u8, 123u8, 138u8, 12u8, 3u8, 125u8, - 186u8, 151u8, 53u8, 186u8, 93u8, 13u8, 150u8, 163u8, 176u8, 206u8, - 89u8, 244u8, 127u8, 182u8, 85u8, 203u8, 41u8, 101u8, 183u8, 209u8, - 179u8, + 13u8, 144u8, 66u8, 235u8, 24u8, 190u8, 39u8, 75u8, 29u8, 157u8, 215u8, + 181u8, 173u8, 145u8, 224u8, 244u8, 189u8, 79u8, 6u8, 116u8, 139u8, + 196u8, 54u8, 16u8, 89u8, 190u8, 121u8, 43u8, 137u8, 150u8, 117u8, 68u8, ], ) } @@ -2848,9 +3273,9 @@ pub mod api { "configuration", types::Configuration {}, [ - 8u8, 81u8, 234u8, 29u8, 30u8, 198u8, 76u8, 19u8, 188u8, 198u8, 127u8, - 33u8, 141u8, 95u8, 132u8, 106u8, 31u8, 41u8, 215u8, 54u8, 240u8, 65u8, - 59u8, 160u8, 188u8, 237u8, 10u8, 143u8, 250u8, 79u8, 45u8, 161u8, + 50u8, 198u8, 27u8, 26u8, 92u8, 199u8, 8u8, 181u8, 12u8, 199u8, 116u8, + 247u8, 95u8, 70u8, 241u8, 24u8, 14u8, 250u8, 179u8, 77u8, 251u8, 55u8, + 133u8, 8u8, 142u8, 107u8, 6u8, 214u8, 228u8, 38u8, 134u8, 153u8, ], ) } @@ -2885,9 +3310,10 @@ pub mod api { "current_epoch", types::CurrentEpoch {}, [ - 73u8, 171u8, 149u8, 138u8, 230u8, 95u8, 241u8, 189u8, 207u8, 145u8, - 103u8, 76u8, 79u8, 44u8, 250u8, 68u8, 238u8, 4u8, 149u8, 234u8, 165u8, - 91u8, 89u8, 228u8, 132u8, 201u8, 203u8, 98u8, 209u8, 137u8, 8u8, 63u8, + 70u8, 68u8, 222u8, 110u8, 96u8, 143u8, 126u8, 136u8, 182u8, 163u8, + 104u8, 122u8, 21u8, 156u8, 6u8, 26u8, 86u8, 145u8, 153u8, 133u8, 251u8, + 137u8, 238u8, 218u8, 132u8, 218u8, 222u8, 140u8, 190u8, 232u8, 197u8, + 86u8, ], ) } @@ -2904,10 +3330,10 @@ pub mod api { "next_epoch", types::NextEpoch {}, [ - 191u8, 124u8, 183u8, 209u8, 73u8, 171u8, 164u8, 244u8, 68u8, 239u8, - 196u8, 54u8, 188u8, 85u8, 229u8, 175u8, 29u8, 89u8, 148u8, 108u8, - 208u8, 156u8, 62u8, 193u8, 167u8, 184u8, 251u8, 245u8, 123u8, 87u8, - 19u8, 225u8, + 141u8, 86u8, 122u8, 185u8, 215u8, 255u8, 142u8, 131u8, 8u8, 178u8, + 143u8, 200u8, 148u8, 84u8, 174u8, 215u8, 91u8, 251u8, 243u8, 155u8, + 92u8, 13u8, 44u8, 53u8, 128u8, 26u8, 165u8, 172u8, 49u8, 33u8, 130u8, + 148u8, ], ) } @@ -2935,10 +3361,9 @@ pub mod api { "generate_key_ownership_proof", types::GenerateKeyOwnershipProof { slot, authority_id }, [ - 235u8, 220u8, 75u8, 20u8, 175u8, 246u8, 127u8, 176u8, 225u8, 25u8, - 240u8, 252u8, 58u8, 254u8, 153u8, 133u8, 197u8, 168u8, 19u8, 231u8, - 234u8, 173u8, 58u8, 152u8, 212u8, 123u8, 13u8, 131u8, 84u8, 221u8, - 98u8, 46u8, + 13u8, 228u8, 75u8, 150u8, 203u8, 132u8, 82u8, 188u8, 17u8, 70u8, 169u8, + 19u8, 102u8, 96u8, 217u8, 209u8, 215u8, 196u8, 78u8, 141u8, 12u8, 14u8, + 151u8, 65u8, 173u8, 2u8, 100u8, 150u8, 18u8, 99u8, 19u8, 196u8, ], ) } @@ -2966,9 +3391,9 @@ pub mod api { key_owner_proof, }, [ - 9u8, 163u8, 149u8, 31u8, 89u8, 32u8, 224u8, 116u8, 102u8, 46u8, 10u8, - 189u8, 35u8, 166u8, 111u8, 156u8, 204u8, 80u8, 35u8, 64u8, 223u8, 3u8, - 4u8, 0u8, 97u8, 118u8, 124u8, 142u8, 224u8, 160u8, 2u8, 50u8, + 99u8, 80u8, 38u8, 173u8, 235u8, 48u8, 229u8, 88u8, 250u8, 165u8, 57u8, + 245u8, 85u8, 156u8, 114u8, 190u8, 144u8, 78u8, 37u8, 22u8, 36u8, 36u8, + 53u8, 174u8, 118u8, 222u8, 16u8, 159u8, 201u8, 254u8, 233u8, 82u8, ], ) } @@ -3151,9 +3576,9 @@ pub mod api { "authorities", types::Authorities {}, [ - 231u8, 109u8, 175u8, 33u8, 103u8, 6u8, 157u8, 241u8, 62u8, 92u8, 246u8, - 9u8, 109u8, 137u8, 233u8, 96u8, 103u8, 59u8, 201u8, 132u8, 102u8, 32u8, - 19u8, 183u8, 106u8, 146u8, 41u8, 172u8, 147u8, 55u8, 156u8, 77u8, + 165u8, 81u8, 77u8, 215u8, 27u8, 128u8, 36u8, 135u8, 216u8, 203u8, 60u8, + 250u8, 235u8, 22u8, 149u8, 99u8, 233u8, 114u8, 62u8, 69u8, 27u8, 185u8, + 45u8, 164u8, 136u8, 168u8, 108u8, 168u8, 24u8, 3u8, 66u8, 155u8, ], ) } @@ -3655,83 +4080,95 @@ pub mod api { pub mod genesis_builder { use super::root_mod; use super::runtime_types; - #[doc = " API to interact with GenesisConfig for the runtime"] + #[doc = " API to interact with RuntimeGenesisConfig for the runtime"] pub struct GenesisBuilder; impl GenesisBuilder { - #[doc = " Creates the default `GenesisConfig` and returns it as a JSON blob."] + #[doc = " Build `RuntimeGenesisConfig` from a JSON blob not using any defaults and store it in the"] + #[doc = " storage."] #[doc = ""] - #[doc = " This function instantiates the default `GenesisConfig` struct for the runtime and serializes it into a JSON"] - #[doc = " blob. It returns a `Vec` containing the JSON representation of the default `GenesisConfig`."] - pub fn create_default_config( + #[doc = " In the case of a FRAME-based runtime, this function deserializes the full `RuntimeGenesisConfig` from the given JSON blob and"] + #[doc = " puts it into the storage. If the provided JSON blob is incorrect or incomplete or the"] + #[doc = " deserialization fails, an error is returned."] + #[doc = ""] + #[doc = " Please note that provided JSON blob must contain all `RuntimeGenesisConfig` fields, no"] + #[doc = " defaults will be used."] + pub fn build_state( &self, + json: types::build_state::Json, ) -> ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload< - types::CreateDefaultConfig, - types::create_default_config::output::Output, + types::BuildState, + types::build_state::output::Output, > { ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload::new_static( "GenesisBuilder", - "create_default_config", - types::CreateDefaultConfig {}, + "build_state", + types::BuildState { json }, [ - 238u8, 5u8, 139u8, 81u8, 184u8, 155u8, 221u8, 118u8, 190u8, 76u8, - 229u8, 67u8, 132u8, 89u8, 83u8, 80u8, 56u8, 171u8, 169u8, 64u8, 123u8, - 20u8, 129u8, 159u8, 28u8, 135u8, 84u8, 52u8, 192u8, 98u8, 104u8, 214u8, + 203u8, 233u8, 104u8, 116u8, 111u8, 131u8, 201u8, 235u8, 117u8, 116u8, + 140u8, 185u8, 93u8, 25u8, 155u8, 210u8, 56u8, 49u8, 23u8, 32u8, 253u8, + 92u8, 149u8, 241u8, 85u8, 245u8, 137u8, 45u8, 209u8, 189u8, 81u8, 2u8, ], ) } - #[doc = " Build `GenesisConfig` from a JSON blob not using any defaults and store it in the storage."] + #[doc = " Returns a JSON blob representation of the built-in `RuntimeGenesisConfig` identified by"] + #[doc = " `id`."] #[doc = ""] - #[doc = " This function deserializes the full `GenesisConfig` from the given JSON blob and puts it into the storage."] - #[doc = " If the provided JSON blob is incorrect or incomplete or the deserialization fails, an error is returned."] - #[doc = " It is recommended to log any errors encountered during the process."] + #[doc = " If `id` is `None` the function returns JSON blob representation of the default"] + #[doc = " `RuntimeGenesisConfig` struct of the runtime. Implementation must provide default"] + #[doc = " `RuntimeGenesisConfig`."] #[doc = ""] - #[doc = " Please note that provided json blob must contain all `GenesisConfig` fields, no defaults will be used."] - pub fn build_config( + #[doc = " Otherwise function returns a JSON representation of the built-in, named"] + #[doc = " `RuntimeGenesisConfig` preset identified by `id`, or `None` if such preset does not"] + #[doc = " exists. Returned `Vec` contains bytes of JSON blob (patch) which comprises a list of"] + #[doc = " (potentially nested) key-value pairs that are intended for customizing the default"] + #[doc = " runtime genesis config. The patch shall be merged (rfc7386) with the JSON representation"] + #[doc = " of the default `RuntimeGenesisConfig` to create a comprehensive genesis config that can"] + #[doc = " be used in `build_state` method."] + pub fn get_preset( &self, - json: types::build_config::Json, + id: types::get_preset::Id, ) -> ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload< - types::BuildConfig, - types::build_config::output::Output, + types::GetPreset, + types::get_preset::output::Output, > { ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload::new_static( "GenesisBuilder", - "build_config", - types::BuildConfig { json }, + "get_preset", + types::GetPreset { id }, [ - 6u8, 98u8, 68u8, 125u8, 157u8, 26u8, 107u8, 86u8, 213u8, 227u8, 26u8, - 229u8, 122u8, 161u8, 229u8, 114u8, 123u8, 192u8, 66u8, 231u8, 148u8, - 175u8, 5u8, 185u8, 248u8, 88u8, 40u8, 122u8, 230u8, 209u8, 170u8, - 254u8, + 43u8, 153u8, 23u8, 52u8, 113u8, 161u8, 227u8, 122u8, 169u8, 135u8, + 119u8, 8u8, 128u8, 33u8, 143u8, 235u8, 13u8, 173u8, 58u8, 121u8, 178u8, + 223u8, 66u8, 217u8, 22u8, 244u8, 168u8, 113u8, 202u8, 186u8, 241u8, + 124u8, + ], + ) + } + #[doc = " Returns a list of identifiers for available builtin `RuntimeGenesisConfig` presets."] + #[doc = ""] + #[doc = " The presets from the list can be queried with [`GenesisBuilder::get_preset`] method. If"] + #[doc = " no named presets are provided by the runtime the list is empty."] + pub fn preset_names( + &self, + ) -> ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload< + types::PresetNames, + types::preset_names::output::Output, + > { + ::subxt::ext::subxt_core::runtime_api::payload::StaticPayload::new_static( + "GenesisBuilder", + "preset_names", + types::PresetNames {}, + [ + 150u8, 117u8, 54u8, 129u8, 221u8, 130u8, 186u8, 71u8, 13u8, 140u8, + 77u8, 180u8, 141u8, 37u8, 22u8, 219u8, 149u8, 218u8, 186u8, 206u8, + 80u8, 42u8, 165u8, 41u8, 99u8, 184u8, 73u8, 37u8, 125u8, 188u8, 167u8, + 122u8, ], ) } } pub mod types { use super::runtime_types; - pub mod create_default_config { - use super::runtime_types; - pub mod output { - use super::runtime_types; - pub type Output = - ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; - } - } - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - pub struct CreateDefaultConfig {} - pub mod build_config { + pub mod build_state { use super::runtime_types; pub type Json = ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; @@ -3757,9 +4194,61 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct BuildConfig { - pub json: build_config::Json, + pub struct BuildState { + pub json: build_state::Json, } + pub mod get_preset { + use super::runtime_types; + pub type Id = + ::core::option::Option<::subxt::ext::subxt_core::alloc::string::String>; + pub mod output { + use super::runtime_types; + pub type Output = ::core::option::Option< + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + >; + } + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct GetPreset { + pub id: get_preset::Id, + } + pub mod preset_names { + use super::runtime_types; + pub mod output { + use super::runtime_types; + pub type Output = ::subxt::ext::subxt_core::alloc::vec::Vec< + ::subxt::ext::subxt_core::alloc::string::String, + >; + } + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct PresetNames {} } } } @@ -3788,15 +4277,9 @@ pub mod api { pub fn transaction_payment(&self) -> transaction_payment::constants::ConstantsApi { transaction_payment::constants::ConstantsApi } - pub fn beefy(&self) -> beefy::constants::ConstantsApi { - beefy::constants::ConstantsApi - } pub fn grandpa(&self) -> grandpa::constants::ConstantsApi { grandpa::constants::ConstantsApi } - pub fn im_online(&self) -> im_online::constants::ConstantsApi { - im_online::constants::ConstantsApi - } pub fn treasury(&self) -> treasury::constants::ConstantsApi { treasury::constants::ConstantsApi } @@ -3873,6 +4356,12 @@ pub mod api { pub fn crowdloan(&self) -> crowdloan::constants::ConstantsApi { crowdloan::constants::ConstantsApi } + pub fn coretime(&self) -> coretime::constants::ConstantsApi { + coretime::constants::ConstantsApi + } + pub fn beefy(&self) -> beefy::constants::ConstantsApi { + beefy::constants::ConstantsApi + } pub fn assigned_slots(&self) -> assigned_slots::constants::ConstantsApi { assigned_slots::constants::ConstantsApi } @@ -3897,6 +4386,9 @@ pub mod api { pub fn balances(&self) -> balances::storage::StorageApi { balances::storage::StorageApi } + pub fn parameters(&self) -> parameters::storage::StorageApi { + parameters::storage::StorageApi + } pub fn transaction_payment(&self) -> transaction_payment::storage::StorageApi { transaction_payment::storage::StorageApi } @@ -3906,14 +4398,8 @@ pub mod api { pub fn offences(&self) -> offences::storage::StorageApi { offences::storage::StorageApi } - pub fn beefy(&self) -> beefy::storage::StorageApi { - beefy::storage::StorageApi - } - pub fn mmr(&self) -> mmr::storage::StorageApi { - mmr::storage::StorageApi - } - pub fn mmr_leaf(&self) -> mmr_leaf::storage::StorageApi { - mmr_leaf::storage::StorageApi + pub fn historical(&self) -> historical::storage::StorageApi { + historical::storage::StorageApi } pub fn session(&self) -> session::storage::StorageApi { session::storage::StorageApi @@ -3921,8 +4407,8 @@ pub mod api { pub fn grandpa(&self) -> grandpa::storage::StorageApi { grandpa::storage::StorageApi } - pub fn im_online(&self) -> im_online::storage::StorageApi { - im_online::storage::StorageApi + pub fn authority_discovery(&self) -> authority_discovery::storage::StorageApi { + authority_discovery::storage::StorageApi } pub fn treasury(&self) -> treasury::storage::StorageApi { treasury::storage::StorageApi @@ -4023,14 +4509,16 @@ pub mod api { pub fn message_queue(&self) -> message_queue::storage::StorageApi { message_queue::storage::StorageApi } - pub fn para_assignment_provider(&self) -> para_assignment_provider::storage::StorageApi { - para_assignment_provider::storage::StorageApi - } pub fn on_demand_assignment_provider( &self, ) -> on_demand_assignment_provider::storage::StorageApi { on_demand_assignment_provider::storage::StorageApi } + pub fn coretime_assignment_provider( + &self, + ) -> coretime_assignment_provider::storage::StorageApi { + coretime_assignment_provider::storage::StorageApi + } pub fn registrar(&self) -> registrar::storage::StorageApi { registrar::storage::StorageApi } @@ -4046,6 +4534,15 @@ pub mod api { pub fn xcm_pallet(&self) -> xcm_pallet::storage::StorageApi { xcm_pallet::storage::StorageApi } + pub fn beefy(&self) -> beefy::storage::StorageApi { + beefy::storage::StorageApi + } + pub fn mmr(&self) -> mmr::storage::StorageApi { + mmr::storage::StorageApi + } + pub fn mmr_leaf(&self) -> mmr_leaf::storage::StorageApi { + mmr_leaf::storage::StorageApi + } pub fn assigned_slots(&self) -> assigned_slots::storage::StorageApi { assigned_slots::storage::StorageApi } @@ -4076,8 +4573,8 @@ pub mod api { pub fn balances(&self) -> balances::calls::TransactionApi { balances::calls::TransactionApi } - pub fn beefy(&self) -> beefy::calls::TransactionApi { - beefy::calls::TransactionApi + pub fn parameters(&self) -> parameters::calls::TransactionApi { + parameters::calls::TransactionApi } pub fn session(&self) -> session::calls::TransactionApi { session::calls::TransactionApi @@ -4085,9 +4582,6 @@ pub mod api { pub fn grandpa(&self) -> grandpa::calls::TransactionApi { grandpa::calls::TransactionApi } - pub fn im_online(&self) -> im_online::calls::TransactionApi { - im_online::calls::TransactionApi - } pub fn treasury(&self) -> treasury::calls::TransactionApi { treasury::calls::TransactionApi } @@ -4198,9 +4692,18 @@ pub mod api { pub fn crowdloan(&self) -> crowdloan::calls::TransactionApi { crowdloan::calls::TransactionApi } + pub fn coretime(&self) -> coretime::calls::TransactionApi { + coretime::calls::TransactionApi + } pub fn xcm_pallet(&self) -> xcm_pallet::calls::TransactionApi { xcm_pallet::calls::TransactionApi } + pub fn beefy(&self) -> beefy::calls::TransactionApi { + beefy::calls::TransactionApi + } + pub fn identity_migrator(&self) -> identity_migrator::calls::TransactionApi { + identity_migrator::calls::TransactionApi + } pub fn paras_sudo_wrapper(&self) -> paras_sudo_wrapper::calls::TransactionApi { paras_sudo_wrapper::calls::TransactionApi } @@ -4213,6 +4716,9 @@ pub mod api { pub fn state_trie_migration(&self) -> state_trie_migration::calls::TransactionApi { state_trie_migration::calls::TransactionApi } + pub fn root_testing(&self) -> root_testing::calls::TransactionApi { + root_testing::calls::TransactionApi + } pub fn sudo(&self) -> sudo::calls::TransactionApi { sudo::calls::TransactionApi } @@ -4226,9 +4732,9 @@ pub mod api { .hash(); runtime_metadata_hash == [ - 175u8, 118u8, 21u8, 61u8, 145u8, 16u8, 77u8, 206u8, 11u8, 26u8, 133u8, 39u8, 11u8, - 10u8, 45u8, 3u8, 37u8, 12u8, 170u8, 170u8, 252u8, 10u8, 141u8, 176u8, 190u8, 76u8, - 176u8, 211u8, 99u8, 9u8, 160u8, 78u8, + 14u8, 54u8, 92u8, 203u8, 43u8, 180u8, 14u8, 56u8, 54u8, 132u8, 20u8, 17u8, 178u8, + 30u8, 53u8, 94u8, 194u8, 25u8, 225u8, 214u8, 155u8, 0u8, 229u8, 202u8, 79u8, 65u8, + 131u8, 103u8, 172u8, 47u8, 91u8, 207u8, ] } pub mod system { @@ -4258,7 +4764,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::remark`]."] + #[doc = "Make some on-chain remark."] + #[doc = ""] + #[doc = "Can be executed by every `origin`."] pub struct Remark { pub remark: remark::Remark, } @@ -4285,7 +4793,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_heap_pages`]."] + #[doc = "Set the number of pages in the WebAssembly environment's heap."] pub struct SetHeapPages { pub pages: set_heap_pages::Pages, } @@ -4311,7 +4819,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_code`]."] + #[doc = "Set the new runtime code."] pub struct SetCode { pub code: set_code::Code, } @@ -4338,7 +4846,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_code_without_checks`]."] + #[doc = "Set the new runtime code without doing any checks of the given `code`."] + #[doc = ""] + #[doc = "Note that runtime upgrades will not run if this is called with a not-increasing spec"] + #[doc = "version!"] pub struct SetCodeWithoutChecks { pub code: set_code_without_checks::Code, } @@ -4365,7 +4876,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_storage`]."] + #[doc = "Set some items of storage."] pub struct SetStorage { pub items: set_storage::Items, } @@ -4394,7 +4905,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::kill_storage`]."] + #[doc = "Kill some items from storage."] pub struct KillStorage { pub keys: kill_storage::Keys, } @@ -4422,7 +4933,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::kill_prefix`]."] + #[doc = "Kill all storage items with a key that starts with the given prefix."] + #[doc = ""] + #[doc = "**NOTE:** We rely on the Root origin to provide us the number of subkeys under"] + #[doc = "the prefix we are removing to accurately calculate the weight of this function."] pub struct KillPrefix { pub prefix: kill_prefix::Prefix, pub subkeys: kill_prefix::Subkeys, @@ -4451,7 +4965,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::remark_with_event`]."] + #[doc = "Make some on-chain remark and emit event."] pub struct RemarkWithEvent { pub remark: remark_with_event::Remark, } @@ -4464,10 +4978,109 @@ pub mod api { const PALLET: &'static str = "System"; const CALL: &'static str = "remark_with_event"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] + #[doc = "later."] + #[doc = ""] + #[doc = "This call requires Root origin."] + pub struct AuthorizeUpgrade { + pub code_hash: authorize_upgrade::CodeHash, + } + pub mod authorize_upgrade { + use super::runtime_types; + pub type CodeHash = ::subxt::ext::subxt_core::utils::H256; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AuthorizeUpgrade { + const PALLET: &'static str = "System"; + const CALL: &'static str = "authorize_upgrade"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] + #[doc = "later."] + #[doc = ""] + #[doc = "WARNING: This authorizes an upgrade that will take place without any safety checks, for"] + #[doc = "example that the spec name remains the same and that the version number increases. Not"] + #[doc = "recommended for normal use. Use `authorize_upgrade` instead."] + #[doc = ""] + #[doc = "This call requires Root origin."] + pub struct AuthorizeUpgradeWithoutChecks { + pub code_hash: authorize_upgrade_without_checks::CodeHash, + } + pub mod authorize_upgrade_without_checks { + use super::runtime_types; + pub type CodeHash = ::subxt::ext::subxt_core::utils::H256; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AuthorizeUpgradeWithoutChecks { + const PALLET: &'static str = "System"; + const CALL: &'static str = "authorize_upgrade_without_checks"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Provide the preimage (runtime binary) `code` for an upgrade that has been authorized."] + #[doc = ""] + #[doc = "If the authorization required a version check, this call will ensure the spec name"] + #[doc = "remains unchanged and that the spec version has increased."] + #[doc = ""] + #[doc = "Depending on the runtime's `OnSetCode` configuration, this function may directly apply"] + #[doc = "the new `code` in the same block or attempt to schedule the upgrade."] + #[doc = ""] + #[doc = "All origins are allowed."] + pub struct ApplyAuthorizedUpgrade { + pub code: apply_authorized_upgrade::Code, + } + pub mod apply_authorized_upgrade { + use super::runtime_types; + pub type Code = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ApplyAuthorizedUpgrade { + const PALLET: &'static str = "System"; + const CALL: &'static str = "apply_authorized_upgrade"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::remark`]."] + #[doc = "Make some on-chain remark."] + #[doc = ""] + #[doc = "Can be executed by every `origin`."] pub fn remark( &self, remark: types::remark::Remark, @@ -4485,7 +5098,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_heap_pages`]."] + #[doc = "Set the number of pages in the WebAssembly environment's heap."] pub fn set_heap_pages( &self, pages: types::set_heap_pages::Pages, @@ -4503,7 +5116,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_code`]."] + #[doc = "Set the new runtime code."] pub fn set_code( &self, code: types::set_code::Code, @@ -4520,7 +5133,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_code_without_checks`]."] + #[doc = "Set the new runtime code without doing any checks of the given `code`."] + #[doc = ""] + #[doc = "Note that runtime upgrades will not run if this is called with a not-increasing spec"] + #[doc = "version!"] pub fn set_code_without_checks( &self, code: types::set_code_without_checks::Code, @@ -4538,7 +5154,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_storage`]."] + #[doc = "Set some items of storage."] pub fn set_storage( &self, items: types::set_storage::Items, @@ -4556,7 +5172,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kill_storage`]."] + #[doc = "Kill some items from storage."] pub fn kill_storage( &self, keys: types::kill_storage::Keys, @@ -4574,7 +5190,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kill_prefix`]."] + #[doc = "Kill all storage items with a key that starts with the given prefix."] + #[doc = ""] + #[doc = "**NOTE:** We rely on the Root origin to provide us the number of subkeys under"] + #[doc = "the prefix we are removing to accurately calculate the weight of this function."] pub fn kill_prefix( &self, prefix: types::kill_prefix::Prefix, @@ -4593,7 +5212,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remark_with_event`]."] + #[doc = "Make some on-chain remark and emit event."] pub fn remark_with_event( &self, remark: types::remark_with_event::Remark, @@ -4610,6 +5229,79 @@ pub mod api { ], ) } + #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] + #[doc = "later."] + #[doc = ""] + #[doc = "This call requires Root origin."] + pub fn authorize_upgrade( + &self, + code_hash: types::authorize_upgrade::CodeHash, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "System", + "authorize_upgrade", + types::AuthorizeUpgrade { code_hash }, + [ + 4u8, 14u8, 76u8, 107u8, 209u8, 129u8, 9u8, 39u8, 193u8, 17u8, 84u8, + 254u8, 170u8, 214u8, 24u8, 155u8, 29u8, 184u8, 249u8, 241u8, 109u8, + 58u8, 145u8, 131u8, 109u8, 63u8, 38u8, 165u8, 107u8, 215u8, 217u8, + 172u8, + ], + ) + } + #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] + #[doc = "later."] + #[doc = ""] + #[doc = "WARNING: This authorizes an upgrade that will take place without any safety checks, for"] + #[doc = "example that the spec name remains the same and that the version number increases. Not"] + #[doc = "recommended for normal use. Use `authorize_upgrade` instead."] + #[doc = ""] + #[doc = "This call requires Root origin."] + pub fn authorize_upgrade_without_checks( + &self, + code_hash: types::authorize_upgrade_without_checks::CodeHash, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload< + types::AuthorizeUpgradeWithoutChecks, + > { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "System", + "authorize_upgrade_without_checks", + types::AuthorizeUpgradeWithoutChecks { code_hash }, + [ + 126u8, 126u8, 55u8, 26u8, 47u8, 55u8, 66u8, 8u8, 167u8, 18u8, 29u8, + 136u8, 146u8, 14u8, 189u8, 117u8, 16u8, 227u8, 162u8, 61u8, 149u8, + 197u8, 104u8, 184u8, 185u8, 161u8, 99u8, 154u8, 80u8, 125u8, 181u8, + 233u8, + ], + ) + } + #[doc = "Provide the preimage (runtime binary) `code` for an upgrade that has been authorized."] + #[doc = ""] + #[doc = "If the authorization required a version check, this call will ensure the spec name"] + #[doc = "remains unchanged and that the spec version has increased."] + #[doc = ""] + #[doc = "Depending on the runtime's `OnSetCode` configuration, this function may directly apply"] + #[doc = "the new `code` in the same block or attempt to schedule the upgrade."] + #[doc = ""] + #[doc = "All origins are allowed."] + pub fn apply_authorized_upgrade( + &self, + code: types::apply_authorized_upgrade::Code, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload< + types::ApplyAuthorizedUpgrade, + > { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "System", + "apply_authorized_upgrade", + types::ApplyAuthorizedUpgrade { code }, + [ + 232u8, 107u8, 127u8, 38u8, 230u8, 29u8, 97u8, 4u8, 160u8, 191u8, 222u8, + 156u8, 245u8, 102u8, 196u8, 141u8, 44u8, 163u8, 98u8, 68u8, 125u8, + 32u8, 124u8, 101u8, 108u8, 93u8, 211u8, 52u8, 0u8, 231u8, 33u8, 227u8, + ], + ) + } } } #[doc = "Event for the System pallet."] @@ -4746,6 +5438,30 @@ pub mod api { const PALLET: &'static str = "System"; const EVENT: &'static str = "Remarked"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "An upgrade was authorized."] + pub struct UpgradeAuthorized { + pub code_hash: upgrade_authorized::CodeHash, + pub check_version: upgrade_authorized::CheckVersion, + } + pub mod upgrade_authorized { + use super::runtime_types; + pub type CodeHash = ::subxt::ext::subxt_core::utils::H256; + pub type CheckVersion = ::core::primitive::bool; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for UpgradeAuthorized { + const PALLET: &'static str = "System"; + const EVENT: &'static str = "UpgradeAuthorized"; + } } pub mod storage { use super::runtime_types; @@ -4763,6 +5479,10 @@ pub mod api { use super::runtime_types; pub type ExtrinsicCount = ::core::primitive::u32; } + pub mod inherents_applied { + use super::runtime_types; + pub type InherentsApplied = ::core::primitive::bool; + } pub mod block_weight { use super::runtime_types; pub type BlockWeight = runtime_types::frame_support::dispatch::PerDispatchClass< @@ -4834,6 +5554,11 @@ pub mod api { use super::runtime_types; pub type ExecutionPhase = runtime_types::frame_system::Phase; } + pub mod authorized_upgrade { + use super::runtime_types; + pub type AuthorizedUpgrade = + runtime_types::frame_system::CodeUpgradeAuthorization; + } } pub struct StorageApi; impl StorageApi { @@ -4906,6 +5631,27 @@ pub mod api { ], ) } + #[doc = " Whether all inherents have been applied."] + pub fn inherents_applied( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::inherents_applied::InherentsApplied, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "System", + "InherentsApplied", + (), + [ + 132u8, 249u8, 142u8, 252u8, 8u8, 103u8, 80u8, 120u8, 50u8, 6u8, 188u8, + 223u8, 101u8, 55u8, 165u8, 189u8, 172u8, 249u8, 165u8, 230u8, 183u8, + 109u8, 34u8, 65u8, 185u8, 150u8, 29u8, 8u8, 186u8, 129u8, 135u8, 239u8, + ], + ) + } #[doc = " The current weight for the block."] pub fn block_weight( &self, @@ -5129,10 +5875,9 @@ pub mod api { "Events", (), [ - 52u8, 237u8, 85u8, 54u8, 238u8, 212u8, 107u8, 140u8, 46u8, 226u8, - 212u8, 254u8, 94u8, 185u8, 110u8, 10u8, 52u8, 19u8, 52u8, 76u8, 50u8, - 110u8, 156u8, 8u8, 175u8, 172u8, 137u8, 145u8, 2u8, 163u8, 167u8, - 186u8, + 56u8, 112u8, 184u8, 48u8, 206u8, 90u8, 32u8, 123u8, 52u8, 170u8, 226u8, + 236u8, 93u8, 100u8, 16u8, 226u8, 114u8, 236u8, 248u8, 145u8, 137u8, + 206u8, 79u8, 59u8, 253u8, 79u8, 3u8, 103u8, 205u8, 14u8, 83u8, 119u8, ], ) } @@ -5309,6 +6054,27 @@ pub mod api { ], ) } + #[doc = " `Some` if a code upgrade has been authorized."] + pub fn authorized_upgrade( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::authorized_upgrade::AuthorizedUpgrade, + ::subxt::ext::subxt_core::utils::Yes, + (), + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "System", + "AuthorizedUpgrade", + (), + [ + 165u8, 97u8, 27u8, 138u8, 2u8, 28u8, 55u8, 92u8, 96u8, 96u8, 168u8, + 169u8, 55u8, 178u8, 44u8, 127u8, 58u8, 140u8, 206u8, 178u8, 1u8, 37u8, + 214u8, 213u8, 251u8, 123u8, 5u8, 111u8, 90u8, 148u8, 217u8, 135u8, + ], + ) + } } } pub mod constants { @@ -5381,7 +6147,7 @@ pub mod api { ], ) } - #[doc = " Get the chain's current version."] + #[doc = " Get the chain's in-code version."] pub fn version( &self, ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< @@ -5448,7 +6214,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report authority equivocation/misbehavior. This method will verify"] + #[doc = "the equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence will"] + #[doc = "be reported."] pub struct ReportEquivocation { pub equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< report_equivocation::EquivocationProof, @@ -5484,7 +6253,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report authority equivocation/misbehavior. This method will verify"] + #[doc = "the equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence will"] + #[doc = "be reported."] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] pub struct ReportEquivocationUnsigned { pub equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< report_equivocation_unsigned::EquivocationProof, @@ -5520,7 +6296,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::plan_config_change`]."] + #[doc = "Plan an epoch config change. The epoch config change is recorded and will be enacted on"] + #[doc = "the next call to `enact_epoch_change`. The config will be activated one epoch after."] + #[doc = "Multiple calls to this method will replace any existing planned config change that had"] + #[doc = "not been enacted yet."] pub struct PlanConfigChange { pub config: plan_config_change::Config, } @@ -5536,7 +6315,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report authority equivocation/misbehavior. This method will verify"] + #[doc = "the equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence will"] + #[doc = "be reported."] pub fn report_equivocation( &self, equivocation_proof: types::report_equivocation::EquivocationProof, @@ -5553,14 +6335,21 @@ pub mod api { key_owner_proof, }, [ - 37u8, 70u8, 151u8, 149u8, 231u8, 197u8, 226u8, 88u8, 38u8, 138u8, - 147u8, 164u8, 250u8, 117u8, 156u8, 178u8, 44u8, 20u8, 123u8, 33u8, - 11u8, 106u8, 56u8, 122u8, 90u8, 11u8, 15u8, 219u8, 245u8, 18u8, 171u8, - 90u8, + 97u8, 65u8, 136u8, 207u8, 137u8, 113u8, 206u8, 76u8, 166u8, 245u8, + 231u8, 162u8, 65u8, 47u8, 251u8, 149u8, 68u8, 179u8, 13u8, 123u8, + 209u8, 146u8, 83u8, 54u8, 14u8, 150u8, 62u8, 195u8, 27u8, 190u8, 76u8, + 224u8, ], ) } - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report authority equivocation/misbehavior. This method will verify"] + #[doc = "the equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence will"] + #[doc = "be reported."] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] pub fn report_equivocation_unsigned( &self, equivocation_proof: types::report_equivocation_unsigned::EquivocationProof, @@ -5578,13 +6367,16 @@ pub mod api { key_owner_proof, }, [ - 179u8, 248u8, 80u8, 171u8, 220u8, 8u8, 75u8, 215u8, 121u8, 151u8, - 255u8, 4u8, 6u8, 54u8, 141u8, 244u8, 111u8, 156u8, 183u8, 19u8, 192u8, - 195u8, 79u8, 53u8, 0u8, 170u8, 120u8, 227u8, 186u8, 45u8, 48u8, 57u8, + 184u8, 158u8, 14u8, 168u8, 175u8, 23u8, 10u8, 63u8, 54u8, 15u8, 182u8, + 163u8, 5u8, 49u8, 223u8, 197u8, 45u8, 204u8, 216u8, 26u8, 126u8, 157u8, + 242u8, 233u8, 228u8, 203u8, 117u8, 216u8, 185u8, 157u8, 199u8, 117u8, ], ) } - #[doc = "See [`Pallet::plan_config_change`]."] + #[doc = "Plan an epoch config change. The epoch config change is recorded and will be enacted on"] + #[doc = "the next call to `enact_epoch_change`. The config will be activated one epoch after."] + #[doc = "Multiple calls to this method will replace any existing planned config change that had"] + #[doc = "not been enacted yet."] pub fn plan_config_change( &self, config: types::plan_config_change::Config, @@ -5656,7 +6448,7 @@ pub mod api { pub mod under_construction { use super::runtime_types; pub type UnderConstruction = - runtime_types::bounded_collections::bounded_vec::BoundedVec6< + runtime_types::bounded_collections::bounded_vec::BoundedVec7< [::core::primitive::u8; 32usize], >; pub type Param0 = ::core::primitive::u32; @@ -5692,7 +6484,7 @@ pub mod api { pub mod skipped_epochs { use super::runtime_types; pub type SkippedEpochs = - runtime_types::bounded_collections::bounded_vec::BoundedVec7<( + runtime_types::bounded_collections::bounded_vec::BoundedVec8<( ::core::primitive::u64, ::core::primitive::u32, )>; @@ -5737,10 +6529,10 @@ pub mod api { "Authorities", (), [ - 67u8, 196u8, 244u8, 13u8, 246u8, 245u8, 198u8, 98u8, 81u8, 55u8, 182u8, - 187u8, 214u8, 5u8, 181u8, 76u8, 251u8, 213u8, 144u8, 166u8, 36u8, - 153u8, 234u8, 181u8, 252u8, 55u8, 198u8, 175u8, 55u8, 211u8, 105u8, - 85u8, + 192u8, 157u8, 98u8, 244u8, 104u8, 38u8, 195u8, 114u8, 183u8, 62u8, + 247u8, 18u8, 31u8, 152u8, 246u8, 206u8, 97u8, 13u8, 118u8, 211u8, + 104u8, 54u8, 150u8, 152u8, 126u8, 170u8, 228u8, 158u8, 108u8, 129u8, + 134u8, 44u8, ], ) } @@ -5877,10 +6669,9 @@ pub mod api { "NextAuthorities", (), [ - 116u8, 95u8, 126u8, 199u8, 237u8, 90u8, 202u8, 227u8, 247u8, 56u8, - 201u8, 113u8, 239u8, 191u8, 151u8, 56u8, 156u8, 133u8, 61u8, 64u8, - 141u8, 26u8, 8u8, 95u8, 177u8, 255u8, 54u8, 223u8, 132u8, 74u8, 210u8, - 128u8, + 29u8, 161u8, 79u8, 221u8, 198u8, 101u8, 11u8, 17u8, 20u8, 17u8, 225u8, + 144u8, 35u8, 150u8, 241u8, 190u8, 106u8, 32u8, 230u8, 14u8, 212u8, + 126u8, 1u8, 96u8, 73u8, 173u8, 245u8, 39u8, 153u8, 33u8, 205u8, 174u8, ], ) } @@ -5977,9 +6768,10 @@ pub mod api { "Initialized", (), [ - 137u8, 31u8, 4u8, 130u8, 35u8, 232u8, 67u8, 108u8, 17u8, 123u8, 26u8, - 96u8, 238u8, 95u8, 138u8, 208u8, 163u8, 83u8, 218u8, 143u8, 8u8, 119u8, - 138u8, 130u8, 9u8, 194u8, 92u8, 40u8, 7u8, 89u8, 53u8, 237u8, + 169u8, 217u8, 237u8, 78u8, 186u8, 202u8, 206u8, 213u8, 54u8, 85u8, + 206u8, 166u8, 22u8, 138u8, 236u8, 60u8, 211u8, 169u8, 12u8, 183u8, + 23u8, 69u8, 194u8, 236u8, 112u8, 21u8, 62u8, 219u8, 92u8, 131u8, 134u8, + 145u8, ], ) } @@ -6242,7 +7034,25 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set`]."] + #[doc = "Set the current time."] + #[doc = ""] + #[doc = "This call should be invoked exactly once per block. It will panic at the finalization"] + #[doc = "phase, if this call hasn't been invoked by that time."] + #[doc = ""] + #[doc = "The timestamp should be greater than the previous one by the amount specified by"] + #[doc = "[`Config::MinimumPeriod`]."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "This dispatch class is _Mandatory_ to ensure it gets executed in the block. Be aware"] + #[doc = "that changing the complexity of this call could result exhausting the resources in a"] + #[doc = "block to execute any other calls."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`)"] + #[doc = "- 1 storage read and 1 storage mutation (codec `O(1)` because of `DidUpdate::take` in"] + #[doc = " `on_finalize`)"] + #[doc = "- 1 event handler `on_timestamp_set`. Must be `O(1)`."] pub struct Set { #[codec(compact)] pub now: set::Now, @@ -6258,7 +7068,25 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::set`]."] + #[doc = "Set the current time."] + #[doc = ""] + #[doc = "This call should be invoked exactly once per block. It will panic at the finalization"] + #[doc = "phase, if this call hasn't been invoked by that time."] + #[doc = ""] + #[doc = "The timestamp should be greater than the previous one by the amount specified by"] + #[doc = "[`Config::MinimumPeriod`]."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "This dispatch class is _Mandatory_ to ensure it gets executed in the block. Be aware"] + #[doc = "that changing the complexity of this call could result exhausting the resources in a"] + #[doc = "block to execute any other calls."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`)"] + #[doc = "- 1 storage read and 1 storage mutation (codec `O(1)` because of `DidUpdate::take` in"] + #[doc = " `on_finalize`)"] + #[doc = "- 1 event handler `on_timestamp_set`. Must be `O(1)`."] pub fn set( &self, now: types::set::Now, @@ -6396,7 +7224,18 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::claim`]."] + #[doc = "Assign an previously unassigned index."] + #[doc = ""] + #[doc = "Payment: `Deposit` is reserved from the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `index`: the index to be claimed. This must not be in use."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct Claim { pub index: claim::Index, } @@ -6422,7 +7261,18 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::transfer`]."] + #[doc = "Assign an index already owned by the sender to another account. The balance reservation"] + #[doc = "is effectively transferred to the new account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `index`: the index to be re-assigned. This must be owned by the sender."] + #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct Transfer { pub new: transfer::New, pub index: transfer::Index, @@ -6453,7 +7303,18 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::free`]."] + #[doc = "Free up an index owned by the sender."] + #[doc = ""] + #[doc = "Payment: Any previous deposit placed for the index is unreserved in the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must own the index."] + #[doc = ""] + #[doc = "- `index`: the index to be freed. This must be owned by the sender."] + #[doc = ""] + #[doc = "Emits `IndexFreed` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct Free { pub index: free::Index, } @@ -6479,7 +7340,19 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Force an index to an account. This doesn't require a deposit. If the index is already"] + #[doc = "held, then any deposit is reimbursed to its current owner."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `index`: the index to be (re-)assigned."] + #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] + #[doc = "- `freeze`: if set to `true`, will freeze the index so it cannot be transferred."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct ForceTransfer { pub new: force_transfer::New, pub index: force_transfer::Index, @@ -6512,7 +7385,18 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::freeze`]."] + #[doc = "Freeze an index so it will always point to the sender account. This consumes the"] + #[doc = "deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must have a"] + #[doc = "non-frozen account `index`."] + #[doc = ""] + #[doc = "- `index`: the index to be frozen in place."] + #[doc = ""] + #[doc = "Emits `IndexFrozen` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct Freeze { pub index: freeze::Index, } @@ -6527,7 +7411,18 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::claim`]."] + #[doc = "Assign an previously unassigned index."] + #[doc = ""] + #[doc = "Payment: `Deposit` is reserved from the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `index`: the index to be claimed. This must not be in use."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn claim( &self, index: types::claim::Index, @@ -6544,7 +7439,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::transfer`]."] + #[doc = "Assign an index already owned by the sender to another account. The balance reservation"] + #[doc = "is effectively transferred to the new account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `index`: the index to be re-assigned. This must be owned by the sender."] + #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn transfer( &self, new: types::transfer::New, @@ -6563,7 +7469,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::free`]."] + #[doc = "Free up an index owned by the sender."] + #[doc = ""] + #[doc = "Payment: Any previous deposit placed for the index is unreserved in the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must own the index."] + #[doc = ""] + #[doc = "- `index`: the index to be freed. This must be owned by the sender."] + #[doc = ""] + #[doc = "Emits `IndexFreed` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn free( &self, index: types::free::Index, @@ -6581,7 +7498,19 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Force an index to an account. This doesn't require a deposit. If the index is already"] + #[doc = "held, then any deposit is reimbursed to its current owner."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `index`: the index to be (re-)assigned."] + #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] + #[doc = "- `freeze`: if set to `true`, will freeze the index so it cannot be transferred."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn force_transfer( &self, new: types::force_transfer::New, @@ -6601,7 +7530,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::freeze`]."] + #[doc = "Freeze an index so it will always point to the sender account. This consumes the"] + #[doc = "deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must have a"] + #[doc = "non-frozen account `index`."] + #[doc = ""] + #[doc = "- `index`: the index to be frozen in place."] + #[doc = ""] + #[doc = "Emits `IndexFrozen` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn freeze( &self, index: types::freeze::Index, @@ -6813,7 +7753,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::transfer_allow_death`]."] + #[doc = "Transfer some liquid free balance to another account."] + #[doc = ""] + #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] + #[doc = "If the sender's account is below the existential deposit as a result"] + #[doc = "of the transfer, the account will be reaped."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] pub struct TransferAllowDeath { pub dest: transfer_allow_death::Dest, #[codec(compact)] @@ -6845,7 +7791,8 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] + #[doc = "may be specified."] pub struct ForceTransfer { pub source: force_transfer::Source, pub dest: force_transfer::Dest, @@ -6882,7 +7829,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::transfer_keep_alive`]."] + #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] + #[doc = "kill the origin account."] + #[doc = ""] + #[doc = "99% of the time you want [`transfer_allow_death`] instead."] + #[doc = ""] + #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] pub struct TransferKeepAlive { pub dest: transfer_keep_alive::Dest, #[codec(compact)] @@ -6914,7 +7866,21 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::transfer_all`]."] + #[doc = "Transfer the entire transferable balance from the caller account."] + #[doc = ""] + #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] + #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] + #[doc = "transferred by this function. To ensure that this function results in a killed account,"] + #[doc = "you might need to prepare the account by removing any reference counters, storage"] + #[doc = "deposits, etc..."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be Signed."] + #[doc = ""] + #[doc = "- `dest`: The recipient of the transfer."] + #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] + #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] + #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] + #[doc = " keep the sender account alive (true)."] pub struct TransferAll { pub dest: transfer_all::Dest, pub keep_alive: transfer_all::KeepAlive, @@ -6945,7 +7911,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_unreserve`]."] + #[doc = "Unreserve some balance from a user by force."] + #[doc = ""] + #[doc = "Can only be called by ROOT."] pub struct ForceUnreserve { pub who: force_unreserve::Who, pub amount: force_unreserve::Amount, @@ -6976,7 +7944,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::upgrade_accounts`]."] + #[doc = "Upgrade a specified account."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `who`: The account to be upgraded."] + #[doc = ""] + #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] + #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] + #[doc = "possibility of churn)."] pub struct UpgradeAccounts { pub who: upgrade_accounts::Who, } @@ -7004,7 +7979,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_set_balance`]."] + #[doc = "Set the regular balance of a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call is `root`."] pub struct ForceSetBalance { pub who: force_set_balance::Who, #[codec(compact)] @@ -7022,10 +7999,49 @@ pub mod api { const PALLET: &'static str = "Balances"; const CALL: &'static str = "force_set_balance"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Adjust the total issuance in a saturating way."] + #[doc = ""] + #[doc = "Can only be called by root and always needs a positive `delta`."] + #[doc = ""] + #[doc = "# Example"] + pub struct ForceAdjustTotalIssuance { + pub direction: force_adjust_total_issuance::Direction, + #[codec(compact)] + pub delta: force_adjust_total_issuance::Delta, + } + pub mod force_adjust_total_issuance { + use super::runtime_types; + pub type Direction = runtime_types::pallet_balances::types::AdjustmentDirection; + pub type Delta = ::core::primitive::u128; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceAdjustTotalIssuance { + const PALLET: &'static str = "Balances"; + const CALL: &'static str = "force_adjust_total_issuance"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::transfer_allow_death`]."] + #[doc = "Transfer some liquid free balance to another account."] + #[doc = ""] + #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] + #[doc = "If the sender's account is below the existential deposit as a result"] + #[doc = "of the transfer, the account will be reaped."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] pub fn transfer_allow_death( &self, dest: types::transfer_allow_death::Dest, @@ -7044,7 +8060,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] + #[doc = "may be specified."] pub fn force_transfer( &self, source: types::force_transfer::Source, @@ -7067,7 +8084,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::transfer_keep_alive`]."] + #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] + #[doc = "kill the origin account."] + #[doc = ""] + #[doc = "99% of the time you want [`transfer_allow_death`] instead."] + #[doc = ""] + #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] pub fn transfer_keep_alive( &self, dest: types::transfer_keep_alive::Dest, @@ -7085,7 +8107,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::transfer_all`]."] + #[doc = "Transfer the entire transferable balance from the caller account."] + #[doc = ""] + #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] + #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] + #[doc = "transferred by this function. To ensure that this function results in a killed account,"] + #[doc = "you might need to prepare the account by removing any reference counters, storage"] + #[doc = "deposits, etc..."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be Signed."] + #[doc = ""] + #[doc = "- `dest`: The recipient of the transfer."] + #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] + #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] + #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] + #[doc = " keep the sender account alive (true)."] pub fn transfer_all( &self, dest: types::transfer_all::Dest, @@ -7103,7 +8139,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_unreserve`]."] + #[doc = "Unreserve some balance from a user by force."] + #[doc = ""] + #[doc = "Can only be called by ROOT."] pub fn force_unreserve( &self, who: types::force_unreserve::Who, @@ -7122,7 +8160,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::upgrade_accounts`]."] + #[doc = "Upgrade a specified account."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `who`: The account to be upgraded."] + #[doc = ""] + #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] + #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] + #[doc = "possibility of churn)."] pub fn upgrade_accounts( &self, who: types::upgrade_accounts::Who, @@ -7139,7 +8184,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_set_balance`]."] + #[doc = "Set the regular balance of a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call is `root`."] pub fn force_set_balance( &self, who: types::force_set_balance::Who, @@ -7157,6 +8204,30 @@ pub mod api { ], ) } + #[doc = "Adjust the total issuance in a saturating way."] + #[doc = ""] + #[doc = "Can only be called by root and always needs a positive `delta`."] + #[doc = ""] + #[doc = "# Example"] + pub fn force_adjust_total_issuance( + &self, + direction: types::force_adjust_total_issuance::Direction, + delta: types::force_adjust_total_issuance::Delta, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload< + types::ForceAdjustTotalIssuance, + > { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Balances", + "force_adjust_total_issuance", + types::ForceAdjustTotalIssuance { direction, delta }, + [ + 208u8, 134u8, 56u8, 133u8, 232u8, 164u8, 10u8, 213u8, 53u8, 193u8, + 190u8, 63u8, 236u8, 186u8, 96u8, 122u8, 104u8, 87u8, 173u8, 38u8, 58u8, + 176u8, 21u8, 78u8, 42u8, 106u8, 46u8, 248u8, 251u8, 190u8, 150u8, + 202u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -7670,6 +8741,30 @@ pub mod api { const PALLET: &'static str = "Balances"; const EVENT: &'static str = "Thawed"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "The `TotalIssuance` was forcefully changed."] + pub struct TotalIssuanceForced { + pub old: total_issuance_forced::Old, + pub new: total_issuance_forced::New, + } + pub mod total_issuance_forced { + use super::runtime_types; + pub type Old = ::core::primitive::u128; + pub type New = ::core::primitive::u128; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for TotalIssuanceForced { + const PALLET: &'static str = "Balances"; + const EVENT: &'static str = "TotalIssuanceForced"; + } } pub mod storage { use super::runtime_types; @@ -7702,7 +8797,7 @@ pub mod api { pub mod reserves { use super::runtime_types; pub type Reserves = - runtime_types::bounded_collections::bounded_vec::BoundedVec8< + runtime_types::bounded_collections::bounded_vec::BoundedVec9< runtime_types::pallet_balances::types::ReserveData< [::core::primitive::u8; 8usize], ::core::primitive::u128, @@ -7712,7 +8807,7 @@ pub mod api { } pub mod holds { use super::runtime_types; - pub type Holds = runtime_types::bounded_collections::bounded_vec::BoundedVec9< + pub type Holds = runtime_types::bounded_collections::bounded_vec::BoundedVec10< runtime_types::pallet_balances::types::IdAmount< runtime_types::rococo_runtime::RuntimeHoldReason, ::core::primitive::u128, @@ -7723,7 +8818,7 @@ pub mod api { pub mod freezes { use super::runtime_types; pub type Freezes = - runtime_types::bounded_collections::bounded_vec::BoundedVec10< + runtime_types::bounded_collections::bounded_vec::BoundedVec11< runtime_types::pallet_balances::types::IdAmount< (), ::core::primitive::u128, @@ -7872,6 +8967,8 @@ pub mod api { } #[doc = " Any liquidity locks on some account balances."] #[doc = " NOTE: Should only be accessed when setting, changing and freeing a lock."] + #[doc = ""] + #[doc = " Use of locks is deprecated in favour of freezes. See `https://github.com/paritytech/substrate/pull/12951/`"] pub fn locks_iter( &self, ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< @@ -7894,6 +8991,8 @@ pub mod api { } #[doc = " Any liquidity locks on some account balances."] #[doc = " NOTE: Should only be accessed when setting, changing and freeing a lock."] + #[doc = ""] + #[doc = " Use of locks is deprecated in favour of freezes. See `https://github.com/paritytech/substrate/pull/12951/`"] pub fn locks( &self, _0: impl ::core::borrow::Borrow, @@ -7920,6 +9019,8 @@ pub mod api { ) } #[doc = " Named reserves on some account balances."] + #[doc = ""] + #[doc = " Use of reserves is deprecated in favour of holds. See `https://github.com/paritytech/substrate/pull/12951/`"] pub fn reserves_iter( &self, ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< @@ -7941,6 +9042,8 @@ pub mod api { ) } #[doc = " Named reserves on some account balances."] + #[doc = ""] + #[doc = " Use of reserves is deprecated in favour of holds. See `https://github.com/paritytech/substrate/pull/12951/`"] pub fn reserves( &self, _0: impl ::core::borrow::Borrow, @@ -7981,10 +9084,10 @@ pub mod api { "Holds", (), [ - 72u8, 161u8, 107u8, 123u8, 240u8, 3u8, 198u8, 75u8, 46u8, 131u8, 122u8, - 141u8, 253u8, 141u8, 232u8, 192u8, 146u8, 54u8, 174u8, 162u8, 48u8, - 165u8, 226u8, 233u8, 12u8, 227u8, 23u8, 17u8, 237u8, 179u8, 193u8, - 166u8, + 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, + 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, + 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, + 193u8, ], ) } @@ -8008,10 +9111,10 @@ pub mod api { _0.borrow(), ), [ - 72u8, 161u8, 107u8, 123u8, 240u8, 3u8, 198u8, 75u8, 46u8, 131u8, 122u8, - 141u8, 253u8, 141u8, 232u8, 192u8, 146u8, 54u8, 174u8, 162u8, 48u8, - 165u8, 226u8, 233u8, 12u8, 227u8, 23u8, 17u8, 237u8, 179u8, 193u8, - 166u8, + 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, + 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, + 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, + 193u8, ], ) } @@ -8093,6 +9196,8 @@ pub mod api { } #[doc = " The maximum number of locks that should exist on an account."] #[doc = " Not strictly enforced, but used for weight estimation."] + #[doc = ""] + #[doc = " Use of locks is deprecated in favour of freezes. See `https://github.com/paritytech/substrate/pull/12951/`"] pub fn max_locks( &self, ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< @@ -8110,6 +9215,8 @@ pub mod api { ) } #[doc = " The maximum number of named reserves that can exist on an account."] + #[doc = ""] + #[doc = " Use of reserves is deprecated in favour of holds. See `https://github.com/paritytech/substrate/pull/12951/`"] pub fn max_reserves( &self, ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< @@ -8126,23 +9233,6 @@ pub mod api { ], ) } - #[doc = " The maximum number of holds that can exist on an account at any time."] - pub fn max_holds( - &self, - ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< - ::core::primitive::u32, - > { - ::subxt::ext::subxt_core::constants::address::StaticAddress::new_static( - "Balances", - "MaxHolds", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } #[doc = " The maximum number of individual freeze locks that can exist on an account at any time."] pub fn max_freezes( &self, @@ -8163,6 +9253,170 @@ pub mod api { } } } + pub mod parameters { + use super::root_mod; + use super::runtime_types; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_parameters::pallet::Call; + pub mod calls { + use super::root_mod; + use super::runtime_types; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Set the value of a parameter."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be `AdminOrigin` for the given `key`. Values be"] + #[doc = "deleted by setting them to `None`."] + pub struct SetParameter { + pub key_value: set_parameter::KeyValue, + } + pub mod set_parameter { + use super::runtime_types; + pub type KeyValue = runtime_types::rococo_runtime::RuntimeParameters; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetParameter { + const PALLET: &'static str = "Parameters"; + const CALL: &'static str = "set_parameter"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "Set the value of a parameter."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be `AdminOrigin` for the given `key`. Values be"] + #[doc = "deleted by setting them to `None`."] + pub fn set_parameter( + &self, + key_value: types::set_parameter::KeyValue, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Parameters", + "set_parameter", + types::SetParameter { key_value }, + [ + 82u8, 119u8, 126u8, 179u8, 210u8, 236u8, 135u8, 48u8, 188u8, 108u8, + 183u8, 91u8, 202u8, 109u8, 117u8, 199u8, 73u8, 154u8, 5u8, 3u8, 122u8, + 247u8, 107u8, 7u8, 55u8, 20u8, 127u8, 171u8, 14u8, 177u8, 4u8, 225u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_parameters::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "A Parameter was set."] + #[doc = ""] + #[doc = "Is also emitted when the value was not changed."] + pub struct Updated { + pub key: updated::Key, + pub old_value: updated::OldValue, + pub new_value: updated::NewValue, + } + pub mod updated { + use super::runtime_types; + pub type Key = runtime_types::rococo_runtime::RuntimeParametersKey; + pub type OldValue = + ::core::option::Option; + pub type NewValue = + ::core::option::Option; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for Updated { + const PALLET: &'static str = "Parameters"; + const EVENT: &'static str = "Updated"; + } + } + pub mod storage { + use super::runtime_types; + pub mod types { + use super::runtime_types; + pub mod parameters { + use super::runtime_types; + pub type Parameters = runtime_types::rococo_runtime::RuntimeParametersValue; + pub type Param0 = runtime_types::rococo_runtime::RuntimeParametersKey; + } + } + pub struct StorageApi; + impl StorageApi { + #[doc = " Stored parameters."] + pub fn parameters_iter( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::parameters::Parameters, + (), + (), + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Parameters", + "Parameters", + (), + [ + 151u8, 247u8, 90u8, 253u8, 217u8, 155u8, 50u8, 150u8, 159u8, 224u8, + 124u8, 167u8, 68u8, 13u8, 0u8, 119u8, 152u8, 79u8, 233u8, 67u8, 226u8, + 226u8, 85u8, 11u8, 70u8, 154u8, 245u8, 119u8, 26u8, 172u8, 149u8, + 110u8, + ], + ) + } + #[doc = " Stored parameters."] + pub fn parameters( + &self, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::parameters::Param0, + >, + types::parameters::Parameters, + ::subxt::ext::subxt_core::utils::Yes, + (), + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Parameters", + "Parameters", + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + [ + 151u8, 247u8, 90u8, 253u8, 217u8, 155u8, 50u8, 150u8, 159u8, 224u8, + 124u8, 167u8, 68u8, 13u8, 0u8, 119u8, 152u8, 79u8, 233u8, 67u8, 226u8, + 226u8, 85u8, 11u8, 70u8, 154u8, 245u8, 119u8, 26u8, 172u8, 149u8, + 110u8, + ], + ) + } + } + } + } pub mod transaction_payment { use super::root_mod; use super::runtime_types; @@ -8262,10 +9516,10 @@ pub mod api { use super::runtime_types; pub struct ConstantsApi; impl ConstantsApi { - #[doc = " A fee mulitplier for `Operational` extrinsics to compute \"virtual tip\" to boost their"] + #[doc = " A fee multiplier for `Operational` extrinsics to compute \"virtual tip\" to boost their"] #[doc = " `priority`"] #[doc = ""] - #[doc = " This value is multipled by the `final_fee` to obtain a \"virtual tip\" that is later"] + #[doc = " This value is multiplied by the `final_fee` to obtain a \"virtual tip\" that is later"] #[doc = " added to a tip component in regular `priority` calculations."] #[doc = " It means that a `Normal` transaction can front-run a similarly-sized `Operational`"] #[doc = " extrinsic (with no tip), by including a tip value greater than the virtual tip."] @@ -8541,625 +9795,92 @@ pub mod api { pub mod historical { use super::root_mod; use super::runtime_types; - } - pub mod beefy { - use super::root_mod; - use super::runtime_types; - #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_beefy::pallet::Error; - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_beefy::pallet::Call; - pub mod calls { - use super::root_mod; - use super::runtime_types; - type DispatchError = runtime_types::sp_runtime::DispatchError; - pub mod types { - use super::runtime_types; - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - #[doc = "See [`Pallet::report_equivocation`]."] - pub struct ReportEquivocation { - pub equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< - report_equivocation::EquivocationProof, - >, - pub key_owner_proof: report_equivocation::KeyOwnerProof, - } - pub mod report_equivocation { - use super::runtime_types; - pub type EquivocationProof = - runtime_types::sp_consensus_beefy::EquivocationProof< - ::core::primitive::u32, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, - >; - pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; - } - impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ReportEquivocation { - const PALLET: &'static str = "Beefy"; - const CALL: &'static str = "report_equivocation"; - } - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] - pub struct ReportEquivocationUnsigned { - pub equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< - report_equivocation_unsigned::EquivocationProof, - >, - pub key_owner_proof: report_equivocation_unsigned::KeyOwnerProof, - } - pub mod report_equivocation_unsigned { - use super::runtime_types; - pub type EquivocationProof = - runtime_types::sp_consensus_beefy::EquivocationProof< - ::core::primitive::u32, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, - >; - pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; - } - impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ReportEquivocationUnsigned { - const PALLET: &'static str = "Beefy"; - const CALL: &'static str = "report_equivocation_unsigned"; - } - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - #[doc = "See [`Pallet::set_new_genesis`]."] - pub struct SetNewGenesis { - pub delay_in_blocks: set_new_genesis::DelayInBlocks, - } - pub mod set_new_genesis { - use super::runtime_types; - pub type DelayInBlocks = ::core::primitive::u32; - } - impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetNewGenesis { - const PALLET: &'static str = "Beefy"; - const CALL: &'static str = "set_new_genesis"; - } - } - pub struct TransactionApi; - impl TransactionApi { - #[doc = "See [`Pallet::report_equivocation`]."] - pub fn report_equivocation( - &self, - equivocation_proof: types::report_equivocation::EquivocationProof, - key_owner_proof: types::report_equivocation::KeyOwnerProof, - ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload - { - ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( - "Beefy", - "report_equivocation", - types::ReportEquivocation { - equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box::new( - equivocation_proof, - ), - key_owner_proof, - }, - [ - 156u8, 32u8, 92u8, 179u8, 165u8, 93u8, 216u8, 130u8, 121u8, 225u8, - 33u8, 141u8, 255u8, 12u8, 101u8, 136u8, 177u8, 25u8, 23u8, 239u8, 12u8, - 142u8, 88u8, 228u8, 85u8, 171u8, 218u8, 185u8, 146u8, 245u8, 149u8, - 85u8, - ], - ) - } - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] - pub fn report_equivocation_unsigned( - &self, - equivocation_proof: types::report_equivocation_unsigned::EquivocationProof, - key_owner_proof: types::report_equivocation_unsigned::KeyOwnerProof, - ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload< - types::ReportEquivocationUnsigned, - > { - ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( - "Beefy", - "report_equivocation_unsigned", - types::ReportEquivocationUnsigned { - equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box::new( - equivocation_proof, - ), - key_owner_proof, - }, - [ - 126u8, 201u8, 236u8, 234u8, 107u8, 52u8, 37u8, 115u8, 228u8, 232u8, - 103u8, 193u8, 143u8, 224u8, 79u8, 192u8, 207u8, 204u8, 161u8, 103u8, - 210u8, 131u8, 64u8, 251u8, 48u8, 196u8, 249u8, 148u8, 2u8, 179u8, - 135u8, 121u8, - ], - ) - } - #[doc = "See [`Pallet::set_new_genesis`]."] - pub fn set_new_genesis( - &self, - delay_in_blocks: types::set_new_genesis::DelayInBlocks, - ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload - { - ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( - "Beefy", - "set_new_genesis", - types::SetNewGenesis { delay_in_blocks }, - [ - 147u8, 6u8, 252u8, 43u8, 77u8, 91u8, 170u8, 45u8, 112u8, 155u8, 158u8, - 79u8, 1u8, 116u8, 162u8, 146u8, 181u8, 9u8, 171u8, 48u8, 198u8, 210u8, - 243u8, 64u8, 229u8, 35u8, 28u8, 177u8, 144u8, 22u8, 165u8, 163u8, - ], - ) - } - } - } pub mod storage { use super::runtime_types; pub mod types { use super::runtime_types; - pub mod authorities { + pub mod historical_sessions { use super::runtime_types; - pub type Authorities = - runtime_types::bounded_collections::bounded_vec::BoundedVec11< - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - >; + pub type HistoricalSessions = ( + ::subxt::ext::subxt_core::utils::H256, + ::core::primitive::u32, + ); + pub type Param0 = ::core::primitive::u32; } - pub mod validator_set_id { + pub mod stored_range { use super::runtime_types; - pub type ValidatorSetId = ::core::primitive::u64; - } - pub mod next_authorities { - use super::runtime_types; - pub type NextAuthorities = - runtime_types::bounded_collections::bounded_vec::BoundedVec11< - runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, - >; - } - pub mod set_id_session { - use super::runtime_types; - pub type SetIdSession = ::core::primitive::u32; - pub type Param0 = ::core::primitive::u64; - } - pub mod genesis_block { - use super::runtime_types; - pub type GenesisBlock = ::core::option::Option<::core::primitive::u32>; + pub type StoredRange = (::core::primitive::u32, ::core::primitive::u32); } } pub struct StorageApi; impl StorageApi { - #[doc = " The current authorities set"] - pub fn authorities( + #[doc = " Mapping from historical session indices to session-data root hash and validator count."] + pub fn historical_sessions_iter( &self, ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< (), - types::authorities::Authorities, - ::subxt::ext::subxt_core::utils::Yes, - ::subxt::ext::subxt_core::utils::Yes, - (), - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "Beefy", - "Authorities", - (), - [ - 53u8, 171u8, 94u8, 33u8, 46u8, 83u8, 105u8, 120u8, 123u8, 201u8, 141u8, - 71u8, 131u8, 150u8, 51u8, 121u8, 67u8, 45u8, 249u8, 146u8, 85u8, 113u8, - 23u8, 59u8, 59u8, 41u8, 0u8, 226u8, 98u8, 166u8, 253u8, 59u8, - ], - ) - } - #[doc = " The current validator set id"] - pub fn validator_set_id( - &self, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - (), - types::validator_set_id::ValidatorSetId, - ::subxt::ext::subxt_core::utils::Yes, - ::subxt::ext::subxt_core::utils::Yes, - (), - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "Beefy", - "ValidatorSetId", - (), - [ - 168u8, 84u8, 23u8, 134u8, 153u8, 30u8, 183u8, 176u8, 206u8, 100u8, - 109u8, 86u8, 109u8, 126u8, 146u8, 175u8, 173u8, 1u8, 253u8, 42u8, - 122u8, 207u8, 71u8, 4u8, 145u8, 83u8, 148u8, 29u8, 243u8, 52u8, 29u8, - 78u8, - ], - ) - } - #[doc = " Authorities set scheduled to be used with the next session"] - pub fn next_authorities( - &self, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - (), - types::next_authorities::NextAuthorities, - ::subxt::ext::subxt_core::utils::Yes, - ::subxt::ext::subxt_core::utils::Yes, - (), - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "Beefy", - "NextAuthorities", - (), - [ - 87u8, 180u8, 0u8, 85u8, 209u8, 13u8, 131u8, 103u8, 8u8, 226u8, 42u8, - 72u8, 38u8, 47u8, 190u8, 78u8, 62u8, 4u8, 161u8, 130u8, 87u8, 196u8, - 13u8, 209u8, 205u8, 98u8, 104u8, 91u8, 3u8, 47u8, 82u8, 11u8, - ], - ) - } - #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] - #[doc = " members were responsible."] - #[doc = ""] - #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] - #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] - #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] - #[doc = " was the owner of a given key on a given session, and what the active set ID was"] - #[doc = " during that session."] - #[doc = ""] - #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] - pub fn set_id_session_iter( - &self, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - (), - types::set_id_session::SetIdSession, + types::historical_sessions::HistoricalSessions, (), (), ::subxt::ext::subxt_core::utils::Yes, > { ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "Beefy", - "SetIdSession", + "Historical", + "HistoricalSessions", (), [ - 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, - 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, - 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, + 9u8, 138u8, 247u8, 141u8, 178u8, 146u8, 124u8, 81u8, 162u8, 211u8, + 205u8, 149u8, 222u8, 254u8, 253u8, 188u8, 170u8, 242u8, 218u8, 41u8, + 124u8, 178u8, 109u8, 209u8, 163u8, 125u8, 225u8, 206u8, 249u8, 175u8, + 117u8, 75u8, ], ) } - #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] - #[doc = " members were responsible."] - #[doc = ""] - #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] - #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] - #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] - #[doc = " was the owner of a given key on a given session, and what the active set ID was"] - #[doc = " during that session."] - #[doc = ""] - #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] - pub fn set_id_session( + #[doc = " Mapping from historical session indices to session-data root hash and validator count."] + pub fn historical_sessions( &self, - _0: impl ::core::borrow::Borrow, + _0: impl ::core::borrow::Borrow, ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< ::subxt::ext::subxt_core::storage::address::StaticStorageKey< - types::set_id_session::Param0, + types::historical_sessions::Param0, >, - types::set_id_session::SetIdSession, + types::historical_sessions::HistoricalSessions, ::subxt::ext::subxt_core::utils::Yes, (), (), > { ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "Beefy", - "SetIdSession", + "Historical", + "HistoricalSessions", ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( _0.borrow(), ), [ - 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, - 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, - 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, + 9u8, 138u8, 247u8, 141u8, 178u8, 146u8, 124u8, 81u8, 162u8, 211u8, + 205u8, 149u8, 222u8, 254u8, 253u8, 188u8, 170u8, 242u8, 218u8, 41u8, + 124u8, 178u8, 109u8, 209u8, 163u8, 125u8, 225u8, 206u8, 249u8, 175u8, + 117u8, 75u8, ], ) } - #[doc = " Block number where BEEFY consensus is enabled/started."] - #[doc = " By changing this (through privileged `set_new_genesis()`), BEEFY consensus is effectively"] - #[doc = " restarted from the newly set block number."] - pub fn genesis_block( + #[doc = " The range of historical sessions we store. [first, last)"] + pub fn stored_range( &self, ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< (), - types::genesis_block::GenesisBlock, - ::subxt::ext::subxt_core::utils::Yes, + types::stored_range::StoredRange, ::subxt::ext::subxt_core::utils::Yes, (), + (), > { ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "Beefy", - "GenesisBlock", + "Historical", + "StoredRange", (), [ - 198u8, 155u8, 11u8, 240u8, 189u8, 245u8, 159u8, 127u8, 55u8, 33u8, - 48u8, 29u8, 209u8, 119u8, 163u8, 24u8, 28u8, 22u8, 163u8, 163u8, 124u8, - 88u8, 126u8, 4u8, 193u8, 158u8, 29u8, 243u8, 212u8, 4u8, 41u8, 22u8, - ], - ) - } - } - } - pub mod constants { - use super::runtime_types; - pub struct ConstantsApi; - impl ConstantsApi { - #[doc = " The maximum number of authorities that can be added."] - pub fn max_authorities( - &self, - ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< - ::core::primitive::u32, - > { - ::subxt::ext::subxt_core::constants::address::StaticAddress::new_static( - "Beefy", - "MaxAuthorities", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The maximum number of nominators for each validator."] - pub fn max_nominators( - &self, - ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< - ::core::primitive::u32, - > { - ::subxt::ext::subxt_core::constants::address::StaticAddress::new_static( - "Beefy", - "MaxNominators", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " The maximum number of entries to keep in the set id to session index mapping."] - #[doc = ""] - #[doc = " Since the `SetIdSession` map is only used for validating equivocations this"] - #[doc = " value should relate to the bonding duration of whatever staking system is"] - #[doc = " being used (if any). If equivocation handling is not enabled then this value"] - #[doc = " can be zero."] - pub fn max_set_id_session_entries( - &self, - ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< - ::core::primitive::u64, - > { - ::subxt::ext::subxt_core::constants::address::StaticAddress::new_static( - "Beefy", - "MaxSetIdSessionEntries", - [ - 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, - 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, - 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, - 246u8, - ], - ) - } - } - } - } - pub mod mmr { - use super::root_mod; - use super::runtime_types; - pub mod storage { - use super::runtime_types; - pub mod types { - use super::runtime_types; - pub mod root_hash { - use super::runtime_types; - pub type RootHash = ::subxt::ext::subxt_core::utils::H256; - } - pub mod number_of_leaves { - use super::runtime_types; - pub type NumberOfLeaves = ::core::primitive::u64; - } - pub mod nodes { - use super::runtime_types; - pub type Nodes = ::subxt::ext::subxt_core::utils::H256; - pub type Param0 = ::core::primitive::u64; - } - } - pub struct StorageApi; - impl StorageApi { - #[doc = " Latest MMR Root hash."] - pub fn root_hash( - &self, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - (), - types::root_hash::RootHash, - ::subxt::ext::subxt_core::utils::Yes, - ::subxt::ext::subxt_core::utils::Yes, - (), - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "Mmr", - "RootHash", - (), - [ - 111u8, 206u8, 173u8, 92u8, 67u8, 49u8, 150u8, 113u8, 90u8, 245u8, 38u8, - 254u8, 76u8, 250u8, 167u8, 66u8, 130u8, 129u8, 251u8, 220u8, 172u8, - 229u8, 162u8, 251u8, 36u8, 227u8, 43u8, 189u8, 7u8, 106u8, 23u8, 13u8, - ], - ) - } - #[doc = " Current size of the MMR (number of leaves)."] - pub fn number_of_leaves( - &self, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - (), - types::number_of_leaves::NumberOfLeaves, - ::subxt::ext::subxt_core::utils::Yes, - ::subxt::ext::subxt_core::utils::Yes, - (), - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "Mmr", - "NumberOfLeaves", - (), - [ - 123u8, 58u8, 149u8, 174u8, 85u8, 45u8, 20u8, 115u8, 241u8, 0u8, 51u8, - 174u8, 234u8, 60u8, 230u8, 59u8, 237u8, 144u8, 170u8, 32u8, 4u8, 0u8, - 34u8, 163u8, 238u8, 205u8, 93u8, 208u8, 53u8, 38u8, 141u8, 195u8, - ], - ) - } - #[doc = " Hashes of the nodes in the MMR."] - #[doc = ""] - #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] - #[doc = " are pruned and only stored in the Offchain DB."] - pub fn nodes_iter( - &self, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - (), - types::nodes::Nodes, - (), - (), - ::subxt::ext::subxt_core::utils::Yes, - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "Mmr", - "Nodes", - (), - [ - 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, - 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, - 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, - ], - ) - } - #[doc = " Hashes of the nodes in the MMR."] - #[doc = ""] - #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] - #[doc = " are pruned and only stored in the Offchain DB."] - pub fn nodes( - &self, - _0: impl ::core::borrow::Borrow, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - ::subxt::ext::subxt_core::storage::address::StaticStorageKey< - types::nodes::Param0, - >, - types::nodes::Nodes, - ::subxt::ext::subxt_core::utils::Yes, - (), - (), - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "Mmr", - "Nodes", - ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( - _0.borrow(), - ), - [ - 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, - 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, - 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, - ], - ) - } - } - } - } - pub mod mmr_leaf { - use super::root_mod; - use super::runtime_types; - pub mod storage { - use super::runtime_types; - pub mod types { - use super::runtime_types; - pub mod beefy_authorities { - use super::runtime_types; - pub type BeefyAuthorities = - runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet< - ::subxt::ext::subxt_core::utils::H256, - >; - } - pub mod beefy_next_authorities { - use super::runtime_types; - pub type BeefyNextAuthorities = - runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet< - ::subxt::ext::subxt_core::utils::H256, - >; - } - } - pub struct StorageApi; - impl StorageApi { - #[doc = " Details of current BEEFY authority set."] - pub fn beefy_authorities( - &self, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - (), - types::beefy_authorities::BeefyAuthorities, - ::subxt::ext::subxt_core::utils::Yes, - ::subxt::ext::subxt_core::utils::Yes, - (), - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "MmrLeaf", - "BeefyAuthorities", - (), - [ - 128u8, 35u8, 176u8, 79u8, 224u8, 58u8, 214u8, 234u8, 231u8, 71u8, - 227u8, 153u8, 180u8, 189u8, 66u8, 44u8, 47u8, 174u8, 0u8, 83u8, 121u8, - 182u8, 226u8, 44u8, 224u8, 173u8, 237u8, 102u8, 231u8, 146u8, 110u8, - 7u8, - ], - ) - } - #[doc = " Details of next BEEFY authority set."] - #[doc = ""] - #[doc = " This storage entry is used as cache for calls to `update_beefy_next_authority_set`."] - pub fn beefy_next_authorities( - &self, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - (), - types::beefy_next_authorities::BeefyNextAuthorities, - ::subxt::ext::subxt_core::utils::Yes, - ::subxt::ext::subxt_core::utils::Yes, - (), - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "MmrLeaf", - "BeefyNextAuthorities", - (), - [ - 97u8, 71u8, 52u8, 111u8, 120u8, 251u8, 183u8, 155u8, 177u8, 100u8, - 236u8, 142u8, 204u8, 117u8, 95u8, 40u8, 201u8, 36u8, 32u8, 82u8, 38u8, - 234u8, 135u8, 39u8, 224u8, 69u8, 94u8, 85u8, 12u8, 89u8, 97u8, 218u8, + 134u8, 32u8, 250u8, 13u8, 201u8, 25u8, 54u8, 243u8, 231u8, 81u8, 252u8, + 231u8, 68u8, 217u8, 235u8, 43u8, 22u8, 223u8, 220u8, 133u8, 198u8, + 218u8, 95u8, 152u8, 189u8, 87u8, 6u8, 228u8, 242u8, 59u8, 232u8, 59u8, ], ) } @@ -9193,7 +9914,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_keys`]."] + #[doc = "Sets the session key(s) of the function caller to `keys`."] + #[doc = "Allows an account to set its session key prior to becoming a validator."] + #[doc = "This doesn't take effect until the next session."] + #[doc = ""] + #[doc = "The dispatch origin of this function must be signed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`. Actual cost depends on the number of length of `T::Keys::key_ids()` which is"] + #[doc = " fixed."] pub struct SetKeys { pub keys: set_keys::Keys, pub proof: set_keys::Proof, @@ -9222,7 +9951,18 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::purge_keys`]."] + #[doc = "Removes any session key(s) of the function caller."] + #[doc = ""] + #[doc = "This doesn't take effect until the next session."] + #[doc = ""] + #[doc = "The dispatch origin of this function must be Signed and the account must be either be"] + #[doc = "convertible to a validator ID using the chain's typical addressing system (this usually"] + #[doc = "means being a controller account) or directly convertible into a validator ID (which"] + #[doc = "usually means being a stash account)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)` in number of key types. Actual cost depends on the number of length of"] + #[doc = " `T::Keys::key_ids()` which is fixed."] pub struct PurgeKeys; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for PurgeKeys { const PALLET: &'static str = "Session"; @@ -9231,7 +9971,15 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::set_keys`]."] + #[doc = "Sets the session key(s) of the function caller to `keys`."] + #[doc = "Allows an account to set its session key prior to becoming a validator."] + #[doc = "This doesn't take effect until the next session."] + #[doc = ""] + #[doc = "The dispatch origin of this function must be signed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`. Actual cost depends on the number of length of `T::Keys::key_ids()` which is"] + #[doc = " fixed."] pub fn set_keys( &self, keys: types::set_keys::Keys, @@ -9243,13 +9991,24 @@ pub mod api { "set_keys", types::SetKeys { keys, proof }, [ - 50u8, 154u8, 235u8, 252u8, 160u8, 25u8, 233u8, 90u8, 76u8, 227u8, 22u8, - 129u8, 221u8, 129u8, 95u8, 124u8, 117u8, 117u8, 43u8, 17u8, 109u8, - 252u8, 39u8, 115u8, 150u8, 80u8, 38u8, 34u8, 62u8, 237u8, 248u8, 246u8, + 251u8, 79u8, 44u8, 78u8, 55u8, 160u8, 150u8, 159u8, 183u8, 86u8, 129u8, + 32u8, 250u8, 138u8, 223u8, 100u8, 40u8, 203u8, 116u8, 224u8, 244u8, + 142u8, 7u8, 154u8, 147u8, 97u8, 160u8, 162u8, 95u8, 5u8, 213u8, 246u8, ], ) } - #[doc = "See [`Pallet::purge_keys`]."] + #[doc = "Removes any session key(s) of the function caller."] + #[doc = ""] + #[doc = "This doesn't take effect until the next session."] + #[doc = ""] + #[doc = "The dispatch origin of this function must be Signed and the account must be either be"] + #[doc = "convertible to a validator ID using the chain's typical addressing system (this usually"] + #[doc = "means being a controller account) or directly convertible into a validator ID (which"] + #[doc = "usually means being a stash account)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)` in number of key types. Actual cost depends on the number of length of"] + #[doc = " `T::Keys::key_ids()` which is fixed."] pub fn purge_keys( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -9423,9 +10182,9 @@ pub mod api { "QueuedKeys", (), [ - 251u8, 240u8, 64u8, 86u8, 241u8, 74u8, 141u8, 38u8, 46u8, 18u8, 92u8, - 101u8, 227u8, 161u8, 58u8, 222u8, 17u8, 29u8, 248u8, 237u8, 74u8, 69u8, - 18u8, 16u8, 129u8, 187u8, 172u8, 249u8, 162u8, 96u8, 218u8, 186u8, + 54u8, 232u8, 4u8, 80u8, 89u8, 214u8, 20u8, 219u8, 48u8, 108u8, 26u8, + 89u8, 170u8, 210u8, 66u8, 37u8, 12u8, 60u8, 148u8, 186u8, 241u8, 64u8, + 83u8, 37u8, 124u8, 217u8, 51u8, 120u8, 148u8, 205u8, 85u8, 48u8, ], ) } @@ -9469,9 +10228,9 @@ pub mod api { "NextKeys", (), [ - 87u8, 61u8, 243u8, 159u8, 164u8, 196u8, 130u8, 218u8, 136u8, 189u8, - 253u8, 151u8, 230u8, 9u8, 214u8, 58u8, 102u8, 67u8, 61u8, 138u8, 242u8, - 214u8, 80u8, 166u8, 130u8, 47u8, 141u8, 197u8, 11u8, 73u8, 100u8, 16u8, + 123u8, 233u8, 243u8, 13u8, 162u8, 60u8, 206u8, 97u8, 76u8, 43u8, 184u8, + 99u8, 17u8, 23u8, 110u8, 108u8, 131u8, 195u8, 109u8, 24u8, 217u8, 93u8, + 99u8, 41u8, 95u8, 196u8, 239u8, 243u8, 191u8, 131u8, 2u8, 57u8, ], ) } @@ -9495,9 +10254,9 @@ pub mod api { _0.borrow(), ), [ - 87u8, 61u8, 243u8, 159u8, 164u8, 196u8, 130u8, 218u8, 136u8, 189u8, - 253u8, 151u8, 230u8, 9u8, 214u8, 58u8, 102u8, 67u8, 61u8, 138u8, 242u8, - 214u8, 80u8, 166u8, 130u8, 47u8, 141u8, 197u8, 11u8, 73u8, 100u8, 16u8, + 123u8, 233u8, 243u8, 13u8, 162u8, 60u8, 206u8, 97u8, 76u8, 43u8, 184u8, + 99u8, 17u8, 23u8, 110u8, 108u8, 131u8, 195u8, 109u8, 24u8, 217u8, 93u8, + 99u8, 41u8, 95u8, 196u8, 239u8, 243u8, 191u8, 131u8, 2u8, 57u8, ], ) } @@ -9618,7 +10377,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] pub struct ReportEquivocation { pub equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< report_equivocation::EquivocationProof, @@ -9652,7 +10414,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + #[doc = ""] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] pub struct ReportEquivocationUnsigned { pub equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< report_equivocation_unsigned::EquivocationProof, @@ -9686,7 +10456,18 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::note_stalled`]."] + #[doc = "Note that the current authority set of the GRANDPA finality gadget has stalled."] + #[doc = ""] + #[doc = "This will trigger a forced authority set change at the beginning of the next session, to"] + #[doc = "be enacted `delay` blocks after that. The `delay` should be high enough to safely assume"] + #[doc = "that the block signalling the forced change will not be re-orged e.g. 1000 blocks."] + #[doc = "The block production rate (which may be slowed down because of finality lagging) should"] + #[doc = "be taken into account when choosing the `delay`. The GRANDPA voters based on the new"] + #[doc = "authority will start voting on top of `best_finalized_block_number` for new finalized"] + #[doc = "blocks. `best_finalized_block_number` should be the highest of the latest finalized"] + #[doc = "block of all validators of the new authority set."] + #[doc = ""] + #[doc = "Only callable by root."] pub struct NoteStalled { pub delay: note_stalled::Delay, pub best_finalized_block_number: note_stalled::BestFinalizedBlockNumber, @@ -9703,7 +10484,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] pub fn report_equivocation( &self, equivocation_proof: types::report_equivocation::EquivocationProof, @@ -9720,13 +10504,22 @@ pub mod api { key_owner_proof, }, [ - 11u8, 183u8, 81u8, 93u8, 41u8, 7u8, 70u8, 155u8, 8u8, 57u8, 177u8, - 245u8, 131u8, 79u8, 236u8, 118u8, 147u8, 114u8, 40u8, 204u8, 177u8, - 2u8, 43u8, 42u8, 2u8, 201u8, 202u8, 120u8, 150u8, 109u8, 108u8, 156u8, + 197u8, 206u8, 246u8, 26u8, 171u8, 25u8, 214u8, 211u8, 138u8, 132u8, + 148u8, 48u8, 66u8, 12u8, 92u8, 17u8, 190u8, 155u8, 121u8, 222u8, 226u8, + 171u8, 208u8, 123u8, 253u8, 247u8, 253u8, 191u8, 90u8, 4u8, 224u8, + 104u8, ], ) } - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + #[doc = ""] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] pub fn report_equivocation_unsigned( &self, equivocation_proof: types::report_equivocation_unsigned::EquivocationProof, @@ -9744,13 +10537,24 @@ pub mod api { key_owner_proof, }, [ - 141u8, 133u8, 227u8, 65u8, 22u8, 181u8, 108u8, 9u8, 157u8, 27u8, 124u8, - 53u8, 177u8, 27u8, 5u8, 16u8, 193u8, 66u8, 59u8, 87u8, 143u8, 238u8, - 251u8, 167u8, 117u8, 138u8, 246u8, 236u8, 65u8, 148u8, 20u8, 131u8, + 109u8, 97u8, 251u8, 184u8, 77u8, 61u8, 95u8, 187u8, 132u8, 146u8, 18u8, + 105u8, 109u8, 124u8, 181u8, 74u8, 143u8, 171u8, 248u8, 188u8, 69u8, + 63u8, 65u8, 92u8, 64u8, 42u8, 104u8, 131u8, 67u8, 202u8, 172u8, 73u8, ], ) } - #[doc = "See [`Pallet::note_stalled`]."] + #[doc = "Note that the current authority set of the GRANDPA finality gadget has stalled."] + #[doc = ""] + #[doc = "This will trigger a forced authority set change at the beginning of the next session, to"] + #[doc = "be enacted `delay` blocks after that. The `delay` should be high enough to safely assume"] + #[doc = "that the block signalling the forced change will not be re-orged e.g. 1000 blocks."] + #[doc = "The block production rate (which may be slowed down because of finality lagging) should"] + #[doc = "be taken into account when choosing the `delay`. The GRANDPA voters based on the new"] + #[doc = "authority will start voting on top of `best_finalized_block_number` for new finalized"] + #[doc = "blocks. `best_finalized_block_number` should be the highest of the latest finalized"] + #[doc = "block of all validators of the new authority set."] + #[doc = ""] + #[doc = "Only callable by root."] pub fn note_stalled( &self, delay: types::note_stalled::Delay, @@ -9866,6 +10670,14 @@ pub mod api { pub type SetIdSession = ::core::primitive::u32; pub type Param0 = ::core::primitive::u64; } + pub mod authorities { + use super::runtime_types; + pub type Authorities = + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec4<( + runtime_types::sp_consensus_grandpa::app::Public, + ::core::primitive::u64, + )>; + } } pub struct StorageApi; impl StorageApi { @@ -9905,10 +10717,10 @@ pub mod api { "PendingChange", (), [ - 150u8, 194u8, 185u8, 248u8, 239u8, 43u8, 141u8, 253u8, 61u8, 106u8, - 74u8, 164u8, 209u8, 204u8, 206u8, 200u8, 32u8, 38u8, 11u8, 78u8, 84u8, - 243u8, 181u8, 142u8, 179u8, 151u8, 81u8, 204u8, 244u8, 150u8, 137u8, - 250u8, + 32u8, 165u8, 141u8, 100u8, 109u8, 66u8, 58u8, 22u8, 118u8, 84u8, 92u8, + 164u8, 119u8, 130u8, 104u8, 25u8, 244u8, 111u8, 223u8, 54u8, 184u8, + 95u8, 196u8, 30u8, 244u8, 129u8, 110u8, 127u8, 200u8, 66u8, 226u8, + 26u8, ], ) } @@ -10042,6 +10854,28 @@ pub mod api { ], ) } + #[doc = " The current list of authorities."] + pub fn authorities( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::authorities::Authorities, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Grandpa", + "Authorities", + (), + [ + 192u8, 157u8, 98u8, 244u8, 104u8, 38u8, 195u8, 114u8, 183u8, 62u8, + 247u8, 18u8, 31u8, 152u8, 246u8, 206u8, 97u8, 13u8, 118u8, 211u8, + 104u8, 54u8, 150u8, 152u8, 126u8, 170u8, 228u8, 158u8, 108u8, 129u8, + 134u8, 44u8, + ], + ) + } } } pub mod constants { @@ -10107,206 +10941,31 @@ pub mod api { } } } - pub mod im_online { + pub mod authority_discovery { use super::root_mod; use super::runtime_types; - #[doc = "The `Error` enum of this pallet."] - pub type Error = runtime_types::pallet_im_online::pallet::Error; - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub type Call = runtime_types::pallet_im_online::pallet::Call; - pub mod calls { - use super::root_mod; - use super::runtime_types; - type DispatchError = runtime_types::sp_runtime::DispatchError; - pub mod types { - use super::runtime_types; - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - #[doc = "See [`Pallet::heartbeat`]."] - pub struct Heartbeat { - pub heartbeat: heartbeat::Heartbeat, - pub signature: heartbeat::Signature, - } - pub mod heartbeat { - use super::runtime_types; - pub type Heartbeat = - runtime_types::pallet_im_online::Heartbeat<::core::primitive::u32>; - pub type Signature = - runtime_types::pallet_im_online::sr25519::app_sr25519::Signature; - } - impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Heartbeat { - const PALLET: &'static str = "ImOnline"; - const CALL: &'static str = "heartbeat"; - } - } - pub struct TransactionApi; - impl TransactionApi { - #[doc = "See [`Pallet::heartbeat`]."] - pub fn heartbeat( - &self, - heartbeat: types::heartbeat::Heartbeat, - signature: types::heartbeat::Signature, - ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload - { - ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( - "ImOnline", - "heartbeat", - types::Heartbeat { - heartbeat, - signature, - }, - [ - 41u8, 78u8, 115u8, 250u8, 94u8, 34u8, 215u8, 28u8, 33u8, 175u8, 203u8, - 205u8, 14u8, 40u8, 197u8, 51u8, 24u8, 198u8, 173u8, 32u8, 119u8, 154u8, - 213u8, 125u8, 219u8, 3u8, 128u8, 52u8, 166u8, 223u8, 241u8, 129u8, - ], - ) - } - } - } - #[doc = "The `Event` enum of this pallet"] - pub type Event = runtime_types::pallet_im_online::pallet::Event; - pub mod events { - use super::runtime_types; - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] - #[doc = "A new heartbeat was received from `AuthorityId`."] - pub struct HeartbeatReceived { - pub authority_id: heartbeat_received::AuthorityId, - } - pub mod heartbeat_received { - use super::runtime_types; - pub type AuthorityId = - runtime_types::pallet_im_online::sr25519::app_sr25519::Public; - } - impl ::subxt::ext::subxt_core::events::StaticEvent for HeartbeatReceived { - const PALLET: &'static str = "ImOnline"; - const EVENT: &'static str = "HeartbeatReceived"; - } - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] - #[doc = "At the end of the session, no offence was committed."] - pub struct AllGood; - impl ::subxt::ext::subxt_core::events::StaticEvent for AllGood { - const PALLET: &'static str = "ImOnline"; - const EVENT: &'static str = "AllGood"; - } - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] - #[doc = "At the end of the session, at least one validator was found to be offline."] - pub struct SomeOffline { - pub offline: some_offline::Offline, - } - pub mod some_offline { - use super::runtime_types; - pub type Offline = ::subxt::ext::subxt_core::alloc::vec::Vec<( - ::subxt::ext::subxt_core::utils::AccountId32, - (), - )>; - } - impl ::subxt::ext::subxt_core::events::StaticEvent for SomeOffline { - const PALLET: &'static str = "ImOnline"; - const EVENT: &'static str = "SomeOffline"; - } - } pub mod storage { use super::runtime_types; pub mod types { use super::runtime_types; - pub mod heartbeat_after { - use super::runtime_types; - pub type HeartbeatAfter = ::core::primitive::u32; - } pub mod keys { use super::runtime_types; pub type Keys = runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec5< - runtime_types::pallet_im_online::sr25519::app_sr25519::Public, + runtime_types::sp_authority_discovery::app::Public, >; } - pub mod received_heartbeats { + pub mod next_keys { use super::runtime_types; - pub type ReceivedHeartbeats = ::core::primitive::bool; - pub type Param0 = ::core::primitive::u32; - pub type Param1 = ::core::primitive::u32; - } - pub mod authored_blocks { - use super::runtime_types; - pub type AuthoredBlocks = ::core::primitive::u32; - pub type Param0 = ::core::primitive::u32; - pub type Param1 = ::subxt::ext::subxt_core::utils::AccountId32; + pub type NextKeys = + runtime_types::bounded_collections::weak_bounded_vec::WeakBoundedVec5< + runtime_types::sp_authority_discovery::app::Public, + >; } } pub struct StorageApi; impl StorageApi { - #[doc = " The block number after which it's ok to send heartbeats in the current"] - #[doc = " session."] - #[doc = ""] - #[doc = " At the beginning of each session we set this to a value that should fall"] - #[doc = " roughly in the middle of the session duration. The idea is to first wait for"] - #[doc = " the validators to produce a block in the current session, so that the"] - #[doc = " heartbeat later on will not be necessary."] - #[doc = ""] - #[doc = " This value will only be used as a fallback if we fail to get a proper session"] - #[doc = " progress estimate from `NextSessionRotation`, as those estimates should be"] - #[doc = " more accurate then the value we calculate for `HeartbeatAfter`."] - pub fn heartbeat_after( - &self, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - (), - types::heartbeat_after::HeartbeatAfter, - ::subxt::ext::subxt_core::utils::Yes, - ::subxt::ext::subxt_core::utils::Yes, - (), - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "ImOnline", - "HeartbeatAfter", - (), - [ - 36u8, 179u8, 76u8, 254u8, 3u8, 184u8, 154u8, 142u8, 70u8, 104u8, 44u8, - 244u8, 39u8, 97u8, 31u8, 31u8, 93u8, 228u8, 185u8, 224u8, 13u8, 160u8, - 231u8, 210u8, 110u8, 143u8, 116u8, 29u8, 0u8, 215u8, 217u8, 137u8, - ], - ) - } - #[doc = " The current set of keys that may issue a heartbeat."] + #[doc = " Keys of the current authority set."] pub fn keys( &self, ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< @@ -10317,223 +10976,41 @@ pub mod api { (), > { ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "ImOnline", + "AuthorityDiscovery", "Keys", (), [ - 111u8, 104u8, 188u8, 46u8, 152u8, 140u8, 137u8, 244u8, 52u8, 214u8, - 115u8, 156u8, 39u8, 239u8, 15u8, 168u8, 193u8, 125u8, 57u8, 195u8, - 250u8, 156u8, 234u8, 222u8, 222u8, 253u8, 135u8, 232u8, 196u8, 163u8, - 29u8, 218u8, + 35u8, 71u8, 73u8, 255u8, 160u8, 250u8, 38u8, 205u8, 32u8, 139u8, 236u8, + 83u8, 194u8, 12u8, 20u8, 221u8, 114u8, 94u8, 196u8, 246u8, 136u8, + 175u8, 70u8, 98u8, 91u8, 50u8, 236u8, 131u8, 131u8, 146u8, 150u8, + 192u8, ], ) } - #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] - pub fn received_heartbeats_iter( + #[doc = " Keys of the next authority set."] + pub fn next_keys( &self, ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< (), - types::received_heartbeats::ReceivedHeartbeats, - (), - (), + types::next_keys::NextKeys, ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), > { ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "ImOnline", - "ReceivedHeartbeats", + "AuthorityDiscovery", + "NextKeys", (), [ - 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, - 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, - 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] - pub fn received_heartbeats_iter1( - &self, - _0: impl ::core::borrow::Borrow, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - ::subxt::ext::subxt_core::storage::address::StaticStorageKey< - types::received_heartbeats::Param0, - >, - types::received_heartbeats::ReceivedHeartbeats, - (), - (), - ::subxt::ext::subxt_core::utils::Yes, - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "ImOnline", - "ReceivedHeartbeats", - ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( - _0.borrow(), - ), - [ - 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, - 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, - 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `SessionIndex` and `AuthIndex`."] - pub fn received_heartbeats( - &self, - _0: impl ::core::borrow::Borrow, - _1: impl ::core::borrow::Borrow, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - ( - ::subxt::ext::subxt_core::storage::address::StaticStorageKey< - types::received_heartbeats::Param0, - >, - ::subxt::ext::subxt_core::storage::address::StaticStorageKey< - types::received_heartbeats::Param1, - >, - ), - types::received_heartbeats::ReceivedHeartbeats, - ::subxt::ext::subxt_core::utils::Yes, - (), - (), - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "ImOnline", - "ReceivedHeartbeats", - ( - ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( - _0.borrow(), - ), - ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( - _1.borrow(), - ), - ), - [ - 30u8, 155u8, 42u8, 200u8, 223u8, 48u8, 127u8, 31u8, 253u8, 195u8, - 234u8, 108u8, 64u8, 27u8, 247u8, 17u8, 187u8, 199u8, 41u8, 138u8, 55u8, - 163u8, 94u8, 226u8, 10u8, 3u8, 132u8, 129u8, 8u8, 138u8, 137u8, 171u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] - #[doc = " number of blocks authored by the given authority."] - pub fn authored_blocks_iter( - &self, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - (), - types::authored_blocks::AuthoredBlocks, - (), - ::subxt::ext::subxt_core::utils::Yes, - ::subxt::ext::subxt_core::utils::Yes, - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "ImOnline", - "AuthoredBlocks", - (), - [ - 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, - 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, - 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, - 233u8, 126u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] - #[doc = " number of blocks authored by the given authority."] - pub fn authored_blocks_iter1( - &self, - _0: impl ::core::borrow::Borrow, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - ::subxt::ext::subxt_core::storage::address::StaticStorageKey< - types::authored_blocks::Param0, - >, - types::authored_blocks::AuthoredBlocks, - (), - ::subxt::ext::subxt_core::utils::Yes, - ::subxt::ext::subxt_core::utils::Yes, - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "ImOnline", - "AuthoredBlocks", - ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( - _0.borrow(), - ), - [ - 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, - 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, - 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, - 233u8, 126u8, - ], - ) - } - #[doc = " For each session index, we keep a mapping of `ValidatorId` to the"] - #[doc = " number of blocks authored by the given authority."] - pub fn authored_blocks( - &self, - _0: impl ::core::borrow::Borrow, - _1: impl ::core::borrow::Borrow, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - ( - ::subxt::ext::subxt_core::storage::address::StaticStorageKey< - types::authored_blocks::Param0, - >, - ::subxt::ext::subxt_core::storage::address::StaticStorageKey< - types::authored_blocks::Param1, - >, - ), - types::authored_blocks::AuthoredBlocks, - ::subxt::ext::subxt_core::utils::Yes, - ::subxt::ext::subxt_core::utils::Yes, - (), - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "ImOnline", - "AuthoredBlocks", - ( - ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( - _0.borrow(), - ), - ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( - _1.borrow(), - ), - ), - [ - 123u8, 76u8, 230u8, 113u8, 65u8, 255u8, 99u8, 79u8, 131u8, 139u8, - 218u8, 20u8, 174u8, 191u8, 224u8, 67u8, 137u8, 48u8, 146u8, 209u8, - 148u8, 69u8, 130u8, 9u8, 173u8, 253u8, 206u8, 196u8, 68u8, 160u8, - 233u8, 126u8, + 54u8, 44u8, 61u8, 196u8, 2u8, 249u8, 185u8, 199u8, 245u8, 154u8, 178u8, + 109u8, 237u8, 147u8, 72u8, 209u8, 72u8, 196u8, 31u8, 192u8, 217u8, + 231u8, 71u8, 28u8, 148u8, 138u8, 29u8, 115u8, 247u8, 95u8, 185u8, + 189u8, ], ) } } } - pub mod constants { - use super::runtime_types; - pub struct ConstantsApi; - impl ConstantsApi { - #[doc = " A configuration for base priority of unsigned transactions."] - #[doc = ""] - #[doc = " This is exposed so that it can be tuned for particular runtime, when"] - #[doc = " multiple pallets send unsigned transactions."] - pub fn unsigned_priority( - &self, - ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< - ::core::primitive::u64, - > { - ::subxt::ext::subxt_core::constants::address::StaticAddress::new_static( - "ImOnline", - "UnsignedPriority", - [ - 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, - 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, - 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, - 246u8, - ], - ) - } - } - } - } - pub mod authority_discovery { - use super::root_mod; - use super::runtime_types; } pub mod treasury { use super::root_mod; @@ -10562,7 +11039,22 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::propose_spend`]."] + #[doc = "Put forward a suggestion for spending."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = "A deposit proportional to the value is reserved and slashed if the proposal is rejected."] + #[doc = "It is returned once the proposal is awarded."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(1)"] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Proposed`] if successful."] pub struct ProposeSpend { #[codec(compact)] pub value: propose_spend::Value, @@ -10594,7 +11086,21 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::reject_proposal`]."] + #[doc = "Reject a proposed spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = "The original deposit will be slashed."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(1)"] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Rejected`] if successful."] pub struct RejectProposal { #[codec(compact)] pub proposal_id: reject_proposal::ProposalId, @@ -10621,7 +11127,23 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::approve_proposal`]."] + #[doc = "Approve a proposal."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::ApproveOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "At a later time, the proposal will be allocated to the beneficiary and the original"] + #[doc = "deposit will be returned."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = " - O(1)."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "No events are emitted from this dispatch."] pub struct ApproveProposal { #[codec(compact)] pub proposal_id: approve_proposal::ProposalId, @@ -10648,7 +11170,23 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::spend_local`]."] + #[doc = "Propose and approve a spend of treasury funds."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least `amount`."] + #[doc = ""] + #[doc = "### Details"] + #[doc = "NOTE: For record-keeping purposes, the proposer is deemed to be equivalent to the"] + #[doc = "beneficiary."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] + #[doc = "- `beneficiary`: The destination account for the transfer."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::SpendApproved`] if successful."] pub struct SpendLocal { #[codec(compact)] pub amount: spend_local::Amount, @@ -10680,7 +11218,27 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::remove_approval`]."] + #[doc = "Force a previously approved proposal to be removed from the approval queue."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "The original deposit will no longer be returned."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `proposal_id`: The index of a proposal"] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(A) where `A` is the number of approvals"] + #[doc = ""] + #[doc = "### Errors"] + #[doc = "- [`Error::ProposalNotApproved`]: The `proposal_id` supplied was not found in the"] + #[doc = " approval queue, i.e., the proposal has not been approved. This could also mean the"] + #[doc = " proposal does not exist altogether, thus there is no way it would have been approved"] + #[doc = " in the first place."] pub struct RemoveApproval { #[codec(compact)] pub proposal_id: remove_approval::ProposalId, @@ -10707,7 +11265,32 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::spend`]."] + #[doc = "Propose and approve a spend of treasury funds."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least"] + #[doc = "`amount` of `asset_kind` in the native asset. The amount of `asset_kind` is converted"] + #[doc = "for assertion using the [`Config::BalanceConverter`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "Create an approved spend for transferring a specific `amount` of `asset_kind` to a"] + #[doc = "designated beneficiary. The spend must be claimed using the `payout` dispatchable within"] + #[doc = "the [`Config::PayoutPeriod`]."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `asset_kind`: An indicator of the specific asset class to be spent."] + #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] + #[doc = "- `beneficiary`: The beneficiary of the spend."] + #[doc = "- `valid_from`: The block number from which the spend can be claimed. It can refer to"] + #[doc = " the past if the resulting spend has not yet expired according to the"] + #[doc = " [`Config::PayoutPeriod`]. If `None`, the spend can be claimed immediately after"] + #[doc = " approval."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::AssetSpendApproved`] if successful."] pub struct Spend { pub asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box, #[codec(compact)] @@ -10721,7 +11304,7 @@ pub mod api { pub type AssetKind = runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset; pub type Amount = ::core::primitive::u128; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; pub type ValidFrom = ::core::option::Option<::core::primitive::u32>; } impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Spend { @@ -10742,7 +11325,25 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::payout`]."] + #[doc = "Claim a spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "Spends must be claimed within some temporal bounds. A spend may be claimed within one"] + #[doc = "[`Config::PayoutPeriod`] from the `valid_from` block."] + #[doc = "In case of a payout failure, the spend status must be updated with the `check_status`"] + #[doc = "dispatchable before retrying with the current function."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Paid`] if successful."] pub struct Payout { pub index: payout::Index, } @@ -10768,7 +11369,25 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::check_status`]."] + #[doc = "Check the status of the spend and remove it from the storage if processed."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "The status check is a prerequisite for retrying a failed payout."] + #[doc = "If a spend has either succeeded or expired, it is removed from the storage by this"] + #[doc = "function. In such instances, transaction fees are refunded."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::PaymentFailed`] if the spend payout has failed."] + #[doc = "Emits [`Event::SpendProcessed`] if the spend payout has succeed."] pub struct CheckStatus { pub index: check_status::Index, } @@ -10794,7 +11413,22 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::void_spend`]."] + #[doc = "Void previously approved spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "A spend void is only possible if the payout has not been attempted yet."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::AssetSpendVoided`] if successful."] pub struct VoidSpend { pub index: void_spend::Index, } @@ -10809,7 +11443,22 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::propose_spend`]."] + #[doc = "Put forward a suggestion for spending."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = "A deposit proportional to the value is reserved and slashed if the proposal is rejected."] + #[doc = "It is returned once the proposal is awarded."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(1)"] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Proposed`] if successful."] pub fn propose_spend( &self, value: types::propose_spend::Value, @@ -10827,7 +11476,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::reject_proposal`]."] + #[doc = "Reject a proposed spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = "The original deposit will be slashed."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(1)"] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Rejected`] if successful."] pub fn reject_proposal( &self, proposal_id: types::reject_proposal::ProposalId, @@ -10844,7 +11507,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::approve_proposal`]."] + #[doc = "Approve a proposal."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::ApproveOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "At a later time, the proposal will be allocated to the beneficiary and the original"] + #[doc = "deposit will be returned."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = " - O(1)."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "No events are emitted from this dispatch."] pub fn approve_proposal( &self, proposal_id: types::approve_proposal::ProposalId, @@ -10861,7 +11540,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::spend_local`]."] + #[doc = "Propose and approve a spend of treasury funds."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least `amount`."] + #[doc = ""] + #[doc = "### Details"] + #[doc = "NOTE: For record-keeping purposes, the proposer is deemed to be equivalent to the"] + #[doc = "beneficiary."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] + #[doc = "- `beneficiary`: The destination account for the transfer."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::SpendApproved`] if successful."] pub fn spend_local( &self, amount: types::spend_local::Amount, @@ -10882,7 +11577,27 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_approval`]."] + #[doc = "Force a previously approved proposal to be removed from the approval queue."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "The original deposit will no longer be returned."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `proposal_id`: The index of a proposal"] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(A) where `A` is the number of approvals"] + #[doc = ""] + #[doc = "### Errors"] + #[doc = "- [`Error::ProposalNotApproved`]: The `proposal_id` supplied was not found in the"] + #[doc = " approval queue, i.e., the proposal has not been approved. This could also mean the"] + #[doc = " proposal does not exist altogether, thus there is no way it would have been approved"] + #[doc = " in the first place."] pub fn remove_approval( &self, proposal_id: types::remove_approval::ProposalId, @@ -10900,7 +11615,32 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::spend`]."] + #[doc = "Propose and approve a spend of treasury funds."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least"] + #[doc = "`amount` of `asset_kind` in the native asset. The amount of `asset_kind` is converted"] + #[doc = "for assertion using the [`Config::BalanceConverter`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "Create an approved spend for transferring a specific `amount` of `asset_kind` to a"] + #[doc = "designated beneficiary. The spend must be claimed using the `payout` dispatchable within"] + #[doc = "the [`Config::PayoutPeriod`]."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `asset_kind`: An indicator of the specific asset class to be spent."] + #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] + #[doc = "- `beneficiary`: The beneficiary of the spend."] + #[doc = "- `valid_from`: The block number from which the spend can be claimed. It can refer to"] + #[doc = " the past if the resulting spend has not yet expired according to the"] + #[doc = " [`Config::PayoutPeriod`]. If `None`, the spend can be claimed immediately after"] + #[doc = " approval."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::AssetSpendApproved`] if successful."] pub fn spend( &self, asset_kind: types::spend::AssetKind, @@ -10923,14 +11663,32 @@ pub mod api { valid_from, }, [ - 124u8, 75u8, 215u8, 13u8, 48u8, 105u8, 201u8, 35u8, 199u8, 228u8, 38u8, - 229u8, 147u8, 255u8, 237u8, 249u8, 114u8, 154u8, 129u8, 209u8, 177u8, - 17u8, 70u8, 107u8, 74u8, 175u8, 244u8, 132u8, 206u8, 24u8, 224u8, - 156u8, + 127u8, 68u8, 115u8, 140u8, 122u8, 90u8, 253u8, 105u8, 230u8, 137u8, + 104u8, 130u8, 221u8, 123u8, 49u8, 126u8, 247u8, 80u8, 12u8, 4u8, 223u8, + 218u8, 187u8, 192u8, 61u8, 221u8, 46u8, 211u8, 71u8, 196u8, 55u8, + 237u8, ], ) } - #[doc = "See [`Pallet::payout`]."] + #[doc = "Claim a spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "Spends must be claimed within some temporal bounds. A spend may be claimed within one"] + #[doc = "[`Config::PayoutPeriod`] from the `valid_from` block."] + #[doc = "In case of a payout failure, the spend status must be updated with the `check_status`"] + #[doc = "dispatchable before retrying with the current function."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Paid`] if successful."] pub fn payout( &self, index: types::payout::Index, @@ -10947,7 +11705,25 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::check_status`]."] + #[doc = "Check the status of the spend and remove it from the storage if processed."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "The status check is a prerequisite for retrying a failed payout."] + #[doc = "If a spend has either succeeded or expired, it is removed from the storage by this"] + #[doc = "function. In such instances, transaction fees are refunded."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::PaymentFailed`] if the spend payout has failed."] + #[doc = "Emits [`Event::SpendProcessed`] if the spend payout has succeed."] pub fn check_status( &self, index: types::check_status::Index, @@ -10964,7 +11740,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::void_spend`]."] + #[doc = "Void previously approved spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "A spend void is only possible if the payout has not been attempted yet."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::AssetSpendVoided`] if successful."] pub fn void_spend( &self, index: types::void_spend::Index, @@ -11222,7 +12013,7 @@ pub mod api { pub type AssetKind = runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset; pub type Amount = ::core::primitive::u128; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; pub type ValidFrom = ::core::primitive::u32; pub type ExpireAt = ::core::primitive::u32; } @@ -11360,7 +12151,7 @@ pub mod api { pub type Spends = runtime_types::pallet_treasury::SpendStatus< runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, ::core::primitive::u128, - runtime_types::xcm::VersionedMultiLocation, + runtime_types::xcm::VersionedLocation, ::core::primitive::u32, ::core::primitive::u64, >; @@ -11519,10 +12310,10 @@ pub mod api { "Spends", (), [ - 231u8, 192u8, 40u8, 149u8, 163u8, 98u8, 111u8, 136u8, 44u8, 162u8, - 87u8, 181u8, 233u8, 204u8, 87u8, 111u8, 210u8, 225u8, 235u8, 73u8, - 217u8, 8u8, 129u8, 51u8, 54u8, 85u8, 33u8, 103u8, 186u8, 128u8, 61u8, - 5u8, + 207u8, 104u8, 63u8, 103u8, 177u8, 66u8, 236u8, 100u8, 122u8, 213u8, + 125u8, 153u8, 180u8, 219u8, 124u8, 22u8, 88u8, 161u8, 188u8, 197u8, + 70u8, 46u8, 72u8, 170u8, 146u8, 4u8, 127u8, 160u8, 204u8, 2u8, 89u8, + 95u8, ], ) } @@ -11546,10 +12337,10 @@ pub mod api { _0.borrow(), ), [ - 231u8, 192u8, 40u8, 149u8, 163u8, 98u8, 111u8, 136u8, 44u8, 162u8, - 87u8, 181u8, 233u8, 204u8, 87u8, 111u8, 210u8, 225u8, 235u8, 73u8, - 217u8, 8u8, 129u8, 51u8, 54u8, 85u8, 33u8, 103u8, 186u8, 128u8, 61u8, - 5u8, + 207u8, 104u8, 63u8, 103u8, 177u8, 66u8, 236u8, 100u8, 122u8, 213u8, + 125u8, 153u8, 180u8, 219u8, 124u8, 22u8, 88u8, 161u8, 188u8, 197u8, + 70u8, 46u8, 72u8, 170u8, 146u8, 4u8, 127u8, 160u8, 204u8, 2u8, 89u8, + 95u8, ], ) } @@ -11724,7 +12515,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::vote`]."] + #[doc = "Vote in a poll. If `vote.is_aye()`, the vote is to enact the proposal;"] + #[doc = "otherwise it is a vote to keep the status quo."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `poll_index`: The index of the poll to vote for."] + #[doc = "- `vote`: The vote configuration."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter has voted on."] pub struct Vote { #[codec(compact)] pub poll_index: vote::PollIndex, @@ -11755,7 +12554,29 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::delegate`]."] + #[doc = "Delegate the voting power (with some given conviction) of the sending account for a"] + #[doc = "particular class of polls."] + #[doc = ""] + #[doc = "The balance delegated is locked for as long as it's delegated, and thereafter for the"] + #[doc = "time appropriate for the conviction's lock period."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_, and the signing account must either:"] + #[doc = " - be delegating already; or"] + #[doc = " - have no voting activity (if there is, then it will need to be removed through"] + #[doc = " `remove_vote`)."] + #[doc = ""] + #[doc = "- `to`: The account whose voting the `target` account's voting power will follow."] + #[doc = "- `class`: The class of polls to delegate. To delegate multiple classes, multiple calls"] + #[doc = " to this function are required."] + #[doc = "- `conviction`: The conviction that will be attached to the delegated votes. When the"] + #[doc = " account is undelegated, the funds will be locked for the corresponding period."] + #[doc = "- `balance`: The amount of the account's balance to be used in delegating. This must not"] + #[doc = " be more than the account's current balance."] + #[doc = ""] + #[doc = "Emits `Delegated`."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] + #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] pub struct Delegate { pub class: delegate::Class, pub to: delegate::To, @@ -11791,7 +12612,20 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::undelegate`]."] + #[doc = "Undelegate the voting power of the sending account for a particular class of polls."] + #[doc = ""] + #[doc = "Tokens may be unlocked following once an amount of time consistent with the lock period"] + #[doc = "of the conviction with which the delegation was issued has passed."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_ and the signing account must be"] + #[doc = "currently delegating."] + #[doc = ""] + #[doc = "- `class`: The class of polls to remove the delegation from."] + #[doc = ""] + #[doc = "Emits `Undelegated`."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] + #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] pub struct Undelegate { pub class: undelegate::Class, } @@ -11817,7 +12651,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::unlock`]."] + #[doc = "Remove the lock caused by prior voting/delegating which has expired within a particular"] + #[doc = "class."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `class`: The class of polls to unlock."] + #[doc = "- `target`: The account to remove the lock on."] + #[doc = ""] + #[doc = "Weight: `O(R)` with R number of vote of target."] pub struct Unlock { pub class: unlock::Class, pub target: unlock::Target, @@ -11848,7 +12690,35 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::remove_vote`]."] + #[doc = "Remove a vote for a poll."] + #[doc = ""] + #[doc = "If:"] + #[doc = "- the poll was cancelled, or"] + #[doc = "- the poll is ongoing, or"] + #[doc = "- the poll has ended such that"] + #[doc = " - the vote of the account was in opposition to the result; or"] + #[doc = " - there was no conviction to the account's vote; or"] + #[doc = " - the account made a split vote"] + #[doc = "...then the vote is removed cleanly and a following call to `unlock` may result in more"] + #[doc = "funds being available."] + #[doc = ""] + #[doc = "If, however, the poll has ended and:"] + #[doc = "- it finished corresponding to the vote of the account, and"] + #[doc = "- the account made a standard vote with conviction, and"] + #[doc = "- the lock period of the conviction is not over"] + #[doc = "...then the lock will be aggregated into the overall account's lock, which may involve"] + #[doc = "*overlocking* (where the two locks are combined into a single lock that is the maximum"] + #[doc = "of both the amount locked and the time is it locked for)."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_, and the signer must have a vote"] + #[doc = "registered for poll `index`."] + #[doc = ""] + #[doc = "- `index`: The index of poll of the vote to be removed."] + #[doc = "- `class`: Optional parameter, if given it indicates the class of the poll. For polls"] + #[doc = " which have finished or are cancelled, this must be `Some`."] + #[doc = ""] + #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] + #[doc = " Weight is calculated for the maximum number of vote."] pub struct RemoveVote { pub class: remove_vote::Class, pub index: remove_vote::Index, @@ -11876,7 +12746,22 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::remove_other_vote`]."] + #[doc = "Remove a vote for a poll."] + #[doc = ""] + #[doc = "If the `target` is equal to the signer, then this function is exactly equivalent to"] + #[doc = "`remove_vote`. If not equal to the signer, then the vote must have expired,"] + #[doc = "either because the poll was cancelled, because the voter lost the poll or"] + #[doc = "because the conviction period is over."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account of the vote to be removed; this account must have voted for poll"] + #[doc = " `index`."] + #[doc = "- `index`: The index of poll of the vote to be removed."] + #[doc = "- `class`: The class of the poll."] + #[doc = ""] + #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] + #[doc = " Weight is calculated for the maximum number of vote."] pub struct RemoveOtherVote { pub target: remove_other_vote::Target, pub class: remove_other_vote::Class, @@ -11898,7 +12783,15 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::vote`]."] + #[doc = "Vote in a poll. If `vote.is_aye()`, the vote is to enact the proposal;"] + #[doc = "otherwise it is a vote to keep the status quo."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `poll_index`: The index of the poll to vote for."] + #[doc = "- `vote`: The vote configuration."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter has voted on."] pub fn vote( &self, poll_index: types::vote::PollIndex, @@ -11917,7 +12810,29 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::delegate`]."] + #[doc = "Delegate the voting power (with some given conviction) of the sending account for a"] + #[doc = "particular class of polls."] + #[doc = ""] + #[doc = "The balance delegated is locked for as long as it's delegated, and thereafter for the"] + #[doc = "time appropriate for the conviction's lock period."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_, and the signing account must either:"] + #[doc = " - be delegating already; or"] + #[doc = " - have no voting activity (if there is, then it will need to be removed through"] + #[doc = " `remove_vote`)."] + #[doc = ""] + #[doc = "- `to`: The account whose voting the `target` account's voting power will follow."] + #[doc = "- `class`: The class of polls to delegate. To delegate multiple classes, multiple calls"] + #[doc = " to this function are required."] + #[doc = "- `conviction`: The conviction that will be attached to the delegated votes. When the"] + #[doc = " account is undelegated, the funds will be locked for the corresponding period."] + #[doc = "- `balance`: The amount of the account's balance to be used in delegating. This must not"] + #[doc = " be more than the account's current balance."] + #[doc = ""] + #[doc = "Emits `Delegated`."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] + #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] pub fn delegate( &self, class: types::delegate::Class, @@ -11942,7 +12857,20 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::undelegate`]."] + #[doc = "Undelegate the voting power of the sending account for a particular class of polls."] + #[doc = ""] + #[doc = "Tokens may be unlocked following once an amount of time consistent with the lock period"] + #[doc = "of the conviction with which the delegation was issued has passed."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_ and the signing account must be"] + #[doc = "currently delegating."] + #[doc = ""] + #[doc = "- `class`: The class of polls to remove the delegation from."] + #[doc = ""] + #[doc = "Emits `Undelegated`."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] + #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] pub fn undelegate( &self, class: types::undelegate::Class, @@ -11960,7 +12888,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unlock`]."] + #[doc = "Remove the lock caused by prior voting/delegating which has expired within a particular"] + #[doc = "class."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `class`: The class of polls to unlock."] + #[doc = "- `target`: The account to remove the lock on."] + #[doc = ""] + #[doc = "Weight: `O(R)` with R number of vote of target."] pub fn unlock( &self, class: types::unlock::Class, @@ -11979,7 +12915,35 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_vote`]."] + #[doc = "Remove a vote for a poll."] + #[doc = ""] + #[doc = "If:"] + #[doc = "- the poll was cancelled, or"] + #[doc = "- the poll is ongoing, or"] + #[doc = "- the poll has ended such that"] + #[doc = " - the vote of the account was in opposition to the result; or"] + #[doc = " - there was no conviction to the account's vote; or"] + #[doc = " - the account made a split vote"] + #[doc = "...then the vote is removed cleanly and a following call to `unlock` may result in more"] + #[doc = "funds being available."] + #[doc = ""] + #[doc = "If, however, the poll has ended and:"] + #[doc = "- it finished corresponding to the vote of the account, and"] + #[doc = "- the account made a standard vote with conviction, and"] + #[doc = "- the lock period of the conviction is not over"] + #[doc = "...then the lock will be aggregated into the overall account's lock, which may involve"] + #[doc = "*overlocking* (where the two locks are combined into a single lock that is the maximum"] + #[doc = "of both the amount locked and the time is it locked for)."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_, and the signer must have a vote"] + #[doc = "registered for poll `index`."] + #[doc = ""] + #[doc = "- `index`: The index of poll of the vote to be removed."] + #[doc = "- `class`: Optional parameter, if given it indicates the class of the poll. For polls"] + #[doc = " which have finished or are cancelled, this must be `Some`."] + #[doc = ""] + #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] + #[doc = " Weight is calculated for the maximum number of vote."] pub fn remove_vote( &self, class: types::remove_vote::Class, @@ -11998,7 +12962,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_other_vote`]."] + #[doc = "Remove a vote for a poll."] + #[doc = ""] + #[doc = "If the `target` is equal to the signer, then this function is exactly equivalent to"] + #[doc = "`remove_vote`. If not equal to the signer, then the vote must have expired,"] + #[doc = "either because the poll was cancelled, because the voter lost the poll or"] + #[doc = "because the conviction period is over."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account of the vote to be removed; this account must have voted for poll"] + #[doc = " `index`."] + #[doc = "- `index`: The index of poll of the vote to be removed."] + #[doc = "- `class`: The class of the poll."] + #[doc = ""] + #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] + #[doc = " Weight is calculated for the maximum number of vote."] pub fn remove_other_vote( &self, target: types::remove_other_vote::Target, @@ -12310,7 +13289,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::submit`]."] + #[doc = "Propose a referendum on a privileged action."] + #[doc = ""] + #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] + #[doc = " available."] + #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] + #[doc = "- `proposal`: The proposal."] + #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] + #[doc = ""] + #[doc = "Emits `Submitted`."] pub struct Submit { pub proposal_origin: ::subxt::ext::subxt_core::alloc::boxed::Box, @@ -12347,7 +13334,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::place_decision_deposit`]."] + #[doc = "Post the Decision Deposit for a referendum."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] + #[doc = " referendum's track's Decision Deposit."] + #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] + #[doc = " posted."] + #[doc = ""] + #[doc = "Emits `DecisionDepositPlaced`."] pub struct PlaceDecisionDeposit { pub index: place_decision_deposit::Index, } @@ -12373,7 +13367,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::refund_decision_deposit`]."] + #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `DecisionDepositRefunded`."] pub struct RefundDecisionDeposit { pub index: refund_decision_deposit::Index, } @@ -12399,7 +13399,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an ongoing referendum."] + #[doc = ""] + #[doc = "- `origin`: must be the `CancelOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Cancelled`."] pub struct Cancel { pub index: cancel::Index, } @@ -12425,7 +13430,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::kill`]."] + #[doc = "Cancel an ongoing referendum and slash the deposits."] + #[doc = ""] + #[doc = "- `origin`: must be the `KillOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Killed` and `DepositSlashed`."] pub struct Kill { pub index: kill::Index, } @@ -12451,7 +13461,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::nudge_referendum`]."] + #[doc = "Advance a referendum onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `index`: the referendum to be advanced."] pub struct NudgeReferendum { pub index: nudge_referendum::Index, } @@ -12477,7 +13490,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::one_fewer_deciding`]."] + #[doc = "Advance a track onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `track`: the track to be advanced."] + #[doc = ""] + #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] + #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] + #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] + #[doc = "- decrement `DecidingCount`."] pub struct OneFewerDeciding { pub track: one_fewer_deciding::Track, } @@ -12503,7 +13524,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::refund_submission_deposit`]."] + #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `SubmissionDepositRefunded`."] pub struct RefundSubmissionDeposit { pub index: refund_submission_deposit::Index, } @@ -12529,7 +13556,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_metadata`]."] + #[doc = "Set or clear metadata of a referendum."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] + #[doc = " metadata of a finished referendum."] + #[doc = "- `index`: The index of a referendum to set or clear metadata for."] + #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] pub struct SetMetadata { pub index: set_metadata::Index, pub maybe_hash: set_metadata::MaybeHash, @@ -12547,7 +13580,15 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::submit`]."] + #[doc = "Propose a referendum on a privileged action."] + #[doc = ""] + #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] + #[doc = " available."] + #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] + #[doc = "- `proposal`: The proposal."] + #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] + #[doc = ""] + #[doc = "Emits `Submitted`."] pub fn submit( &self, proposal_origin: types::submit::ProposalOrigin, @@ -12566,14 +13607,20 @@ pub mod api { enactment_moment, }, [ - 116u8, 212u8, 158u8, 18u8, 89u8, 136u8, 153u8, 97u8, 43u8, 197u8, - 200u8, 161u8, 145u8, 102u8, 19u8, 25u8, 135u8, 13u8, 199u8, 101u8, - 107u8, 221u8, 244u8, 15u8, 192u8, 176u8, 3u8, 154u8, 248u8, 70u8, - 113u8, 69u8, + 252u8, 72u8, 60u8, 208u8, 214u8, 81u8, 179u8, 80u8, 7u8, 215u8, 54u8, + 7u8, 214u8, 49u8, 72u8, 70u8, 213u8, 143u8, 217u8, 190u8, 47u8, 3u8, + 191u8, 110u8, 67u8, 139u8, 137u8, 215u8, 14u8, 225u8, 124u8, 117u8, ], ) } - #[doc = "See [`Pallet::place_decision_deposit`]."] + #[doc = "Post the Decision Deposit for a referendum."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] + #[doc = " referendum's track's Decision Deposit."] + #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] + #[doc = " posted."] + #[doc = ""] + #[doc = "Emits `DecisionDepositPlaced`."] pub fn place_decision_deposit( &self, index: types::place_decision_deposit::Index, @@ -12590,7 +13637,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::refund_decision_deposit`]."] + #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `DecisionDepositRefunded`."] pub fn refund_decision_deposit( &self, index: types::refund_decision_deposit::Index, @@ -12608,7 +13661,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an ongoing referendum."] + #[doc = ""] + #[doc = "- `origin`: must be the `CancelOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Cancelled`."] pub fn cancel( &self, index: types::cancel::Index, @@ -12626,7 +13684,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kill`]."] + #[doc = "Cancel an ongoing referendum and slash the deposits."] + #[doc = ""] + #[doc = "- `origin`: must be the `KillOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Killed` and `DepositSlashed`."] pub fn kill( &self, index: types::kill::Index, @@ -12644,7 +13707,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::nudge_referendum`]."] + #[doc = "Advance a referendum onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `index`: the referendum to be advanced."] pub fn nudge_referendum( &self, index: types::nudge_referendum::Index, @@ -12662,7 +13728,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::one_fewer_deciding`]."] + #[doc = "Advance a track onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `track`: the track to be advanced."] + #[doc = ""] + #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] + #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] + #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] + #[doc = "- decrement `DecidingCount`."] pub fn one_fewer_deciding( &self, track: types::one_fewer_deciding::Track, @@ -12680,7 +13754,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::refund_submission_deposit`]."] + #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `SubmissionDepositRefunded`."] pub fn refund_submission_deposit( &self, index: types::refund_submission_deposit::Index, @@ -12698,7 +13778,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_metadata`]."] + #[doc = "Set or clear metadata of a referendum."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] + #[doc = " metadata of a finished referendum."] + #[doc = "- `index`: The index of a referendum to set or clear metadata for."] + #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] pub fn set_metadata( &self, index: types::set_metadata::Index, @@ -12814,7 +13900,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] - #[doc = "A deposit has been slashaed."] + #[doc = "A deposit has been slashed."] pub struct DepositSlashed { pub who: deposit_slashed::Who, pub amount: deposit_slashed::Amount, @@ -13211,9 +14297,10 @@ pub mod api { "ReferendumInfoFor", (), [ - 82u8, 199u8, 121u8, 36u8, 81u8, 129u8, 79u8, 226u8, 19u8, 57u8, 26u8, - 76u8, 195u8, 60u8, 78u8, 91u8, 198u8, 250u8, 105u8, 111u8, 235u8, 11u8, - 195u8, 4u8, 39u8, 92u8, 156u8, 53u8, 248u8, 89u8, 26u8, 112u8, + 244u8, 215u8, 156u8, 181u8, 105u8, 12u8, 138u8, 249u8, 173u8, 158u8, + 171u8, 67u8, 107u8, 228u8, 45u8, 180u8, 252u8, 244u8, 186u8, 78u8, + 226u8, 223u8, 168u8, 137u8, 6u8, 232u8, 169u8, 108u8, 104u8, 211u8, + 1u8, 157u8, ], ) } @@ -13237,9 +14324,10 @@ pub mod api { _0.borrow(), ), [ - 82u8, 199u8, 121u8, 36u8, 81u8, 129u8, 79u8, 226u8, 19u8, 57u8, 26u8, - 76u8, 195u8, 60u8, 78u8, 91u8, 198u8, 250u8, 105u8, 111u8, 235u8, 11u8, - 195u8, 4u8, 39u8, 92u8, 156u8, 53u8, 248u8, 89u8, 26u8, 112u8, + 244u8, 215u8, 156u8, 181u8, 105u8, 12u8, 138u8, 249u8, 173u8, 158u8, + 171u8, 67u8, 107u8, 228u8, 45u8, 180u8, 252u8, 244u8, 186u8, 78u8, + 226u8, 223u8, 168u8, 137u8, 6u8, 232u8, 169u8, 108u8, 104u8, 211u8, + 1u8, 157u8, ], ) } @@ -13533,7 +14621,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::add_member`]."] + #[doc = "Introduce a new member."] + #[doc = ""] + #[doc = "- `origin`: Must be the `AddOrigin`."] + #[doc = "- `who`: Account of non-member which will become a member."] + #[doc = ""] + #[doc = "Weight: `O(1)`"] pub struct AddMember { pub who: add_member::Who, } @@ -13562,7 +14655,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::promote_member`]."] + #[doc = "Increment the rank of an existing member by one."] + #[doc = ""] + #[doc = "- `origin`: Must be the `PromoteOrigin`."] + #[doc = "- `who`: Account of existing member."] + #[doc = ""] + #[doc = "Weight: `O(1)`"] pub struct PromoteMember { pub who: promote_member::Who, } @@ -13591,7 +14689,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::demote_member`]."] + #[doc = "Decrement the rank of an existing member by one. If the member is already at rank zero,"] + #[doc = "then they are removed entirely."] + #[doc = ""] + #[doc = "- `origin`: Must be the `DemoteOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero."] + #[doc = ""] + #[doc = "Weight: `O(1)`, less if the member's index is highest in its rank."] pub struct DemoteMember { pub who: demote_member::Who, } @@ -13620,7 +14724,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::remove_member`]."] + #[doc = "Remove the member entirely."] + #[doc = ""] + #[doc = "- `origin`: Must be the `RemoveOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero."] + #[doc = "- `min_rank`: The rank of the member or greater."] + #[doc = ""] + #[doc = "Weight: `O(min_rank)`."] pub struct RemoveMember { pub who: remove_member::Who, pub min_rank: remove_member::MinRank, @@ -13651,7 +14761,17 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::vote`]."] + #[doc = "Add an aye or nay vote for the sender to the given proposal."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed` by a member account."] + #[doc = "- `poll`: Index of a poll which is ongoing."] + #[doc = "- `aye`: `true` if the vote is to approve the proposal, `false` otherwise."] + #[doc = ""] + #[doc = "Transaction fees are be waived if the member is voting on any particular proposal"] + #[doc = "for the first time and the call is successful. Subsequent vote changes will charge a"] + #[doc = "fee."] + #[doc = ""] + #[doc = "Weight: `O(1)`, less if there was no previous vote on the poll by the member."] pub struct Vote { pub poll: vote::Poll, pub aye: vote::Aye, @@ -13679,7 +14799,16 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::cleanup_poll`]."] + #[doc = "Remove votes from the given poll. It must have ended."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed` by any account."] + #[doc = "- `poll_index`: Index of a poll which is completed and for which votes continue to"] + #[doc = " exist."] + #[doc = "- `max`: Maximum number of vote items from remove in this call."] + #[doc = ""] + #[doc = "Transaction fees are waived if the operation is successful."] + #[doc = ""] + #[doc = "Weight `O(max)` (less if there are fewer items to remove than `max`)."] pub struct CleanupPoll { pub poll_index: cleanup_poll::PollIndex, pub max: cleanup_poll::Max, @@ -13693,10 +14822,53 @@ pub mod api { const PALLET: &'static str = "FellowshipCollective"; const CALL: &'static str = "cleanup_poll"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Exchanges a member with a new account and the same existing rank."] + #[doc = ""] + #[doc = "- `origin`: Must be the `ExchangeOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero to be exchanged."] + #[doc = "- `new_who`: New Account of existing member of rank greater than zero to exchanged to."] + pub struct ExchangeMember { + pub who: exchange_member::Who, + pub new_who: exchange_member::NewWho, + } + pub mod exchange_member { + use super::runtime_types; + pub type Who = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; + pub type NewWho = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ExchangeMember { + const PALLET: &'static str = "FellowshipCollective"; + const CALL: &'static str = "exchange_member"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::add_member`]."] + #[doc = "Introduce a new member."] + #[doc = ""] + #[doc = "- `origin`: Must be the `AddOrigin`."] + #[doc = "- `who`: Account of non-member which will become a member."] + #[doc = ""] + #[doc = "Weight: `O(1)`"] pub fn add_member( &self, who: types::add_member::Who, @@ -13713,7 +14885,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::promote_member`]."] + #[doc = "Increment the rank of an existing member by one."] + #[doc = ""] + #[doc = "- `origin`: Must be the `PromoteOrigin`."] + #[doc = "- `who`: Account of existing member."] + #[doc = ""] + #[doc = "Weight: `O(1)`"] pub fn promote_member( &self, who: types::promote_member::Who, @@ -13731,7 +14908,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::demote_member`]."] + #[doc = "Decrement the rank of an existing member by one. If the member is already at rank zero,"] + #[doc = "then they are removed entirely."] + #[doc = ""] + #[doc = "- `origin`: Must be the `DemoteOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero."] + #[doc = ""] + #[doc = "Weight: `O(1)`, less if the member's index is highest in its rank."] pub fn demote_member( &self, who: types::demote_member::Who, @@ -13749,7 +14932,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_member`]."] + #[doc = "Remove the member entirely."] + #[doc = ""] + #[doc = "- `origin`: Must be the `RemoveOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero."] + #[doc = "- `min_rank`: The rank of the member or greater."] + #[doc = ""] + #[doc = "Weight: `O(min_rank)`."] pub fn remove_member( &self, who: types::remove_member::Who, @@ -13768,7 +14957,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vote`]."] + #[doc = "Add an aye or nay vote for the sender to the given proposal."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed` by a member account."] + #[doc = "- `poll`: Index of a poll which is ongoing."] + #[doc = "- `aye`: `true` if the vote is to approve the proposal, `false` otherwise."] + #[doc = ""] + #[doc = "Transaction fees are be waived if the member is voting on any particular proposal"] + #[doc = "for the first time and the call is successful. Subsequent vote changes will charge a"] + #[doc = "fee."] + #[doc = ""] + #[doc = "Weight: `O(1)`, less if there was no previous vote on the poll by the member."] pub fn vote( &self, poll: types::vote::Poll, @@ -13786,7 +14985,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cleanup_poll`]."] + #[doc = "Remove votes from the given poll. It must have ended."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed` by any account."] + #[doc = "- `poll_index`: Index of a poll which is completed and for which votes continue to"] + #[doc = " exist."] + #[doc = "- `max`: Maximum number of vote items from remove in this call."] + #[doc = ""] + #[doc = "Transaction fees are waived if the operation is successful."] + #[doc = ""] + #[doc = "Weight `O(max)` (less if there are fewer items to remove than `max`)."] pub fn cleanup_poll( &self, poll_index: types::cleanup_poll::PollIndex, @@ -13805,6 +15013,29 @@ pub mod api { ], ) } + #[doc = "Exchanges a member with a new account and the same existing rank."] + #[doc = ""] + #[doc = "- `origin`: Must be the `ExchangeOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero to be exchanged."] + #[doc = "- `new_who`: New Account of existing member of rank greater than zero to exchanged to."] + pub fn exchange_member( + &self, + who: types::exchange_member::Who, + new_who: types::exchange_member::NewWho, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "FellowshipCollective", + "exchange_member", + types::ExchangeMember { who, new_who }, + [ + 240u8, 208u8, 76u8, 147u8, 117u8, 23u8, 91u8, 37u8, 22u8, 101u8, 53u8, + 247u8, 161u8, 94u8, 109u8, 233u8, 104u8, 129u8, 67u8, 31u8, 223u8, + 182u8, 50u8, 233u8, 120u8, 129u8, 224u8, 135u8, 52u8, 162u8, 26u8, + 189u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -13910,6 +15141,30 @@ pub mod api { const PALLET: &'static str = "FellowshipCollective"; const EVENT: &'static str = "Voted"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "The member `who` had their `AccountId` changed to `new_who`."] + pub struct MemberExchanged { + pub who: member_exchanged::Who, + pub new_who: member_exchanged::NewWho, + } + pub mod member_exchanged { + use super::runtime_types; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; + pub type NewWho = ::subxt::ext::subxt_core::utils::AccountId32; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for MemberExchanged { + const PALLET: &'static str = "FellowshipCollective"; + const EVENT: &'static str = "MemberExchanged"; + } } pub mod storage { use super::runtime_types; @@ -13946,7 +15201,7 @@ pub mod api { pub mod voting_cleanup { use super::runtime_types; pub type VotingCleanup = - runtime_types::bounded_collections::bounded_vec::BoundedVec5< + runtime_types::bounded_collections::bounded_vec::BoundedVec2< ::core::primitive::u8, >; pub type Param0 = ::core::primitive::u32; @@ -14388,7 +15643,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::submit`]."] + #[doc = "Propose a referendum on a privileged action."] + #[doc = ""] + #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] + #[doc = " available."] + #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] + #[doc = "- `proposal`: The proposal."] + #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] + #[doc = ""] + #[doc = "Emits `Submitted`."] pub struct Submit { pub proposal_origin: ::subxt::ext::subxt_core::alloc::boxed::Box, @@ -14425,7 +15688,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::place_decision_deposit`]."] + #[doc = "Post the Decision Deposit for a referendum."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] + #[doc = " referendum's track's Decision Deposit."] + #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] + #[doc = " posted."] + #[doc = ""] + #[doc = "Emits `DecisionDepositPlaced`."] pub struct PlaceDecisionDeposit { pub index: place_decision_deposit::Index, } @@ -14451,7 +15721,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::refund_decision_deposit`]."] + #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `DecisionDepositRefunded`."] pub struct RefundDecisionDeposit { pub index: refund_decision_deposit::Index, } @@ -14477,7 +15753,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an ongoing referendum."] + #[doc = ""] + #[doc = "- `origin`: must be the `CancelOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Cancelled`."] pub struct Cancel { pub index: cancel::Index, } @@ -14503,7 +15784,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::kill`]."] + #[doc = "Cancel an ongoing referendum and slash the deposits."] + #[doc = ""] + #[doc = "- `origin`: must be the `KillOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Killed` and `DepositSlashed`."] pub struct Kill { pub index: kill::Index, } @@ -14529,7 +15815,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::nudge_referendum`]."] + #[doc = "Advance a referendum onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `index`: the referendum to be advanced."] pub struct NudgeReferendum { pub index: nudge_referendum::Index, } @@ -14555,7 +15844,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::one_fewer_deciding`]."] + #[doc = "Advance a track onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `track`: the track to be advanced."] + #[doc = ""] + #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] + #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] + #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] + #[doc = "- decrement `DecidingCount`."] pub struct OneFewerDeciding { pub track: one_fewer_deciding::Track, } @@ -14581,7 +15878,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::refund_submission_deposit`]."] + #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `SubmissionDepositRefunded`."] pub struct RefundSubmissionDeposit { pub index: refund_submission_deposit::Index, } @@ -14607,7 +15910,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_metadata`]."] + #[doc = "Set or clear metadata of a referendum."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] + #[doc = " metadata of a finished referendum."] + #[doc = "- `index`: The index of a referendum to set or clear metadata for."] + #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] pub struct SetMetadata { pub index: set_metadata::Index, pub maybe_hash: set_metadata::MaybeHash, @@ -14625,7 +15934,15 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::submit`]."] + #[doc = "Propose a referendum on a privileged action."] + #[doc = ""] + #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] + #[doc = " available."] + #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] + #[doc = "- `proposal`: The proposal."] + #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] + #[doc = ""] + #[doc = "Emits `Submitted`."] pub fn submit( &self, proposal_origin: types::submit::ProposalOrigin, @@ -14644,14 +15961,20 @@ pub mod api { enactment_moment, }, [ - 116u8, 212u8, 158u8, 18u8, 89u8, 136u8, 153u8, 97u8, 43u8, 197u8, - 200u8, 161u8, 145u8, 102u8, 19u8, 25u8, 135u8, 13u8, 199u8, 101u8, - 107u8, 221u8, 244u8, 15u8, 192u8, 176u8, 3u8, 154u8, 248u8, 70u8, - 113u8, 69u8, + 252u8, 72u8, 60u8, 208u8, 214u8, 81u8, 179u8, 80u8, 7u8, 215u8, 54u8, + 7u8, 214u8, 49u8, 72u8, 70u8, 213u8, 143u8, 217u8, 190u8, 47u8, 3u8, + 191u8, 110u8, 67u8, 139u8, 137u8, 215u8, 14u8, 225u8, 124u8, 117u8, ], ) } - #[doc = "See [`Pallet::place_decision_deposit`]."] + #[doc = "Post the Decision Deposit for a referendum."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] + #[doc = " referendum's track's Decision Deposit."] + #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] + #[doc = " posted."] + #[doc = ""] + #[doc = "Emits `DecisionDepositPlaced`."] pub fn place_decision_deposit( &self, index: types::place_decision_deposit::Index, @@ -14668,7 +15991,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::refund_decision_deposit`]."] + #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `DecisionDepositRefunded`."] pub fn refund_decision_deposit( &self, index: types::refund_decision_deposit::Index, @@ -14686,7 +16015,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an ongoing referendum."] + #[doc = ""] + #[doc = "- `origin`: must be the `CancelOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Cancelled`."] pub fn cancel( &self, index: types::cancel::Index, @@ -14704,7 +16038,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kill`]."] + #[doc = "Cancel an ongoing referendum and slash the deposits."] + #[doc = ""] + #[doc = "- `origin`: must be the `KillOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Killed` and `DepositSlashed`."] pub fn kill( &self, index: types::kill::Index, @@ -14722,7 +16061,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::nudge_referendum`]."] + #[doc = "Advance a referendum onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `index`: the referendum to be advanced."] pub fn nudge_referendum( &self, index: types::nudge_referendum::Index, @@ -14740,7 +16082,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::one_fewer_deciding`]."] + #[doc = "Advance a track onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `track`: the track to be advanced."] + #[doc = ""] + #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] + #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] + #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] + #[doc = "- decrement `DecidingCount`."] pub fn one_fewer_deciding( &self, track: types::one_fewer_deciding::Track, @@ -14758,7 +16108,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::refund_submission_deposit`]."] + #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `SubmissionDepositRefunded`."] pub fn refund_submission_deposit( &self, index: types::refund_submission_deposit::Index, @@ -14776,7 +16132,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_metadata`]."] + #[doc = "Set or clear metadata of a referendum."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] + #[doc = " metadata of a finished referendum."] + #[doc = "- `index`: The index of a referendum to set or clear metadata for."] + #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] pub fn set_metadata( &self, index: types::set_metadata::Index, @@ -14892,7 +16254,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] - #[doc = "A deposit has been slashaed."] + #[doc = "A deposit has been slashed."] pub struct DepositSlashed { pub who: deposit_slashed::Who, pub amount: deposit_slashed::Amount, @@ -15281,9 +16643,10 @@ pub mod api { "ReferendumInfoFor", (), [ - 154u8, 115u8, 139u8, 27u8, 56u8, 76u8, 212u8, 73u8, 155u8, 177u8, 26u8, - 156u8, 1u8, 163u8, 243u8, 143u8, 10u8, 188u8, 63u8, 63u8, 190u8, 158u8, - 142u8, 61u8, 245u8, 254u8, 11u8, 109u8, 170u8, 98u8, 77u8, 95u8, + 64u8, 146u8, 31u8, 207u8, 209u8, 86u8, 44u8, 53u8, 78u8, 240u8, 222u8, + 131u8, 225u8, 83u8, 114u8, 205u8, 225u8, 20u8, 128u8, 183u8, 19u8, + 204u8, 67u8, 31u8, 154u8, 115u8, 183u8, 218u8, 34u8, 134u8, 222u8, + 32u8, ], ) } @@ -15307,9 +16670,10 @@ pub mod api { _0.borrow(), ), [ - 154u8, 115u8, 139u8, 27u8, 56u8, 76u8, 212u8, 73u8, 155u8, 177u8, 26u8, - 156u8, 1u8, 163u8, 243u8, 143u8, 10u8, 188u8, 63u8, 63u8, 190u8, 158u8, - 142u8, 61u8, 245u8, 254u8, 11u8, 109u8, 170u8, 98u8, 77u8, 95u8, + 64u8, 146u8, 31u8, 207u8, 209u8, 86u8, 44u8, 53u8, 78u8, 240u8, 222u8, + 131u8, 225u8, 83u8, 114u8, 205u8, 225u8, 20u8, 128u8, 183u8, 19u8, + 204u8, 67u8, 31u8, 154u8, 115u8, 183u8, 218u8, 34u8, 134u8, 222u8, + 32u8, ], ) } @@ -15578,6 +16942,10 @@ pub mod api { } } } + pub mod origins { + use super::root_mod; + use super::runtime_types; + } pub mod whitelist { use super::root_mod; use super::runtime_types; @@ -15605,7 +16973,6 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::whitelist_call`]."] pub struct WhitelistCall { pub call_hash: whitelist_call::CallHash, } @@ -15631,7 +16998,6 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::remove_whitelisted_call`]."] pub struct RemoveWhitelistedCall { pub call_hash: remove_whitelisted_call::CallHash, } @@ -15657,7 +17023,6 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::dispatch_whitelisted_call`]."] pub struct DispatchWhitelistedCall { pub call_hash: dispatch_whitelisted_call::CallHash, pub call_encoded_len: dispatch_whitelisted_call::CallEncodedLen, @@ -15687,7 +17052,6 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::dispatch_whitelisted_call_with_preimage`]."] pub struct DispatchWhitelistedCallWithPreimage { pub call: ::subxt::ext::subxt_core::alloc::boxed::Box< dispatch_whitelisted_call_with_preimage::Call, @@ -15704,7 +17068,6 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::whitelist_call`]."] pub fn whitelist_call( &self, call_hash: types::whitelist_call::CallHash, @@ -15722,7 +17085,6 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_whitelisted_call`]."] pub fn remove_whitelisted_call( &self, call_hash: types::remove_whitelisted_call::CallHash, @@ -15741,7 +17103,6 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::dispatch_whitelisted_call`]."] pub fn dispatch_whitelisted_call( &self, call_hash: types::dispatch_whitelisted_call::CallHash, @@ -15766,7 +17127,6 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::dispatch_whitelisted_call_with_preimage`]."] pub fn dispatch_whitelisted_call_with_preimage( &self, call: types::dispatch_whitelisted_call_with_preimage::Call, @@ -15780,10 +17140,10 @@ pub mod api { call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 85u8, 176u8, 96u8, 176u8, 10u8, 112u8, 30u8, 206u8, 107u8, 111u8, - 195u8, 253u8, 48u8, 252u8, 56u8, 75u8, 138u8, 201u8, 222u8, 79u8, - 234u8, 5u8, 81u8, 108u8, 103u8, 189u8, 81u8, 151u8, 57u8, 135u8, 63u8, - 222u8, + 100u8, 183u8, 169u8, 132u8, 183u8, 79u8, 255u8, 32u8, 154u8, 161u8, + 174u8, 28u8, 255u8, 200u8, 191u8, 61u8, 133u8, 82u8, 38u8, 140u8, + 156u8, 60u8, 176u8, 103u8, 28u8, 143u8, 207u8, 127u8, 14u8, 121u8, + 85u8, 192u8, ], ) } @@ -15951,7 +17311,30 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::claim`]."] + #[doc = "Make a claim to collect your DOTs."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to claim is deemed valid if the signature provided matches"] + #[doc = "the expected signed message of:"] + #[doc = ""] + #[doc = "> Ethereum Signed Message:"] + #[doc = "> (configured prefix string)(address)"] + #[doc = ""] + #[doc = "and `address` matches the `dest` account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `dest`: The destination account to payout the claim."] + #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] + #[doc = " described above."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to validate unsigned `claim` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub struct Claim { pub dest: claim::Dest, pub ethereum_signature: claim::EthereumSignature, @@ -15980,7 +17363,21 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::mint_claim`]."] + #[doc = "Mint a new claim to collect DOTs."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who`: The Ethereum address allowed to collect this claim."] + #[doc = "- `value`: The number of DOTs that will be claimed."] + #[doc = "- `vesting_schedule`: An optional vesting schedule for these DOTs."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "We assume worst case that both vesting and statement is being inserted."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub struct MintClaim { pub who: mint_claim::Who, pub value: mint_claim::Value, @@ -16018,7 +17415,33 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::claim_attest`]."] + #[doc = "Make a claim to collect your DOTs by signing a statement."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to `claim_attest` is deemed valid if the signature provided matches"] + #[doc = "the expected signed message of:"] + #[doc = ""] + #[doc = "> Ethereum Signed Message:"] + #[doc = "> (configured prefix string)(address)(statement)"] + #[doc = ""] + #[doc = "and `address` matches the `dest` account; the `statement` must match that which is"] + #[doc = "expected according to your purchase arrangement."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `dest`: The destination account to payout the claim."] + #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] + #[doc = " described above."] + #[doc = "- `statement`: The identity of the statement which is being attested to in the"] + #[doc = " signature."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to validate unsigned `claim_attest` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub struct ClaimAttest { pub dest: claim_attest::Dest, pub ethereum_signature: claim_attest::EthereumSignature, @@ -16050,7 +17473,25 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::attest`]."] + #[doc = "Attest to a statement, needed to finalize the claims process."] + #[doc = ""] + #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] + #[doc = "`SignedExtension`."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] + #[doc = "and provides a `statement` which is expected for the account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `statement`: The identity of the statement which is being attested to in the"] + #[doc = " signature."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to do pre-validation on `attest` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub struct Attest { pub statement: attest::Statement, } @@ -16077,7 +17518,6 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::move_claim`]."] pub struct MoveClaim { pub old: move_claim::Old, pub new: move_claim::New, @@ -16097,7 +17537,30 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::claim`]."] + #[doc = "Make a claim to collect your DOTs."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to claim is deemed valid if the signature provided matches"] + #[doc = "the expected signed message of:"] + #[doc = ""] + #[doc = "> Ethereum Signed Message:"] + #[doc = "> (configured prefix string)(address)"] + #[doc = ""] + #[doc = "and `address` matches the `dest` account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `dest`: The destination account to payout the claim."] + #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] + #[doc = " described above."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to validate unsigned `claim` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub fn claim( &self, dest: types::claim::Dest, @@ -16119,7 +17582,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::mint_claim`]."] + #[doc = "Mint a new claim to collect DOTs."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who`: The Ethereum address allowed to collect this claim."] + #[doc = "- `value`: The number of DOTs that will be claimed."] + #[doc = "- `vesting_schedule`: An optional vesting schedule for these DOTs."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "We assume worst case that both vesting and statement is being inserted."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub fn mint_claim( &self, who: types::mint_claim::Who, @@ -16144,7 +17621,33 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::claim_attest`]."] + #[doc = "Make a claim to collect your DOTs by signing a statement."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to `claim_attest` is deemed valid if the signature provided matches"] + #[doc = "the expected signed message of:"] + #[doc = ""] + #[doc = "> Ethereum Signed Message:"] + #[doc = "> (configured prefix string)(address)(statement)"] + #[doc = ""] + #[doc = "and `address` matches the `dest` account; the `statement` must match that which is"] + #[doc = "expected according to your purchase arrangement."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `dest`: The destination account to payout the claim."] + #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] + #[doc = " described above."] + #[doc = "- `statement`: The identity of the statement which is being attested to in the"] + #[doc = " signature."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to validate unsigned `claim_attest` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub fn claim_attest( &self, dest: types::claim_attest::Dest, @@ -16167,7 +17670,25 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::attest`]."] + #[doc = "Attest to a statement, needed to finalize the claims process."] + #[doc = ""] + #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] + #[doc = "`SignedExtension`."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] + #[doc = "and provides a `statement` which is expected for the account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `statement`: The identity of the statement which is being attested to in the"] + #[doc = " signature."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to do pre-validation on `attest` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] pub fn attest( &self, statement: types::attest::Statement, @@ -16185,7 +17706,6 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::move_claim`]."] pub fn move_claim( &self, old: types::move_claim::Old, @@ -16554,7 +18074,24 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::batch`]."] + #[doc = "Send a batch of dispatch calls."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] + #[doc = ""] + #[doc = "This will return `Ok` in all circumstances. To determine the success of the batch, an"] + #[doc = "event is deposited. If a call failed and the batch was interrupted, then the"] + #[doc = "`BatchInterrupted` event is deposited, along with the number of successful calls made"] + #[doc = "and the error of the failed call. If all were successful, then the `BatchCompleted`"] + #[doc = "event is deposited."] pub struct Batch { pub calls: batch::Calls, } @@ -16582,7 +18119,19 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::as_derivative`]."] + #[doc = "Send a call through an indexed pseudonym of the sender."] + #[doc = ""] + #[doc = "Filter from origin are passed along. The call will be dispatched with an origin which"] + #[doc = "use the same filter as the origin of this call."] + #[doc = ""] + #[doc = "NOTE: If you need to ensure that any account-based filtering is not honored (i.e."] + #[doc = "because you expect `proxy` to have been used prior in the call stack and you do not want"] + #[doc = "the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1`"] + #[doc = "in the Multisig pallet instead."] + #[doc = ""] + #[doc = "NOTE: Prior to version *12, this was called `as_limited_sub`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] pub struct AsDerivative { pub index: as_derivative::Index, pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, @@ -16610,7 +18159,19 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::batch_all`]."] + #[doc = "Send a batch of dispatch calls and atomically execute them."] + #[doc = "The whole transaction will rollback and fail if any of the calls failed."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] pub struct BatchAll { pub calls: batch_all::Calls, } @@ -16638,7 +18199,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::dispatch_as`]."] + #[doc = "Dispatches a function call with a provided origin."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct DispatchAs { pub as_origin: ::subxt::ext::subxt_core::alloc::boxed::Box, @@ -16667,7 +18233,19 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_batch`]."] + #[doc = "Send a batch of dispatch calls."] + #[doc = "Unlike `batch`, it allows errors and won't interrupt."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatch without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] pub struct ForceBatch { pub calls: force_batch::Calls, } @@ -16695,7 +18273,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::with_weight`]."] + #[doc = "Dispatch a function call with a specified weight."] + #[doc = ""] + #[doc = "This function does not check the weight of the call, and instead allows the"] + #[doc = "Root origin to specify the weight of the call."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] pub struct WithWeight { pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, pub weight: with_weight::Weight, @@ -16712,7 +18295,24 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::batch`]."] + #[doc = "Send a batch of dispatch calls."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] + #[doc = ""] + #[doc = "This will return `Ok` in all circumstances. To determine the success of the batch, an"] + #[doc = "event is deposited. If a call failed and the batch was interrupted, then the"] + #[doc = "`BatchInterrupted` event is deposited, along with the number of successful calls made"] + #[doc = "and the error of the failed call. If all were successful, then the `BatchCompleted`"] + #[doc = "event is deposited."] pub fn batch( &self, calls: types::batch::Calls, @@ -16723,14 +18323,25 @@ pub mod api { "batch", types::Batch { calls }, [ - 240u8, 229u8, 246u8, 172u8, 254u8, 190u8, 97u8, 110u8, 105u8, 221u8, - 115u8, 188u8, 52u8, 86u8, 113u8, 118u8, 146u8, 240u8, 235u8, 2u8, - 171u8, 219u8, 18u8, 212u8, 39u8, 217u8, 66u8, 80u8, 55u8, 148u8, 241u8, - 20u8, + 145u8, 74u8, 219u8, 37u8, 55u8, 24u8, 67u8, 207u8, 242u8, 129u8, 31u8, + 194u8, 168u8, 228u8, 4u8, 135u8, 151u8, 193u8, 132u8, 26u8, 75u8, + 133u8, 57u8, 48u8, 91u8, 57u8, 218u8, 203u8, 44u8, 186u8, 55u8, 189u8, ], ) } - #[doc = "See [`Pallet::as_derivative`]."] + #[doc = "Send a call through an indexed pseudonym of the sender."] + #[doc = ""] + #[doc = "Filter from origin are passed along. The call will be dispatched with an origin which"] + #[doc = "use the same filter as the origin of this call."] + #[doc = ""] + #[doc = "NOTE: If you need to ensure that any account-based filtering is not honored (i.e."] + #[doc = "because you expect `proxy` to have been used prior in the call stack and you do not want"] + #[doc = "the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1`"] + #[doc = "in the Multisig pallet instead."] + #[doc = ""] + #[doc = "NOTE: Prior to version *12, this was called `as_limited_sub`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] pub fn as_derivative( &self, index: types::as_derivative::Index, @@ -16745,14 +18356,25 @@ pub mod api { call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 98u8, 181u8, 74u8, 231u8, 95u8, 220u8, 13u8, 120u8, 161u8, 144u8, - 254u8, 82u8, 141u8, 143u8, 226u8, 62u8, 106u8, 112u8, 179u8, 127u8, - 54u8, 43u8, 161u8, 255u8, 235u8, 22u8, 192u8, 236u8, 153u8, 67u8, 80u8, - 210u8, + 159u8, 24u8, 1u8, 32u8, 244u8, 132u8, 159u8, 1u8, 193u8, 255u8, 17u8, + 102u8, 179u8, 6u8, 185u8, 222u8, 14u8, 51u8, 135u8, 45u8, 22u8, 212u8, + 45u8, 74u8, 141u8, 203u8, 191u8, 144u8, 195u8, 213u8, 95u8, 176u8, ], ) } - #[doc = "See [`Pallet::batch_all`]."] + #[doc = "Send a batch of dispatch calls and atomically execute them."] + #[doc = "The whole transaction will rollback and fail if any of the calls failed."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] pub fn batch_all( &self, calls: types::batch_all::Calls, @@ -16763,13 +18385,19 @@ pub mod api { "batch_all", types::BatchAll { calls }, [ - 61u8, 70u8, 75u8, 34u8, 128u8, 54u8, 146u8, 49u8, 207u8, 184u8, 143u8, - 45u8, 106u8, 74u8, 187u8, 49u8, 236u8, 184u8, 73u8, 134u8, 48u8, 157u8, - 214u8, 229u8, 131u8, 168u8, 86u8, 54u8, 193u8, 141u8, 99u8, 119u8, + 104u8, 176u8, 208u8, 172u8, 141u8, 36u8, 135u8, 208u8, 107u8, 23u8, + 53u8, 33u8, 214u8, 166u8, 89u8, 170u8, 236u8, 202u8, 52u8, 114u8, + 247u8, 170u8, 160u8, 235u8, 244u8, 254u8, 15u8, 53u8, 205u8, 213u8, + 164u8, 225u8, ], ) } - #[doc = "See [`Pallet::dispatch_as`]."] + #[doc = "Dispatches a function call with a provided origin."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn dispatch_as( &self, as_origin: types::dispatch_as::AsOrigin, @@ -16784,14 +18412,25 @@ pub mod api { call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 235u8, 229u8, 32u8, 93u8, 159u8, 163u8, 87u8, 10u8, 109u8, 88u8, 64u8, - 172u8, 102u8, 230u8, 117u8, 68u8, 177u8, 24u8, 48u8, 157u8, 77u8, - 110u8, 40u8, 186u8, 114u8, 14u8, 116u8, 208u8, 246u8, 14u8, 56u8, - 111u8, + 71u8, 210u8, 185u8, 47u8, 152u8, 60u8, 18u8, 22u8, 176u8, 79u8, 33u8, + 227u8, 181u8, 238u8, 207u8, 177u8, 252u8, 26u8, 137u8, 214u8, 117u8, + 60u8, 136u8, 98u8, 73u8, 13u8, 55u8, 87u8, 112u8, 139u8, 139u8, 44u8, ], ) } - #[doc = "See [`Pallet::force_batch`]."] + #[doc = "Send a batch of dispatch calls."] + #[doc = "Unlike `batch`, it allows errors and won't interrupt."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatch without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] pub fn force_batch( &self, calls: types::force_batch::Calls, @@ -16802,14 +18441,18 @@ pub mod api { "force_batch", types::ForceBatch { calls }, [ - 214u8, 240u8, 219u8, 153u8, 214u8, 181u8, 142u8, 224u8, 190u8, 86u8, - 225u8, 221u8, 211u8, 162u8, 32u8, 224u8, 8u8, 130u8, 242u8, 167u8, - 190u8, 123u8, 230u8, 44u8, 222u8, 177u8, 73u8, 154u8, 177u8, 226u8, - 112u8, 157u8, + 80u8, 196u8, 125u8, 70u8, 95u8, 161u8, 1u8, 89u8, 1u8, 85u8, 82u8, + 94u8, 224u8, 6u8, 144u8, 16u8, 190u8, 198u8, 84u8, 236u8, 26u8, 127u8, + 133u8, 250u8, 51u8, 10u8, 54u8, 112u8, 11u8, 211u8, 45u8, 180u8, ], ) } - #[doc = "See [`Pallet::with_weight`]."] + #[doc = "Dispatch a function call with a specified weight."] + #[doc = ""] + #[doc = "This function does not check the weight of the call, and instead allows the"] + #[doc = "Root origin to specify the weight of the call."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] pub fn with_weight( &self, call: types::with_weight::Call, @@ -16824,10 +18467,9 @@ pub mod api { weight, }, [ - 73u8, 59u8, 91u8, 218u8, 154u8, 105u8, 247u8, 29u8, 131u8, 199u8, - 149u8, 245u8, 124u8, 16u8, 104u8, 150u8, 160u8, 196u8, 10u8, 26u8, - 205u8, 150u8, 76u8, 102u8, 246u8, 83u8, 131u8, 66u8, 235u8, 215u8, - 203u8, 214u8, + 242u8, 10u8, 191u8, 99u8, 88u8, 10u8, 71u8, 194u8, 134u8, 157u8, 152u8, + 150u8, 26u8, 115u8, 240u8, 126u8, 104u8, 59u8, 168u8, 37u8, 140u8, + 233u8, 248u8, 51u8, 13u8, 15u8, 87u8, 145u8, 59u8, 9u8, 158u8, 220u8, ], ) } @@ -17007,7 +18649,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::add_registrar`]."] + #[doc = "Add a registrar to the system."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `T::RegistrarOrigin`."] + #[doc = ""] + #[doc = "- `account`: the account of the registrar."] + #[doc = ""] + #[doc = "Emits `RegistrarAdded` if successful."] pub struct AddRegistrar { pub account: add_registrar::Account, } @@ -17036,13 +18684,22 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_identity`]."] + #[doc = "Set an account's identity information and reserve the appropriate deposit."] + #[doc = ""] + #[doc = "If the account already has identity information, the deposit is taken as part payment"] + #[doc = "for the new deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `info`: The identity information."] + #[doc = ""] + #[doc = "Emits `IdentitySet` if successful."] pub struct SetIdentity { pub info: ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod set_identity { use super::runtime_types; - pub type Info = runtime_types::pallet_identity::types::IdentityInfo; + pub type Info = runtime_types::pallet_identity::legacy::IdentityInfo; } impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetIdentity { const PALLET: &'static str = "Identity"; @@ -17062,7 +18719,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_subs`]."] + #[doc = "Set the sub-accounts of the sender."] + #[doc = ""] + #[doc = "Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned"] + #[doc = "and an amount `SubAccountDeposit` will be reserved for each item in `subs`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "identity."] + #[doc = ""] + #[doc = "- `subs`: The identity's (new) sub-accounts."] pub struct SetSubs { pub subs: set_subs::Subs, } @@ -17091,7 +18756,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::clear_identity`]."] + #[doc = "Clear an account's identity info and all sub-accounts and return all deposits."] + #[doc = ""] + #[doc = "Payment: All reserved balances on the account are returned."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "identity."] + #[doc = ""] + #[doc = "Emits `IdentityCleared` if successful."] pub struct ClearIdentity; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ClearIdentity { const PALLET: &'static str = "Identity"; @@ -17111,7 +18783,22 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::request_judgement`]."] + #[doc = "Request a judgement from a registrar."] + #[doc = ""] + #[doc = "Payment: At most `max_fee` will be reserved for payment to the registrar if judgement"] + #[doc = "given."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] + #[doc = "registered identity."] + #[doc = ""] + #[doc = "- `reg_index`: The index of the registrar whose judgement is requested."] + #[doc = "- `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:"] + #[doc = ""] + #[doc = "```nocompile"] + #[doc = "Self::registrars().get(reg_index).unwrap().fee"] + #[doc = "```"] + #[doc = ""] + #[doc = "Emits `JudgementRequested` if successful."] pub struct RequestJudgement { #[codec(compact)] pub reg_index: request_judgement::RegIndex, @@ -17141,7 +18828,16 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::cancel_request`]."] + #[doc = "Cancel a previous request."] + #[doc = ""] + #[doc = "Payment: A previously reserved deposit is returned on success."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] + #[doc = "registered identity."] + #[doc = ""] + #[doc = "- `reg_index`: The index of the registrar whose judgement is no longer requested."] + #[doc = ""] + #[doc = "Emits `JudgementUnrequested` if successful."] pub struct CancelRequest { pub reg_index: cancel_request::RegIndex, } @@ -17167,7 +18863,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_fee`]."] + #[doc = "Set the fee required for a judgement to be requested from a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `fee`: the new fee."] pub struct SetFee { #[codec(compact)] pub index: set_fee::Index, @@ -17197,7 +18899,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_account_id`]."] + #[doc = "Change the account associated with a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `new`: the new account ID."] pub struct SetAccountId { #[codec(compact)] pub index: set_account_id::Index, @@ -17229,7 +18937,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_fields`]."] + #[doc = "Set the field information for a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `fields`: the fields that the registrar concerns themselves with."] pub struct SetFields { #[codec(compact)] pub index: set_fields::Index, @@ -17238,9 +18952,7 @@ pub mod api { pub mod set_fields { use super::runtime_types; pub type Index = ::core::primitive::u32; - pub type Fields = runtime_types::pallet_identity::types::BitFlags< - runtime_types::pallet_identity::types::IdentityField, - >; + pub type Fields = ::core::primitive::u64; } impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetFields { const PALLET: &'static str = "Identity"; @@ -17260,7 +18972,21 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::provide_judgement`]."] + #[doc = "Provide a judgement for an account's identity."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `reg_index`."] + #[doc = ""] + #[doc = "- `reg_index`: the index of the registrar whose judgement is being made."] + #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] + #[doc = " with a registered identity."] + #[doc = "- `judgement`: the judgement of the registrar of index `reg_index` about `target`."] + #[doc = "- `identity`: The hash of the [`IdentityInformationProvider`] for that the judgement is"] + #[doc = " provided."] + #[doc = ""] + #[doc = "Note: Judgements do not apply to a username."] + #[doc = ""] + #[doc = "Emits `JudgementGiven` if successful."] pub struct ProvideJudgement { #[codec(compact)] pub reg_index: provide_judgement::RegIndex, @@ -17297,7 +19023,18 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::kill_identity`]."] + #[doc = "Remove an account's identity and sub-account information and slash the deposits."] + #[doc = ""] + #[doc = "Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by"] + #[doc = "`Slash`. Verification request deposits are not returned; they should be cancelled"] + #[doc = "manually using `cancel_request`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + #[doc = ""] + #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] + #[doc = " with a registered identity."] + #[doc = ""] + #[doc = "Emits `IdentityKilled` if successful."] pub struct KillIdentity { pub target: kill_identity::Target, } @@ -17326,7 +19063,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::add_sub`]."] + #[doc = "Add the given account to the sender's subs."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] pub struct AddSub { pub sub: add_sub::Sub, pub data: add_sub::Data, @@ -17357,7 +19100,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::rename_sub`]."] + #[doc = "Alter the associated name of the given sub-account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] pub struct RenameSub { pub sub: rename_sub::Sub, pub data: rename_sub::Data, @@ -17388,7 +19134,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::remove_sub`]."] + #[doc = "Remove the given account from the sender's subs."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] pub struct RemoveSub { pub sub: remove_sub::Sub, } @@ -17417,16 +19169,260 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::quit_sub`]."] + #[doc = "Remove the sender as a sub-account."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender (*not* the original depositor)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "super-identity."] + #[doc = ""] + #[doc = "NOTE: This should not normally be used, but is provided in the case that the non-"] + #[doc = "controller of an account is maliciously registered as a sub-account."] pub struct QuitSub; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for QuitSub { const PALLET: &'static str = "Identity"; const CALL: &'static str = "quit_sub"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Add an `AccountId` with permission to grant usernames with a given `suffix` appended."] + #[doc = ""] + #[doc = "The authority can grant up to `allocation` usernames. To top up their allocation, they"] + #[doc = "should just issue (or request via governance) a new `add_username_authority` call."] + pub struct AddUsernameAuthority { + pub authority: add_username_authority::Authority, + pub suffix: add_username_authority::Suffix, + pub allocation: add_username_authority::Allocation, + } + pub mod add_username_authority { + use super::runtime_types; + pub type Authority = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; + pub type Suffix = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; + pub type Allocation = ::core::primitive::u32; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AddUsernameAuthority { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "add_username_authority"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Remove `authority` from the username authorities."] + pub struct RemoveUsernameAuthority { + pub authority: remove_username_authority::Authority, + } + pub mod remove_username_authority { + use super::runtime_types; + pub type Authority = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveUsernameAuthority { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "remove_username_authority"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Set the username for `who`. Must be called by a username authority."] + #[doc = ""] + #[doc = "The authority must have an `allocation`. Users can either pre-sign their usernames or"] + #[doc = "accept them later."] + #[doc = ""] + #[doc = "Usernames must:"] + #[doc = " - Only contain lowercase ASCII characters or digits."] + #[doc = " - When combined with the suffix of the issuing authority be _less than_ the"] + #[doc = " `MaxUsernameLength`."] + pub struct SetUsernameFor { + pub who: set_username_for::Who, + pub username: set_username_for::Username, + pub signature: set_username_for::Signature, + } + pub mod set_username_for { + use super::runtime_types; + pub type Who = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; + pub type Username = + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>; + pub type Signature = + ::core::option::Option; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetUsernameFor { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "set_username_for"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Accept a given username that an `authority` granted. The call must include the full"] + #[doc = "username, as in `username.suffix`."] + pub struct AcceptUsername { + pub username: accept_username::Username, + } + pub mod accept_username { + use super::runtime_types; + pub type Username = + runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AcceptUsername { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "accept_username"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Remove an expired username approval. The username was approved by an authority but never"] + #[doc = "accepted by the user and must now be beyond its expiration. The call must include the"] + #[doc = "full username, as in `username.suffix`."] + pub struct RemoveExpiredApproval { + pub username: remove_expired_approval::Username, + } + pub mod remove_expired_approval { + use super::runtime_types; + pub type Username = + runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveExpiredApproval { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "remove_expired_approval"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Set a given username as the primary. The username should include the suffix."] + pub struct SetPrimaryUsername { + pub username: set_primary_username::Username, + } + pub mod set_primary_username { + use super::runtime_types; + pub type Username = + runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetPrimaryUsername { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "set_primary_username"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Remove a username that corresponds to an account with no identity. Exists when a user"] + #[doc = "gets a username but then calls `clear_identity`."] + pub struct RemoveDanglingUsername { + pub username: remove_dangling_username::Username, + } + pub mod remove_dangling_username { + use super::runtime_types; + pub type Username = + runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveDanglingUsername { + const PALLET: &'static str = "Identity"; + const CALL: &'static str = "remove_dangling_username"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::add_registrar`]."] + #[doc = "Add a registrar to the system."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `T::RegistrarOrigin`."] + #[doc = ""] + #[doc = "- `account`: the account of the registrar."] + #[doc = ""] + #[doc = "Emits `RegistrarAdded` if successful."] pub fn add_registrar( &self, account: types::add_registrar::Account, @@ -17443,7 +19439,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_identity`]."] + #[doc = "Set an account's identity information and reserve the appropriate deposit."] + #[doc = ""] + #[doc = "If the account already has identity information, the deposit is taken as part payment"] + #[doc = "for the new deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `info`: The identity information."] + #[doc = ""] + #[doc = "Emits `IdentitySet` if successful."] pub fn set_identity( &self, info: types::set_identity::Info, @@ -17463,7 +19468,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_subs`]."] + #[doc = "Set the sub-accounts of the sender."] + #[doc = ""] + #[doc = "Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned"] + #[doc = "and an amount `SubAccountDeposit` will be reserved for each item in `subs`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "identity."] + #[doc = ""] + #[doc = "- `subs`: The identity's (new) sub-accounts."] pub fn set_subs( &self, subs: types::set_subs::Subs, @@ -17481,7 +19494,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::clear_identity`]."] + #[doc = "Clear an account's identity info and all sub-accounts and return all deposits."] + #[doc = ""] + #[doc = "Payment: All reserved balances on the account are returned."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "identity."] + #[doc = ""] + #[doc = "Emits `IdentityCleared` if successful."] pub fn clear_identity( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -17498,7 +19518,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::request_judgement`]."] + #[doc = "Request a judgement from a registrar."] + #[doc = ""] + #[doc = "Payment: At most `max_fee` will be reserved for payment to the registrar if judgement"] + #[doc = "given."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] + #[doc = "registered identity."] + #[doc = ""] + #[doc = "- `reg_index`: The index of the registrar whose judgement is requested."] + #[doc = "- `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:"] + #[doc = ""] + #[doc = "```nocompile"] + #[doc = "Self::registrars().get(reg_index).unwrap().fee"] + #[doc = "```"] + #[doc = ""] + #[doc = "Emits `JudgementRequested` if successful."] pub fn request_judgement( &self, reg_index: types::request_judgement::RegIndex, @@ -17516,7 +19551,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel_request`]."] + #[doc = "Cancel a previous request."] + #[doc = ""] + #[doc = "Payment: A previously reserved deposit is returned on success."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] + #[doc = "registered identity."] + #[doc = ""] + #[doc = "- `reg_index`: The index of the registrar whose judgement is no longer requested."] + #[doc = ""] + #[doc = "Emits `JudgementUnrequested` if successful."] pub fn cancel_request( &self, reg_index: types::cancel_request::RegIndex, @@ -17534,7 +19578,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_fee`]."] + #[doc = "Set the fee required for a judgement to be requested from a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `fee`: the new fee."] pub fn set_fee( &self, index: types::set_fee::Index, @@ -17553,7 +19603,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_account_id`]."] + #[doc = "Change the account associated with a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `new`: the new account ID."] pub fn set_account_id( &self, index: types::set_account_id::Index, @@ -17572,7 +19628,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_fields`]."] + #[doc = "Set the field information for a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `fields`: the fields that the registrar concerns themselves with."] pub fn set_fields( &self, index: types::set_fields::Index, @@ -17584,13 +19646,28 @@ pub mod api { "set_fields", types::SetFields { index, fields }, [ - 25u8, 129u8, 119u8, 232u8, 18u8, 32u8, 77u8, 23u8, 185u8, 56u8, 32u8, - 199u8, 74u8, 174u8, 104u8, 203u8, 171u8, 253u8, 19u8, 225u8, 101u8, - 239u8, 14u8, 242u8, 157u8, 51u8, 203u8, 74u8, 1u8, 65u8, 165u8, 205u8, + 75u8, 38u8, 58u8, 93u8, 92u8, 164u8, 146u8, 146u8, 183u8, 245u8, 135u8, + 235u8, 12u8, 148u8, 37u8, 193u8, 58u8, 66u8, 173u8, 223u8, 166u8, + 169u8, 54u8, 159u8, 141u8, 36u8, 25u8, 231u8, 190u8, 211u8, 254u8, + 38u8, ], ) } - #[doc = "See [`Pallet::provide_judgement`]."] + #[doc = "Provide a judgement for an account's identity."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `reg_index`."] + #[doc = ""] + #[doc = "- `reg_index`: the index of the registrar whose judgement is being made."] + #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] + #[doc = " with a registered identity."] + #[doc = "- `judgement`: the judgement of the registrar of index `reg_index` about `target`."] + #[doc = "- `identity`: The hash of the [`IdentityInformationProvider`] for that the judgement is"] + #[doc = " provided."] + #[doc = ""] + #[doc = "Note: Judgements do not apply to a username."] + #[doc = ""] + #[doc = "Emits `JudgementGiven` if successful."] pub fn provide_judgement( &self, reg_index: types::provide_judgement::RegIndex, @@ -17616,7 +19693,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kill_identity`]."] + #[doc = "Remove an account's identity and sub-account information and slash the deposits."] + #[doc = ""] + #[doc = "Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by"] + #[doc = "`Slash`. Verification request deposits are not returned; they should be cancelled"] + #[doc = "manually using `cancel_request`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + #[doc = ""] + #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] + #[doc = " with a registered identity."] + #[doc = ""] + #[doc = "Emits `IdentityKilled` if successful."] pub fn kill_identity( &self, target: types::kill_identity::Target, @@ -17634,7 +19722,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::add_sub`]."] + #[doc = "Add the given account to the sender's subs."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] pub fn add_sub( &self, sub: types::add_sub::Sub, @@ -17652,7 +19746,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::rename_sub`]."] + #[doc = "Alter the associated name of the given sub-account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] pub fn rename_sub( &self, sub: types::rename_sub::Sub, @@ -17671,7 +19768,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_sub`]."] + #[doc = "Remove the given account from the sender's subs."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] pub fn remove_sub( &self, sub: types::remove_sub::Sub, @@ -17688,7 +19791,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::quit_sub`]."] + #[doc = "Remove the sender as a sub-account."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender (*not* the original depositor)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "super-identity."] + #[doc = ""] + #[doc = "NOTE: This should not normally be used, but is provided in the case that the non-"] + #[doc = "controller of an account is maliciously registered as a sub-account."] pub fn quit_sub( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -17705,6 +19817,156 @@ pub mod api { ], ) } + #[doc = "Add an `AccountId` with permission to grant usernames with a given `suffix` appended."] + #[doc = ""] + #[doc = "The authority can grant up to `allocation` usernames. To top up their allocation, they"] + #[doc = "should just issue (or request via governance) a new `add_username_authority` call."] + pub fn add_username_authority( + &self, + authority: types::add_username_authority::Authority, + suffix: types::add_username_authority::Suffix, + allocation: types::add_username_authority::Allocation, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Identity", + "add_username_authority", + types::AddUsernameAuthority { + authority, + suffix, + allocation, + }, + [ + 225u8, 197u8, 122u8, 209u8, 206u8, 241u8, 247u8, 232u8, 196u8, 110u8, + 75u8, 157u8, 44u8, 181u8, 35u8, 75u8, 182u8, 219u8, 100u8, 64u8, 208u8, + 112u8, 120u8, 229u8, 211u8, 69u8, 193u8, 214u8, 195u8, 98u8, 10u8, + 25u8, + ], + ) + } + #[doc = "Remove `authority` from the username authorities."] + pub fn remove_username_authority( + &self, + authority: types::remove_username_authority::Authority, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload< + types::RemoveUsernameAuthority, + > { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Identity", + "remove_username_authority", + types::RemoveUsernameAuthority { authority }, + [ + 4u8, 182u8, 89u8, 1u8, 183u8, 15u8, 215u8, 48u8, 165u8, 97u8, 252u8, + 54u8, 223u8, 18u8, 211u8, 227u8, 226u8, 230u8, 185u8, 71u8, 202u8, + 95u8, 191u8, 6u8, 118u8, 144u8, 92u8, 98u8, 64u8, 243u8, 2u8, 137u8, + ], + ) + } + #[doc = "Set the username for `who`. Must be called by a username authority."] + #[doc = ""] + #[doc = "The authority must have an `allocation`. Users can either pre-sign their usernames or"] + #[doc = "accept them later."] + #[doc = ""] + #[doc = "Usernames must:"] + #[doc = " - Only contain lowercase ASCII characters or digits."] + #[doc = " - When combined with the suffix of the issuing authority be _less than_ the"] + #[doc = " `MaxUsernameLength`."] + pub fn set_username_for( + &self, + who: types::set_username_for::Who, + username: types::set_username_for::Username, + signature: types::set_username_for::Signature, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Identity", + "set_username_for", + types::SetUsernameFor { + who, + username, + signature, + }, + [ + 208u8, 124u8, 47u8, 129u8, 27u8, 182u8, 185u8, 76u8, 173u8, 187u8, + 193u8, 4u8, 252u8, 195u8, 204u8, 101u8, 233u8, 33u8, 62u8, 6u8, 50u8, + 20u8, 224u8, 26u8, 125u8, 192u8, 220u8, 56u8, 255u8, 249u8, 85u8, 50u8, + ], + ) + } + #[doc = "Accept a given username that an `authority` granted. The call must include the full"] + #[doc = "username, as in `username.suffix`."] + pub fn accept_username( + &self, + username: types::accept_username::Username, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Identity", + "accept_username", + types::AcceptUsername { username }, + [ + 247u8, 162u8, 83u8, 250u8, 214u8, 7u8, 12u8, 253u8, 227u8, 4u8, 95u8, + 71u8, 150u8, 218u8, 216u8, 86u8, 137u8, 37u8, 114u8, 188u8, 18u8, + 232u8, 229u8, 179u8, 172u8, 251u8, 70u8, 29u8, 18u8, 86u8, 33u8, 129u8, + ], + ) + } + #[doc = "Remove an expired username approval. The username was approved by an authority but never"] + #[doc = "accepted by the user and must now be beyond its expiration. The call must include the"] + #[doc = "full username, as in `username.suffix`."] + pub fn remove_expired_approval( + &self, + username: types::remove_expired_approval::Username, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload< + types::RemoveExpiredApproval, + > { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Identity", + "remove_expired_approval", + types::RemoveExpiredApproval { username }, + [ + 159u8, 171u8, 27u8, 97u8, 224u8, 171u8, 14u8, 89u8, 65u8, 213u8, 208u8, + 67u8, 118u8, 146u8, 0u8, 131u8, 82u8, 186u8, 142u8, 52u8, 173u8, 90u8, + 104u8, 107u8, 114u8, 202u8, 123u8, 222u8, 49u8, 53u8, 59u8, 61u8, + ], + ) + } + #[doc = "Set a given username as the primary. The username should include the suffix."] + pub fn set_primary_username( + &self, + username: types::set_primary_username::Username, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Identity", + "set_primary_username", + types::SetPrimaryUsername { username }, + [ + 3u8, 25u8, 56u8, 26u8, 108u8, 165u8, 84u8, 231u8, 16u8, 4u8, 6u8, + 232u8, 141u8, 7u8, 254u8, 50u8, 26u8, 230u8, 66u8, 245u8, 255u8, 101u8, + 183u8, 234u8, 197u8, 186u8, 132u8, 197u8, 251u8, 84u8, 212u8, 162u8, + ], + ) + } + #[doc = "Remove a username that corresponds to an account with no identity. Exists when a user"] + #[doc = "gets a username but then calls `clear_identity`."] + pub fn remove_dangling_username( + &self, + username: types::remove_dangling_username::Username, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload< + types::RemoveDanglingUsername, + > { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Identity", + "remove_dangling_username", + types::RemoveDanglingUsername { username }, + [ + 220u8, 67u8, 52u8, 223u8, 169u8, 81u8, 202u8, 74u8, 199u8, 169u8, 89u8, + 60u8, 57u8, 153u8, 240u8, 105u8, 188u8, 222u8, 250u8, 247u8, 91u8, + 137u8, 37u8, 212u8, 10u8, 51u8, 9u8, 202u8, 165u8, 155u8, 222u8, 29u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -17954,6 +20216,179 @@ pub mod api { const PALLET: &'static str = "Identity"; const EVENT: &'static str = "SubIdentityRevoked"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "A username authority was added."] + pub struct AuthorityAdded { + pub authority: authority_added::Authority, + } + pub mod authority_added { + use super::runtime_types; + pub type Authority = ::subxt::ext::subxt_core::utils::AccountId32; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for AuthorityAdded { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "AuthorityAdded"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "A username authority was removed."] + pub struct AuthorityRemoved { + pub authority: authority_removed::Authority, + } + pub mod authority_removed { + use super::runtime_types; + pub type Authority = ::subxt::ext::subxt_core::utils::AccountId32; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for AuthorityRemoved { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "AuthorityRemoved"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "A username was set for `who`."] + pub struct UsernameSet { + pub who: username_set::Who, + pub username: username_set::Username, + } + pub mod username_set { + use super::runtime_types; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for UsernameSet { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "UsernameSet"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "A username was queued, but `who` must accept it prior to `expiration`."] + pub struct UsernameQueued { + pub who: username_queued::Who, + pub username: username_queued::Username, + pub expiration: username_queued::Expiration, + } + pub mod username_queued { + use super::runtime_types; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >; + pub type Expiration = ::core::primitive::u32; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for UsernameQueued { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "UsernameQueued"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "A queued username passed its expiration without being claimed and was removed."] + pub struct PreapprovalExpired { + pub whose: preapproval_expired::Whose, + } + pub mod preapproval_expired { + use super::runtime_types; + pub type Whose = ::subxt::ext::subxt_core::utils::AccountId32; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for PreapprovalExpired { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "PreapprovalExpired"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "A username was set as a primary and can be looked up from `who`."] + pub struct PrimaryUsernameSet { + pub who: primary_username_set::Who, + pub username: primary_username_set::Username, + } + pub mod primary_username_set { + use super::runtime_types; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for PrimaryUsernameSet { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "PrimaryUsernameSet"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "A dangling username (as in, a username corresponding to an account that has removed its"] + #[doc = "identity) has been removed."] + pub struct DanglingUsernameRemoved { + pub who: dangling_username_removed::Who, + pub username: dangling_username_removed::Username, + } + pub mod dangling_username_removed { + use super::runtime_types; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Username = runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for DanglingUsernameRemoved { + const PALLET: &'static str = "Identity"; + const EVENT: &'static str = "DanglingUsernameRemoved"; + } } pub mod storage { use super::runtime_types; @@ -17961,9 +20396,17 @@ pub mod api { use super::runtime_types; pub mod identity_of { use super::runtime_types; - pub type IdentityOf = runtime_types::pallet_identity::types::Registration< - ::core::primitive::u128, - >; + pub type IdentityOf = ( + runtime_types::pallet_identity::types::Registration< + ::core::primitive::u128, + runtime_types::pallet_identity::legacy::IdentityInfo, + >, + ::core::option::Option< + runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >, + >, + ); pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } pub mod super_of { @@ -17992,14 +20435,43 @@ pub mod api { runtime_types::pallet_identity::types::RegistrarInfo< ::core::primitive::u128, ::subxt::ext::subxt_core::utils::AccountId32, + ::core::primitive::u64, >, >, >; } + pub mod username_authorities { + use super::runtime_types; + pub type UsernameAuthorities = + runtime_types::pallet_identity::types::AuthorityProperties< + runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >, + >; + pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; + } + pub mod account_of_username { + use super::runtime_types; + pub type AccountOfUsername = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Param0 = runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >; + } + pub mod pending_usernames { + use super::runtime_types; + pub type PendingUsernames = ( + ::subxt::ext::subxt_core::utils::AccountId32, + ::core::primitive::u32, + ); + pub type Param0 = runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >; + } } pub struct StorageApi; impl StorageApi { - #[doc = " Information that is pertinent to identify the entity behind an account."] + #[doc = " Information that is pertinent to identify the entity behind an account. First item is the"] + #[doc = " registration, second is the account's primary username."] #[doc = ""] #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] pub fn identity_of_iter( @@ -18016,13 +20488,14 @@ pub mod api { "IdentityOf", (), [ - 112u8, 2u8, 209u8, 123u8, 138u8, 171u8, 80u8, 243u8, 226u8, 88u8, 81u8, - 49u8, 59u8, 172u8, 88u8, 180u8, 255u8, 119u8, 57u8, 16u8, 169u8, 149u8, - 77u8, 239u8, 73u8, 182u8, 28u8, 112u8, 150u8, 110u8, 65u8, 139u8, + 0u8, 73u8, 213u8, 52u8, 49u8, 235u8, 238u8, 43u8, 119u8, 12u8, 35u8, + 162u8, 230u8, 24u8, 246u8, 200u8, 44u8, 254u8, 13u8, 84u8, 10u8, 27u8, + 159u8, 6u8, 176u8, 125u8, 24u8, 212u8, 250u8, 154u8, 181u8, 12u8, ], ) } - #[doc = " Information that is pertinent to identify the entity behind an account."] + #[doc = " Information that is pertinent to identify the entity behind an account. First item is the"] + #[doc = " registration, second is the account's primary username."] #[doc = ""] #[doc = " TWOX-NOTE: OK ― `AccountId` is a secure hash."] pub fn identity_of( @@ -18044,9 +20517,9 @@ pub mod api { _0.borrow(), ), [ - 112u8, 2u8, 209u8, 123u8, 138u8, 171u8, 80u8, 243u8, 226u8, 88u8, 81u8, - 49u8, 59u8, 172u8, 88u8, 180u8, 255u8, 119u8, 57u8, 16u8, 169u8, 149u8, - 77u8, 239u8, 73u8, 182u8, 28u8, 112u8, 150u8, 110u8, 65u8, 139u8, + 0u8, 73u8, 213u8, 52u8, 49u8, 235u8, 238u8, 43u8, 119u8, 12u8, 35u8, + 162u8, 230u8, 24u8, 246u8, 200u8, 44u8, 254u8, 13u8, 84u8, 10u8, 27u8, + 159u8, 6u8, 176u8, 125u8, 24u8, 212u8, 250u8, 154u8, 181u8, 12u8, ], ) } @@ -18174,10 +20647,173 @@ pub mod api { "Registrars", (), [ - 207u8, 253u8, 229u8, 237u8, 228u8, 85u8, 173u8, 74u8, 164u8, 67u8, - 144u8, 144u8, 5u8, 242u8, 84u8, 187u8, 110u8, 181u8, 2u8, 162u8, 239u8, - 212u8, 72u8, 233u8, 160u8, 196u8, 121u8, 218u8, 100u8, 0u8, 219u8, - 181u8, + 167u8, 99u8, 159u8, 117u8, 103u8, 243u8, 208u8, 113u8, 57u8, 225u8, + 27u8, 25u8, 188u8, 120u8, 15u8, 40u8, 134u8, 169u8, 108u8, 134u8, 83u8, + 184u8, 223u8, 170u8, 194u8, 19u8, 168u8, 43u8, 119u8, 76u8, 94u8, + 154u8, + ], + ) + } + #[doc = " A map of the accounts who are authorized to grant usernames."] + pub fn username_authorities_iter( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::username_authorities::UsernameAuthorities, + (), + (), + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Identity", + "UsernameAuthorities", + (), + [ + 89u8, 102u8, 60u8, 184u8, 127u8, 244u8, 3u8, 61u8, 209u8, 78u8, 178u8, + 44u8, 159u8, 27u8, 7u8, 0u8, 22u8, 116u8, 42u8, 240u8, 130u8, 93u8, + 214u8, 182u8, 79u8, 222u8, 19u8, 20u8, 34u8, 198u8, 164u8, 146u8, + ], + ) + } + #[doc = " A map of the accounts who are authorized to grant usernames."] + pub fn username_authorities( + &self, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::username_authorities::Param0, + >, + types::username_authorities::UsernameAuthorities, + ::subxt::ext::subxt_core::utils::Yes, + (), + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Identity", + "UsernameAuthorities", + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + [ + 89u8, 102u8, 60u8, 184u8, 127u8, 244u8, 3u8, 61u8, 209u8, 78u8, 178u8, + 44u8, 159u8, 27u8, 7u8, 0u8, 22u8, 116u8, 42u8, 240u8, 130u8, 93u8, + 214u8, 182u8, 79u8, 222u8, 19u8, 20u8, 34u8, 198u8, 164u8, 146u8, + ], + ) + } + #[doc = " Reverse lookup from `username` to the `AccountId` that has registered it. The value should"] + #[doc = " be a key in the `IdentityOf` map, but it may not if the user has cleared their identity."] + #[doc = ""] + #[doc = " Multiple usernames may map to the same `AccountId`, but `IdentityOf` will only map to one"] + #[doc = " primary username."] + pub fn account_of_username_iter( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::account_of_username::AccountOfUsername, + (), + (), + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Identity", + "AccountOfUsername", + (), + [ + 131u8, 96u8, 207u8, 217u8, 223u8, 54u8, 51u8, 156u8, 8u8, 238u8, 134u8, + 57u8, 42u8, 110u8, 180u8, 107u8, 30u8, 109u8, 162u8, 110u8, 178u8, + 127u8, 151u8, 163u8, 89u8, 127u8, 181u8, 213u8, 74u8, 129u8, 207u8, + 15u8, + ], + ) + } + #[doc = " Reverse lookup from `username` to the `AccountId` that has registered it. The value should"] + #[doc = " be a key in the `IdentityOf` map, but it may not if the user has cleared their identity."] + #[doc = ""] + #[doc = " Multiple usernames may map to the same `AccountId`, but `IdentityOf` will only map to one"] + #[doc = " primary username."] + pub fn account_of_username( + &self, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::account_of_username::Param0, + >, + types::account_of_username::AccountOfUsername, + ::subxt::ext::subxt_core::utils::Yes, + (), + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Identity", + "AccountOfUsername", + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + [ + 131u8, 96u8, 207u8, 217u8, 223u8, 54u8, 51u8, 156u8, 8u8, 238u8, 134u8, + 57u8, 42u8, 110u8, 180u8, 107u8, 30u8, 109u8, 162u8, 110u8, 178u8, + 127u8, 151u8, 163u8, 89u8, 127u8, 181u8, 213u8, 74u8, 129u8, 207u8, + 15u8, + ], + ) + } + #[doc = " Usernames that an authority has granted, but that the account controller has not confirmed"] + #[doc = " that they want it. Used primarily in cases where the `AccountId` cannot provide a signature"] + #[doc = " because they are a pure proxy, multisig, etc. In order to confirm it, they should call"] + #[doc = " [`Call::accept_username`]."] + #[doc = ""] + #[doc = " First tuple item is the account and second is the acceptance deadline."] + pub fn pending_usernames_iter( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::pending_usernames::PendingUsernames, + (), + (), + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Identity", + "PendingUsernames", + (), + [ + 237u8, 213u8, 92u8, 249u8, 11u8, 169u8, 104u8, 7u8, 201u8, 133u8, + 164u8, 64u8, 191u8, 172u8, 169u8, 229u8, 206u8, 105u8, 190u8, 113u8, + 21u8, 13u8, 70u8, 74u8, 140u8, 125u8, 123u8, 48u8, 183u8, 181u8, 170u8, + 147u8, + ], + ) + } + #[doc = " Usernames that an authority has granted, but that the account controller has not confirmed"] + #[doc = " that they want it. Used primarily in cases where the `AccountId` cannot provide a signature"] + #[doc = " because they are a pure proxy, multisig, etc. In order to confirm it, they should call"] + #[doc = " [`Call::accept_username`]."] + #[doc = ""] + #[doc = " First tuple item is the account and second is the acceptance deadline."] + pub fn pending_usernames( + &self, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::pending_usernames::Param0, + >, + types::pending_usernames::PendingUsernames, + ::subxt::ext::subxt_core::utils::Yes, + (), + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Identity", + "PendingUsernames", + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + [ + 237u8, 213u8, 92u8, 249u8, 11u8, 169u8, 104u8, 7u8, 201u8, 133u8, + 164u8, 64u8, 191u8, 172u8, 169u8, 229u8, 206u8, 105u8, 190u8, 113u8, + 21u8, 13u8, 70u8, 74u8, 140u8, 125u8, 123u8, 48u8, 183u8, 181u8, 170u8, + 147u8, ], ) } @@ -18187,7 +20823,7 @@ pub mod api { use super::runtime_types; pub struct ConstantsApi; impl ConstantsApi { - #[doc = " The amount held on deposit for a registered identity"] + #[doc = " The amount held on deposit for a registered identity."] pub fn basic_deposit( &self, ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< @@ -18203,15 +20839,15 @@ pub mod api { ], ) } - #[doc = " The amount held on deposit per additional field for a registered identity."] - pub fn field_deposit( + #[doc = " The amount held on deposit per encoded byte for a registered identity."] + pub fn byte_deposit( &self, ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< ::core::primitive::u128, > { ::subxt::ext::subxt_core::constants::address::StaticAddress::new_static( "Identity", - "FieldDeposit", + "ByteDeposit", [ 84u8, 157u8, 140u8, 4u8, 93u8, 57u8, 29u8, 133u8, 105u8, 200u8, 214u8, 27u8, 144u8, 208u8, 218u8, 160u8, 130u8, 109u8, 101u8, 54u8, 210u8, @@ -18254,25 +20890,7 @@ pub mod api { ], ) } - #[doc = " Maximum number of additional fields that may be stored in an ID. Needed to bound the I/O"] - #[doc = " required to access an identity, but can be pretty high."] - pub fn max_additional_fields( - &self, - ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< - ::core::primitive::u32, - > { - ::subxt::ext::subxt_core::constants::address::StaticAddress::new_static( - "Identity", - "MaxAdditionalFields", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } - #[doc = " Maxmimum number of registrars allowed in the system. Needed to bound the complexity"] + #[doc = " Maximum number of registrars allowed in the system. Needed to bound the complexity"] #[doc = " of, e.g., updating judgements."] pub fn max_registrars( &self, @@ -18290,6 +20908,57 @@ pub mod api { ], ) } + #[doc = " The number of blocks within which a username grant must be accepted."] + pub fn pending_username_expiration( + &self, + ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< + ::core::primitive::u32, + > { + ::subxt::ext::subxt_core::constants::address::StaticAddress::new_static( + "Identity", + "PendingUsernameExpiration", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum length of a suffix."] + pub fn max_suffix_length( + &self, + ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< + ::core::primitive::u32, + > { + ::subxt::ext::subxt_core::constants::address::StaticAddress::new_static( + "Identity", + "MaxSuffixLength", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum length of a username, including its suffix and any system-added delimiters."] + pub fn max_username_length( + &self, + ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< + ::core::primitive::u32, + > { + ::subxt::ext::subxt_core::constants::address::StaticAddress::new_static( + "Identity", + "MaxUsernameLength", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } } } } @@ -18320,7 +20989,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::bid`]."] + #[doc = "A user outside of the society can make a bid for entry."] + #[doc = ""] + #[doc = "Payment: The group's Candidate Deposit will be reserved for making a bid. It is returned"] + #[doc = "when the bid becomes a member, or if the bid calls `unbid`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `value`: A one time payment the bid would like to receive when joining the society."] pub struct Bid { pub value: bid::Value, } @@ -18346,7 +21023,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::unbid`]."] + #[doc = "A bidder can remove their bid for entry into society."] + #[doc = "By doing so, they will have their candidate deposit returned or"] + #[doc = "they will unvouch their voucher."] + #[doc = ""] + #[doc = "Payment: The bid deposit is unreserved if the user made a bid."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a bidder."] pub struct Unbid; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Unbid { const PALLET: &'static str = "Society"; @@ -18366,7 +21049,23 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::vouch`]."] + #[doc = "As a member, vouch for someone to join society by placing a bid on their behalf."] + #[doc = ""] + #[doc = "There is no deposit required to vouch for a new bid, but a member can only vouch for"] + #[doc = "one bid at a time. If the bid becomes a suspended candidate and ultimately rejected by"] + #[doc = "the suspension judgement origin, the member will be banned from vouching again."] + #[doc = ""] + #[doc = "As a vouching member, you can claim a tip if the candidate is accepted. This tip will"] + #[doc = "be paid as a portion of the reward the member will receive for joining the society."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who`: The user who you would like to vouch for."] + #[doc = "- `value`: The total reward to be paid between you and the candidate if they become"] + #[doc = "a member in the society."] + #[doc = "- `tip`: Your cut of the total `value` payout when the candidate is inducted into"] + #[doc = "the society. Tips larger than `value` will be saturated upon payout."] pub struct Vouch { pub who: vouch::Who, pub value: vouch::Value, @@ -18399,7 +21098,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::unvouch`]."] + #[doc = "As a vouching member, unvouch a bid. This only works while vouched user is"] + #[doc = "only a bidder (and not a candidate)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a vouching member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `pos`: Position in the `Bids` vector of the bid who should be unvouched."] pub struct Unvouch; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Unvouch { const PALLET: &'static str = "Society"; @@ -18419,7 +21124,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::vote`]."] + #[doc = "As a member, vote on a candidate."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `candidate`: The candidate that the member would like to bid on."] + #[doc = "- `approve`: A boolean which says if the candidate should be approved (`true`) or"] + #[doc = " rejected (`false`)."] pub struct Vote { pub candidate: vote::Candidate, pub approve: vote::Approve, @@ -18450,7 +21162,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::defender_vote`]."] + #[doc = "As a member, vote on the defender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `approve`: A boolean which says if the candidate should be"] + #[doc = "approved (`true`) or rejected (`false`)."] pub struct DefenderVote { pub approve: defender_vote::Approve, } @@ -18476,7 +21194,16 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::payout`]."] + #[doc = "Transfer the first matured payout for the sender and remove it from the records."] + #[doc = ""] + #[doc = "NOTE: This extrinsic needs to be called multiple times to claim multiple matured"] + #[doc = "payouts."] + #[doc = ""] + #[doc = "Payment: The member will receive a payment equal to their first matured"] + #[doc = "payout to their free balance."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member with"] + #[doc = "payouts remaining."] pub struct Payout; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Payout { const PALLET: &'static str = "Society"; @@ -18496,7 +21223,8 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::waive_repay`]."] + #[doc = "Repay the payment previously given to the member with the signed origin, remove any"] + #[doc = "pending payments, and elevate them from rank 0 to rank 1."] pub struct WaiveRepay { pub amount: waive_repay::Amount, } @@ -18522,7 +21250,23 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::found_society`]."] + #[doc = "Found the society."] + #[doc = ""] + #[doc = "This is done as a discrete action in order to allow for the"] + #[doc = "pallet to be included into a running chain and can only be done once."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be from the _FounderSetOrigin_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `founder` - The first member and head of the newly founded society."] + #[doc = "- `max_members` - The initial max number of members for the society."] + #[doc = "- `max_intake` - The maximum number of candidates per intake period."] + #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] + #[doc = " suspended and may only be reinstated by the founder."] + #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] + #[doc = "- `rules` - The rules of this society concerning membership."] + #[doc = ""] + #[doc = "Complexity: O(1)"] pub struct FoundSociety { pub founder: found_society::Founder, pub max_members: found_society::MaxMembers, @@ -18562,7 +21306,11 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::dissolve`]."] + #[doc = "Dissolve the society and remove all members."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed, and the signing account must be both"] + #[doc = "the `Founder` and the `Head`. This implies that it may only be done when there is one"] + #[doc = "member."] pub struct Dissolve; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Dissolve { const PALLET: &'static str = "Society"; @@ -18582,7 +21330,20 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::judge_suspended_member`]."] + #[doc = "Allow suspension judgement origin to make judgement on a suspended member."] + #[doc = ""] + #[doc = "If a suspended member is forgiven, we simply add them back as a member, not affecting"] + #[doc = "any of the existing storage items for that member."] + #[doc = ""] + #[doc = "If a suspended member is rejected, remove all associated storage items, including"] + #[doc = "their payouts, and remove any vouched bids they currently have."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed from the Founder."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who` - The suspended member to be judged."] + #[doc = "- `forgive` - A boolean representing whether the suspension judgement origin forgives"] + #[doc = " (`true`) or rejects (`false`) a suspended member."] pub struct JudgeSuspendedMember { pub who: judge_suspended_member::Who, pub forgive: judge_suspended_member::Forgive, @@ -18613,7 +21374,18 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_parameters`]."] + #[doc = "Change the maximum number of members in society and the maximum number of new candidates"] + #[doc = "in a single intake period."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed by the Founder."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `max_members` - The maximum number of members for the society. This must be no less"] + #[doc = " than the current number of members."] + #[doc = "- `max_intake` - The maximum number of candidates per intake period."] + #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] + #[doc = " suspended and may only be reinstated by the founder."] + #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] pub struct SetParameters { pub max_members: set_parameters::MaxMembers, pub max_intake: set_parameters::MaxIntake, @@ -18645,7 +21417,8 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::punish_skeptic`]."] + #[doc = "Punish the skeptic with a strike if they did not vote on a candidate. Callable by the"] + #[doc = "candidate."] pub struct PunishSkeptic; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for PunishSkeptic { const PALLET: &'static str = "Society"; @@ -18665,7 +21438,8 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::claim_membership`]."] + #[doc = "Transform an approved candidate into a member. Callable only by the"] + #[doc = "the candidate, and only after the period for voting has ended."] pub struct ClaimMembership; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ClaimMembership { const PALLET: &'static str = "Society"; @@ -18685,7 +21459,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::bestow_membership`]."] + #[doc = "Transform an approved candidate into a member. Callable only by the Signed origin of the"] + #[doc = "Founder, only after the period for voting has ended and only when the candidate is not"] + #[doc = "clearly rejected."] pub struct BestowMembership { pub candidate: bestow_membership::Candidate, } @@ -18711,7 +21487,11 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::kick_candidate`]."] + #[doc = "Remove the candidate's application from the society. Callable only by the Signed origin"] + #[doc = "of the Founder, only after the period for voting has ended, and only when they do not"] + #[doc = "have a clear approval."] + #[doc = ""] + #[doc = "Any bid deposit is lost and voucher is banned."] pub struct KickCandidate { pub candidate: kick_candidate::Candidate, } @@ -18737,7 +21517,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::resign_candidacy`]."] + #[doc = "Remove the candidate's application from the society. Callable only by the candidate."] + #[doc = ""] + #[doc = "Any bid deposit is lost and voucher is banned."] pub struct ResignCandidacy; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ResignCandidacy { const PALLET: &'static str = "Society"; @@ -18757,7 +21539,11 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::drop_candidate`]."] + #[doc = "Remove a `candidate`'s failed application from the society. Callable by any"] + #[doc = "signed origin but only at the end of the subsequent round and only for"] + #[doc = "a candidate with more rejections than approvals."] + #[doc = ""] + #[doc = "The bid deposit is lost and the voucher is banned."] pub struct DropCandidate { pub candidate: drop_candidate::Candidate, } @@ -18783,7 +21569,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::cleanup_candidacy`]."] + #[doc = "Remove up to `max` stale votes for the given `candidate`."] + #[doc = ""] + #[doc = "May be called by any Signed origin, but only after the candidate's candidacy is ended."] pub struct CleanupCandidacy { pub candidate: cleanup_candidacy::Candidate, pub max: cleanup_candidacy::Max, @@ -18811,7 +21599,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::cleanup_challenge`]."] + #[doc = "Remove up to `max` stale votes for the defender in the given `challenge_round`."] + #[doc = ""] + #[doc = "May be called by any Signed origin, but only after the challenge round is ended."] pub struct CleanupChallenge { pub challenge_round: cleanup_challenge::ChallengeRound, pub max: cleanup_challenge::Max, @@ -18828,7 +21618,15 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::bid`]."] + #[doc = "A user outside of the society can make a bid for entry."] + #[doc = ""] + #[doc = "Payment: The group's Candidate Deposit will be reserved for making a bid. It is returned"] + #[doc = "when the bid becomes a member, or if the bid calls `unbid`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `value`: A one time payment the bid would like to receive when joining the society."] pub fn bid( &self, value: types::bid::Value, @@ -18845,7 +21643,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unbid`]."] + #[doc = "A bidder can remove their bid for entry into society."] + #[doc = "By doing so, they will have their candidate deposit returned or"] + #[doc = "they will unvouch their voucher."] + #[doc = ""] + #[doc = "Payment: The bid deposit is unreserved if the user made a bid."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a bidder."] pub fn unbid( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -18862,7 +21666,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vouch`]."] + #[doc = "As a member, vouch for someone to join society by placing a bid on their behalf."] + #[doc = ""] + #[doc = "There is no deposit required to vouch for a new bid, but a member can only vouch for"] + #[doc = "one bid at a time. If the bid becomes a suspended candidate and ultimately rejected by"] + #[doc = "the suspension judgement origin, the member will be banned from vouching again."] + #[doc = ""] + #[doc = "As a vouching member, you can claim a tip if the candidate is accepted. This tip will"] + #[doc = "be paid as a portion of the reward the member will receive for joining the society."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who`: The user who you would like to vouch for."] + #[doc = "- `value`: The total reward to be paid between you and the candidate if they become"] + #[doc = "a member in the society."] + #[doc = "- `tip`: Your cut of the total `value` payout when the candidate is inducted into"] + #[doc = "the society. Tips larger than `value` will be saturated upon payout."] pub fn vouch( &self, who: types::vouch::Who, @@ -18881,7 +21701,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unvouch`]."] + #[doc = "As a vouching member, unvouch a bid. This only works while vouched user is"] + #[doc = "only a bidder (and not a candidate)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a vouching member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `pos`: Position in the `Bids` vector of the bid who should be unvouched."] pub fn unvouch( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -18898,7 +21724,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vote`]."] + #[doc = "As a member, vote on a candidate."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `candidate`: The candidate that the member would like to bid on."] + #[doc = "- `approve`: A boolean which says if the candidate should be approved (`true`) or"] + #[doc = " rejected (`false`)."] pub fn vote( &self, candidate: types::vote::Candidate, @@ -18916,7 +21749,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::defender_vote`]."] + #[doc = "As a member, vote on the defender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `approve`: A boolean which says if the candidate should be"] + #[doc = "approved (`true`) or rejected (`false`)."] pub fn defender_vote( &self, approve: types::defender_vote::Approve, @@ -18934,7 +21773,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::payout`]."] + #[doc = "Transfer the first matured payout for the sender and remove it from the records."] + #[doc = ""] + #[doc = "NOTE: This extrinsic needs to be called multiple times to claim multiple matured"] + #[doc = "payouts."] + #[doc = ""] + #[doc = "Payment: The member will receive a payment equal to their first matured"] + #[doc = "payout to their free balance."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member with"] + #[doc = "payouts remaining."] pub fn payout( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -18950,7 +21798,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::waive_repay`]."] + #[doc = "Repay the payment previously given to the member with the signed origin, remove any"] + #[doc = "pending payments, and elevate them from rank 0 to rank 1."] pub fn waive_repay( &self, amount: types::waive_repay::Amount, @@ -18967,7 +21816,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::found_society`]."] + #[doc = "Found the society."] + #[doc = ""] + #[doc = "This is done as a discrete action in order to allow for the"] + #[doc = "pallet to be included into a running chain and can only be done once."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be from the _FounderSetOrigin_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `founder` - The first member and head of the newly founded society."] + #[doc = "- `max_members` - The initial max number of members for the society."] + #[doc = "- `max_intake` - The maximum number of candidates per intake period."] + #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] + #[doc = " suspended and may only be reinstated by the founder."] + #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] + #[doc = "- `rules` - The rules of this society concerning membership."] + #[doc = ""] + #[doc = "Complexity: O(1)"] pub fn found_society( &self, founder: types::found_society::Founder, @@ -18997,7 +21862,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::dissolve`]."] + #[doc = "Dissolve the society and remove all members."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed, and the signing account must be both"] + #[doc = "the `Founder` and the `Head`. This implies that it may only be done when there is one"] + #[doc = "member."] pub fn dissolve( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -19014,7 +21883,20 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::judge_suspended_member`]."] + #[doc = "Allow suspension judgement origin to make judgement on a suspended member."] + #[doc = ""] + #[doc = "If a suspended member is forgiven, we simply add them back as a member, not affecting"] + #[doc = "any of the existing storage items for that member."] + #[doc = ""] + #[doc = "If a suspended member is rejected, remove all associated storage items, including"] + #[doc = "their payouts, and remove any vouched bids they currently have."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed from the Founder."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who` - The suspended member to be judged."] + #[doc = "- `forgive` - A boolean representing whether the suspension judgement origin forgives"] + #[doc = " (`true`) or rejects (`false`) a suspended member."] pub fn judge_suspended_member( &self, who: types::judge_suspended_member::Who, @@ -19032,7 +21914,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_parameters`]."] + #[doc = "Change the maximum number of members in society and the maximum number of new candidates"] + #[doc = "in a single intake period."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed by the Founder."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `max_members` - The maximum number of members for the society. This must be no less"] + #[doc = " than the current number of members."] + #[doc = "- `max_intake` - The maximum number of candidates per intake period."] + #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] + #[doc = " suspended and may only be reinstated by the founder."] + #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] pub fn set_parameters( &self, max_members: types::set_parameters::MaxMembers, @@ -19058,7 +21951,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::punish_skeptic`]."] + #[doc = "Punish the skeptic with a strike if they did not vote on a candidate. Callable by the"] + #[doc = "candidate."] pub fn punish_skeptic( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -19075,7 +21969,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::claim_membership`]."] + #[doc = "Transform an approved candidate into a member. Callable only by the"] + #[doc = "the candidate, and only after the period for voting has ended."] pub fn claim_membership( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -19091,7 +21986,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::bestow_membership`]."] + #[doc = "Transform an approved candidate into a member. Callable only by the Signed origin of the"] + #[doc = "Founder, only after the period for voting has ended and only when the candidate is not"] + #[doc = "clearly rejected."] pub fn bestow_membership( &self, candidate: types::bestow_membership::Candidate, @@ -19108,7 +22005,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kick_candidate`]."] + #[doc = "Remove the candidate's application from the society. Callable only by the Signed origin"] + #[doc = "of the Founder, only after the period for voting has ended, and only when they do not"] + #[doc = "have a clear approval."] + #[doc = ""] + #[doc = "Any bid deposit is lost and voucher is banned."] pub fn kick_candidate( &self, candidate: types::kick_candidate::Candidate, @@ -19125,7 +22026,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::resign_candidacy`]."] + #[doc = "Remove the candidate's application from the society. Callable only by the candidate."] + #[doc = ""] + #[doc = "Any bid deposit is lost and voucher is banned."] pub fn resign_candidacy( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -19142,7 +22045,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::drop_candidate`]."] + #[doc = "Remove a `candidate`'s failed application from the society. Callable by any"] + #[doc = "signed origin but only at the end of the subsequent round and only for"] + #[doc = "a candidate with more rejections than approvals."] + #[doc = ""] + #[doc = "The bid deposit is lost and the voucher is banned."] pub fn drop_candidate( &self, candidate: types::drop_candidate::Candidate, @@ -19159,7 +22066,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cleanup_candidacy`]."] + #[doc = "Remove up to `max` stale votes for the given `candidate`."] + #[doc = ""] + #[doc = "May be called by any Signed origin, but only after the candidate's candidacy is ended."] pub fn cleanup_candidacy( &self, candidate: types::cleanup_candidacy::Candidate, @@ -19178,7 +22087,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cleanup_challenge`]."] + #[doc = "Remove up to `max` stale votes for the defender in the given `challenge_round`."] + #[doc = ""] + #[doc = "May be called by any Signed origin, but only after the challenge round is ended."] pub fn cleanup_challenge( &self, challenge_round: types::cleanup_challenge::ChallengeRound, @@ -19694,7 +22605,7 @@ pub mod api { pub mod vote_clear_cursor { use super::runtime_types; pub type VoteClearCursor = - runtime_types::bounded_collections::bounded_vec::BoundedVec5< + runtime_types::bounded_collections::bounded_vec::BoundedVec2< ::core::primitive::u8, >; pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; @@ -20638,7 +23549,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::as_recovered`]."] + #[doc = "Send a call through a recovered account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] + #[doc = "be able to make calls on behalf of the recovered account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The recovered account you want to make a call on-behalf-of."] + #[doc = "- `call`: The call you want to make with the recovered account."] pub struct AsRecovered { pub account: as_recovered::Account, pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, @@ -20669,7 +23587,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_recovered`]."] + #[doc = "Allow ROOT to bypass the recovery process and set an a rescuer account"] + #[doc = "for a lost account directly."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _ROOT_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `lost`: The \"lost account\" to be recovered."] + #[doc = "- `rescuer`: The \"rescuer account\" which can call as the lost account."] pub struct SetRecovered { pub lost: set_recovered::Lost, pub rescuer: set_recovered::Rescuer, @@ -20703,7 +23628,22 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::create_recovery`]."] + #[doc = "Create a recovery configuration for your account. This makes your account recoverable."] + #[doc = ""] + #[doc = "Payment: `ConfigDepositBase` + `FriendDepositFactor` * #_of_friends balance"] + #[doc = "will be reserved for storing the recovery configuration. This deposit is returned"] + #[doc = "in full when the user calls `remove_recovery`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `friends`: A list of friends you trust to vouch for recovery attempts. Should be"] + #[doc = " ordered and contain no duplicate values."] + #[doc = "- `threshold`: The number of friends that must vouch for a recovery attempt before the"] + #[doc = " account can be recovered. Should be less than or equal to the length of the list of"] + #[doc = " friends."] + #[doc = "- `delay_period`: The number of blocks after a recovery attempt is initialized that"] + #[doc = " needs to pass before the account can be recovered."] pub struct CreateRecovery { pub friends: create_recovery::Friends, pub threshold: create_recovery::Threshold, @@ -20735,7 +23675,17 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::initiate_recovery`]."] + #[doc = "Initiate the process for recovering a recoverable account."] + #[doc = ""] + #[doc = "Payment: `RecoveryDeposit` balance will be reserved for initiating the"] + #[doc = "recovery process. This deposit will always be repatriated to the account"] + #[doc = "trying to be recovered. See `close_recovery`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The lost account that you want to recover. This account needs to be"] + #[doc = " recoverable (i.e. have a recovery configuration)."] pub struct InitiateRecovery { pub account: initiate_recovery::Account, } @@ -20764,7 +23714,18 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::vouch_recovery`]."] + #[doc = "Allow a \"friend\" of a recoverable account to vouch for an active recovery"] + #[doc = "process for that account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"friend\""] + #[doc = "for the recoverable account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `lost`: The lost account that you want to recover."] + #[doc = "- `rescuer`: The account trying to rescue the lost account that you want to vouch for."] + #[doc = ""] + #[doc = "The combination of these two parameters must point to an active recovery"] + #[doc = "process."] pub struct VouchRecovery { pub lost: vouch_recovery::Lost, pub rescuer: vouch_recovery::Rescuer, @@ -20798,7 +23759,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::claim_recovery`]."] + #[doc = "Allow a successful rescuer to claim their recovered account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"rescuer\""] + #[doc = "who has successfully completed the account recovery process: collected"] + #[doc = "`threshold` or more vouches, waited `delay_period` blocks since initiation."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The lost account that you want to claim has been successfully recovered by"] + #[doc = " you."] pub struct ClaimRecovery { pub account: claim_recovery::Account, } @@ -20827,7 +23796,17 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::close_recovery`]."] + #[doc = "As the controller of a recoverable account, close an active recovery"] + #[doc = "process for your account."] + #[doc = ""] + #[doc = "Payment: By calling this function, the recoverable account will receive"] + #[doc = "the recovery deposit `RecoveryDeposit` placed by the rescuer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] + #[doc = "recoverable account with an active recovery process for it."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `rescuer`: The account trying to rescue this recoverable account."] pub struct CloseRecovery { pub rescuer: close_recovery::Rescuer, } @@ -20856,7 +23835,17 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::remove_recovery`]."] + #[doc = "Remove the recovery process for your account. Recovered accounts are still accessible."] + #[doc = ""] + #[doc = "NOTE: The user must make sure to call `close_recovery` on all active"] + #[doc = "recovery attempts before calling this function else it will fail."] + #[doc = ""] + #[doc = "Payment: By calling this function the recoverable account will unreserve"] + #[doc = "their recovery configuration deposit."] + #[doc = "(`ConfigDepositBase` + `FriendDepositFactor` * #_of_friends)"] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] + #[doc = "recoverable account (i.e. has a recovery configuration)."] pub struct RemoveRecovery; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveRecovery { const PALLET: &'static str = "Recovery"; @@ -20876,7 +23865,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::cancel_recovered`]."] + #[doc = "Cancel the ability to use `as_recovered` for `account`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] + #[doc = "be able to make calls on behalf of the recovered account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The recovered account you are able to call on-behalf-of."] pub struct CancelRecovered { pub account: cancel_recovered::Account, } @@ -20894,7 +23889,14 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::as_recovered`]."] + #[doc = "Send a call through a recovered account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] + #[doc = "be able to make calls on behalf of the recovered account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The recovered account you want to make a call on-behalf-of."] + #[doc = "- `call`: The call you want to make with the recovered account."] pub fn as_recovered( &self, account: types::as_recovered::Account, @@ -20909,14 +23911,20 @@ pub mod api { call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 132u8, 94u8, 18u8, 16u8, 239u8, 67u8, 148u8, 125u8, 211u8, 36u8, 235u8, - 248u8, 182u8, 156u8, 31u8, 86u8, 222u8, 157u8, 184u8, 224u8, 140u8, - 128u8, 168u8, 185u8, 169u8, 179u8, 67u8, 196u8, 157u8, 249u8, 228u8, - 33u8, + 18u8, 79u8, 49u8, 68u8, 6u8, 123u8, 255u8, 202u8, 55u8, 94u8, 13u8, + 5u8, 99u8, 103u8, 19u8, 66u8, 9u8, 129u8, 142u8, 242u8, 96u8, 18u8, + 61u8, 204u8, 125u8, 174u8, 159u8, 131u8, 222u8, 30u8, 164u8, 249u8, ], ) } - #[doc = "See [`Pallet::set_recovered`]."] + #[doc = "Allow ROOT to bypass the recovery process and set an a rescuer account"] + #[doc = "for a lost account directly."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _ROOT_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `lost`: The \"lost account\" to be recovered."] + #[doc = "- `rescuer`: The \"rescuer account\" which can call as the lost account."] pub fn set_recovered( &self, lost: types::set_recovered::Lost, @@ -20934,7 +23942,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::create_recovery`]."] + #[doc = "Create a recovery configuration for your account. This makes your account recoverable."] + #[doc = ""] + #[doc = "Payment: `ConfigDepositBase` + `FriendDepositFactor` * #_of_friends balance"] + #[doc = "will be reserved for storing the recovery configuration. This deposit is returned"] + #[doc = "in full when the user calls `remove_recovery`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `friends`: A list of friends you trust to vouch for recovery attempts. Should be"] + #[doc = " ordered and contain no duplicate values."] + #[doc = "- `threshold`: The number of friends that must vouch for a recovery attempt before the"] + #[doc = " account can be recovered. Should be less than or equal to the length of the list of"] + #[doc = " friends."] + #[doc = "- `delay_period`: The number of blocks after a recovery attempt is initialized that"] + #[doc = " needs to pass before the account can be recovered."] pub fn create_recovery( &self, friends: types::create_recovery::Friends, @@ -20957,7 +23980,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::initiate_recovery`]."] + #[doc = "Initiate the process for recovering a recoverable account."] + #[doc = ""] + #[doc = "Payment: `RecoveryDeposit` balance will be reserved for initiating the"] + #[doc = "recovery process. This deposit will always be repatriated to the account"] + #[doc = "trying to be recovered. See `close_recovery`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The lost account that you want to recover. This account needs to be"] + #[doc = " recoverable (i.e. have a recovery configuration)."] pub fn initiate_recovery( &self, account: types::initiate_recovery::Account, @@ -20974,7 +24007,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vouch_recovery`]."] + #[doc = "Allow a \"friend\" of a recoverable account to vouch for an active recovery"] + #[doc = "process for that account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"friend\""] + #[doc = "for the recoverable account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `lost`: The lost account that you want to recover."] + #[doc = "- `rescuer`: The account trying to rescue the lost account that you want to vouch for."] + #[doc = ""] + #[doc = "The combination of these two parameters must point to an active recovery"] + #[doc = "process."] pub fn vouch_recovery( &self, lost: types::vouch_recovery::Lost, @@ -20992,7 +24036,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::claim_recovery`]."] + #[doc = "Allow a successful rescuer to claim their recovered account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"rescuer\""] + #[doc = "who has successfully completed the account recovery process: collected"] + #[doc = "`threshold` or more vouches, waited `delay_period` blocks since initiation."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The lost account that you want to claim has been successfully recovered by"] + #[doc = " you."] pub fn claim_recovery( &self, account: types::claim_recovery::Account, @@ -21010,7 +24062,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::close_recovery`]."] + #[doc = "As the controller of a recoverable account, close an active recovery"] + #[doc = "process for your account."] + #[doc = ""] + #[doc = "Payment: By calling this function, the recoverable account will receive"] + #[doc = "the recovery deposit `RecoveryDeposit` placed by the rescuer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] + #[doc = "recoverable account with an active recovery process for it."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `rescuer`: The account trying to rescue this recoverable account."] pub fn close_recovery( &self, rescuer: types::close_recovery::Rescuer, @@ -21028,7 +24090,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_recovery`]."] + #[doc = "Remove the recovery process for your account. Recovered accounts are still accessible."] + #[doc = ""] + #[doc = "NOTE: The user must make sure to call `close_recovery` on all active"] + #[doc = "recovery attempts before calling this function else it will fail."] + #[doc = ""] + #[doc = "Payment: By calling this function the recoverable account will unreserve"] + #[doc = "their recovery configuration deposit."] + #[doc = "(`ConfigDepositBase` + `FriendDepositFactor` * #_of_friends)"] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] + #[doc = "recoverable account (i.e. has a recovery configuration)."] pub fn remove_recovery( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -21045,7 +24117,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel_recovered`]."] + #[doc = "Cancel the ability to use `as_recovered` for `account`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] + #[doc = "be able to make calls on behalf of the recovered account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The recovered account you are able to call on-behalf-of."] pub fn cancel_recovered( &self, account: types::cancel_recovered::Account, @@ -21560,7 +24638,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::vest`]."] + #[doc = "Unlock any vested funds of the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have funds still"] + #[doc = "locked under this pallet."] + #[doc = ""] + #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct Vest; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Vest { const PALLET: &'static str = "Vesting"; @@ -21580,7 +24666,17 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::vest_other`]."] + #[doc = "Unlock any vested funds of a `target` account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account whose vested funds should be unlocked. Must have funds still"] + #[doc = "locked under this pallet."] + #[doc = ""] + #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct VestOther { pub target: vest_other::Target, } @@ -21609,7 +24705,19 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::vested_transfer`]."] + #[doc = "Create a vested transfer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account receiving the vested funds."] + #[doc = "- `schedule`: The vesting schedule attached to the transfer."] + #[doc = ""] + #[doc = "Emits `VestingCreated`."] + #[doc = ""] + #[doc = "NOTE: This will unlock all schedules through the current block."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct VestedTransfer { pub target: vested_transfer::Target, pub schedule: vested_transfer::Schedule, @@ -21643,7 +24751,20 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_vested_transfer`]."] + #[doc = "Force a vested transfer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `source`: The account whose funds should be transferred."] + #[doc = "- `target`: The account that should be transferred the vested funds."] + #[doc = "- `schedule`: The vesting schedule attached to the transfer."] + #[doc = ""] + #[doc = "Emits `VestingCreated`."] + #[doc = ""] + #[doc = "NOTE: This will unlock all schedules through the current block."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub struct ForceVestedTransfer { pub source: force_vested_transfer::Source, pub target: force_vested_transfer::Target, @@ -21682,7 +24803,27 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::merge_schedules`]."] + #[doc = "Merge two vesting schedules together, creating a new vesting schedule that unlocks over"] + #[doc = "the highest possible start and end blocks. If both schedules have already started the"] + #[doc = "current block will be used as the schedule start; with the caveat that if one schedule"] + #[doc = "is finished by the current block, the other will be treated as the new merged schedule,"] + #[doc = "unmodified."] + #[doc = ""] + #[doc = "NOTE: If `schedule1_index == schedule2_index` this is a no-op."] + #[doc = "NOTE: This will unlock all schedules through the current block prior to merging."] + #[doc = "NOTE: If both schedules have ended by the current block, no new schedule will be created"] + #[doc = "and both will be removed."] + #[doc = ""] + #[doc = "Merged schedule attributes:"] + #[doc = "- `starting_block`: `MAX(schedule1.starting_block, scheduled2.starting_block,"] + #[doc = " current_block)`."] + #[doc = "- `ending_block`: `MAX(schedule1.ending_block, schedule2.ending_block)`."] + #[doc = "- `locked`: `schedule1.locked_at(current_block) + schedule2.locked_at(current_block)`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `schedule1_index`: index of the first schedule to merge."] + #[doc = "- `schedule2_index`: index of the second schedule to merge."] pub struct MergeSchedules { pub schedule1_index: merge_schedules::Schedule1Index, pub schedule2_index: merge_schedules::Schedule2Index, @@ -21696,10 +24837,54 @@ pub mod api { const PALLET: &'static str = "Vesting"; const CALL: &'static str = "merge_schedules"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Force remove a vesting schedule"] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `target`: An account that has a vesting schedule"] + #[doc = "- `schedule_index`: The vesting schedule index that should be removed"] + pub struct ForceRemoveVestingSchedule { + pub target: force_remove_vesting_schedule::Target, + pub schedule_index: force_remove_vesting_schedule::ScheduleIndex, + } + pub mod force_remove_vesting_schedule { + use super::runtime_types; + pub type Target = ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >; + pub type ScheduleIndex = ::core::primitive::u32; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceRemoveVestingSchedule { + const PALLET: &'static str = "Vesting"; + const CALL: &'static str = "force_remove_vesting_schedule"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::vest`]."] + #[doc = "Unlock any vested funds of the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have funds still"] + #[doc = "locked under this pallet."] + #[doc = ""] + #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn vest( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -21716,7 +24901,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vest_other`]."] + #[doc = "Unlock any vested funds of a `target` account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account whose vested funds should be unlocked. Must have funds still"] + #[doc = "locked under this pallet."] + #[doc = ""] + #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn vest_other( &self, target: types::vest_other::Target, @@ -21733,7 +24928,19 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::vested_transfer`]."] + #[doc = "Create a vested transfer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account receiving the vested funds."] + #[doc = "- `schedule`: The vesting schedule attached to the transfer."] + #[doc = ""] + #[doc = "Emits `VestingCreated`."] + #[doc = ""] + #[doc = "NOTE: This will unlock all schedules through the current block."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn vested_transfer( &self, target: types::vested_transfer::Target, @@ -21751,7 +24958,20 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_vested_transfer`]."] + #[doc = "Force a vested transfer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `source`: The account whose funds should be transferred."] + #[doc = "- `target`: The account that should be transferred the vested funds."] + #[doc = "- `schedule`: The vesting schedule attached to the transfer."] + #[doc = ""] + #[doc = "Emits `VestingCreated`."] + #[doc = ""] + #[doc = "NOTE: This will unlock all schedules through the current block."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] pub fn force_vested_transfer( &self, source: types::force_vested_transfer::Source, @@ -21775,7 +24995,27 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::merge_schedules`]."] + #[doc = "Merge two vesting schedules together, creating a new vesting schedule that unlocks over"] + #[doc = "the highest possible start and end blocks. If both schedules have already started the"] + #[doc = "current block will be used as the schedule start; with the caveat that if one schedule"] + #[doc = "is finished by the current block, the other will be treated as the new merged schedule,"] + #[doc = "unmodified."] + #[doc = ""] + #[doc = "NOTE: If `schedule1_index == schedule2_index` this is a no-op."] + #[doc = "NOTE: This will unlock all schedules through the current block prior to merging."] + #[doc = "NOTE: If both schedules have ended by the current block, no new schedule will be created"] + #[doc = "and both will be removed."] + #[doc = ""] + #[doc = "Merged schedule attributes:"] + #[doc = "- `starting_block`: `MAX(schedule1.starting_block, scheduled2.starting_block,"] + #[doc = " current_block)`."] + #[doc = "- `ending_block`: `MAX(schedule1.ending_block, schedule2.ending_block)`."] + #[doc = "- `locked`: `schedule1.locked_at(current_block) + schedule2.locked_at(current_block)`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `schedule1_index`: index of the first schedule to merge."] + #[doc = "- `schedule2_index`: index of the second schedule to merge."] pub fn merge_schedules( &self, schedule1_index: types::merge_schedules::Schedule1Index, @@ -21796,6 +25036,33 @@ pub mod api { ], ) } + #[doc = "Force remove a vesting schedule"] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `target`: An account that has a vesting schedule"] + #[doc = "- `schedule_index`: The vesting schedule index that should be removed"] + pub fn force_remove_vesting_schedule( + &self, + target: types::force_remove_vesting_schedule::Target, + schedule_index: types::force_remove_vesting_schedule::ScheduleIndex, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload< + types::ForceRemoveVestingSchedule, + > { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Vesting", + "force_remove_vesting_schedule", + types::ForceRemoveVestingSchedule { + target, + schedule_index, + }, + [ + 211u8, 253u8, 60u8, 15u8, 20u8, 53u8, 23u8, 13u8, 45u8, 223u8, 136u8, + 183u8, 162u8, 143u8, 196u8, 188u8, 35u8, 64u8, 174u8, 16u8, 47u8, 13u8, + 147u8, 173u8, 120u8, 143u8, 75u8, 89u8, 128u8, 187u8, 9u8, 18u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -22012,7 +25279,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::schedule`]."] + #[doc = "Anonymously schedule a task."] pub struct Schedule { pub when: schedule::When, pub maybe_periodic: schedule::MaybePeriodic, @@ -22045,7 +25312,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an anonymously scheduled task."] pub struct Cancel { pub when: cancel::When, pub index: cancel::Index, @@ -22073,7 +25340,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::schedule_named`]."] + #[doc = "Schedule a named task."] pub struct ScheduleNamed { pub id: schedule_named::Id, pub when: schedule_named::When, @@ -22108,7 +25375,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::cancel_named`]."] + #[doc = "Cancel a named scheduled task."] pub struct CancelNamed { pub id: cancel_named::Id, } @@ -22134,7 +25401,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::schedule_after`]."] + #[doc = "Anonymously schedule a task after a delay."] pub struct ScheduleAfter { pub after: schedule_after::After, pub maybe_periodic: schedule_after::MaybePeriodic, @@ -22167,7 +25434,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::schedule_named_after`]."] + #[doc = "Schedule a named task after a delay."] pub struct ScheduleNamedAfter { pub id: schedule_named_after::Id, pub after: schedule_named_after::After, @@ -22189,10 +25456,144 @@ pub mod api { const PALLET: &'static str = "Scheduler"; const CALL: &'static str = "schedule_named_after"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Set a retry configuration for a task so that, in case its scheduled run fails, it will"] + #[doc = "be retried after `period` blocks, for a total amount of `retries` retries or until it"] + #[doc = "succeeds."] + #[doc = ""] + #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] + #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] + #[doc = "normally while the task is retrying."] + #[doc = ""] + #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] + #[doc = "clones of the original task. Their retry configuration will be derived from the"] + #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] + #[doc = "original `total_retries`."] + pub struct SetRetry { + pub task: set_retry::Task, + pub retries: set_retry::Retries, + pub period: set_retry::Period, + } + pub mod set_retry { + use super::runtime_types; + pub type Task = (::core::primitive::u32, ::core::primitive::u32); + pub type Retries = ::core::primitive::u8; + pub type Period = ::core::primitive::u32; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetRetry { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "set_retry"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Set a retry configuration for a named task so that, in case its scheduled run fails, it"] + #[doc = "will be retried after `period` blocks, for a total amount of `retries` retries or until"] + #[doc = "it succeeds."] + #[doc = ""] + #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] + #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] + #[doc = "normally while the task is retrying."] + #[doc = ""] + #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] + #[doc = "clones of the original task. Their retry configuration will be derived from the"] + #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] + #[doc = "original `total_retries`."] + pub struct SetRetryNamed { + pub id: set_retry_named::Id, + pub retries: set_retry_named::Retries, + pub period: set_retry_named::Period, + } + pub mod set_retry_named { + use super::runtime_types; + pub type Id = [::core::primitive::u8; 32usize]; + pub type Retries = ::core::primitive::u8; + pub type Period = ::core::primitive::u32; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetRetryNamed { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "set_retry_named"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Removes the retry configuration of a task."] + pub struct CancelRetry { + pub task: cancel_retry::Task, + } + pub mod cancel_retry { + use super::runtime_types; + pub type Task = (::core::primitive::u32, ::core::primitive::u32); + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CancelRetry { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "cancel_retry"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Cancel the retry configuration of a named task."] + pub struct CancelRetryNamed { + pub id: cancel_retry_named::Id, + } + pub mod cancel_retry_named { + use super::runtime_types; + pub type Id = [::core::primitive::u8; 32usize]; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CancelRetryNamed { + const PALLET: &'static str = "Scheduler"; + const CALL: &'static str = "cancel_retry_named"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::schedule`]."] + #[doc = "Anonymously schedule a task."] pub fn schedule( &self, when: types::schedule::When, @@ -22211,14 +25612,14 @@ pub mod api { call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 252u8, 254u8, 42u8, 224u8, 241u8, 137u8, 180u8, 193u8, 26u8, 146u8, - 35u8, 137u8, 255u8, 216u8, 163u8, 49u8, 213u8, 110u8, 57u8, 170u8, - 216u8, 56u8, 196u8, 95u8, 74u8, 66u8, 15u8, 209u8, 137u8, 34u8, 175u8, - 238u8, + 100u8, 219u8, 155u8, 168u8, 165u8, 172u8, 207u8, 36u8, 200u8, 111u8, + 91u8, 231u8, 128u8, 167u8, 26u8, 184u8, 56u8, 206u8, 166u8, 211u8, + 28u8, 161u8, 235u8, 156u8, 81u8, 75u8, 51u8, 95u8, 6u8, 181u8, 27u8, + 132u8, ], ) } - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an anonymously scheduled task."] pub fn cancel( &self, when: types::cancel::When, @@ -22237,7 +25638,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::schedule_named`]."] + #[doc = "Schedule a named task."] pub fn schedule_named( &self, id: types::schedule_named::Id, @@ -22258,14 +25659,14 @@ pub mod api { call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 45u8, 36u8, 20u8, 248u8, 180u8, 54u8, 108u8, 243u8, 147u8, 74u8, 234u8, - 254u8, 138u8, 186u8, 88u8, 29u8, 195u8, 57u8, 197u8, 231u8, 174u8, - 141u8, 250u8, 76u8, 93u8, 53u8, 34u8, 247u8, 103u8, 138u8, 160u8, - 198u8, + 202u8, 2u8, 80u8, 136u8, 218u8, 219u8, 131u8, 252u8, 112u8, 212u8, + 238u8, 167u8, 53u8, 189u8, 159u8, 117u8, 6u8, 100u8, 18u8, 158u8, + 190u8, 95u8, 136u8, 46u8, 40u8, 232u8, 112u8, 15u8, 129u8, 226u8, 56u8, + 167u8, ], ) } - #[doc = "See [`Pallet::cancel_named`]."] + #[doc = "Cancel a named scheduled task."] pub fn cancel_named( &self, id: types::cancel_named::Id, @@ -22282,7 +25683,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::schedule_after`]."] + #[doc = "Anonymously schedule a task after a delay."] pub fn schedule_after( &self, after: types::schedule_after::After, @@ -22301,13 +25702,13 @@ pub mod api { call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 161u8, 65u8, 247u8, 115u8, 13u8, 56u8, 115u8, 110u8, 92u8, 6u8, 119u8, - 247u8, 90u8, 174u8, 97u8, 217u8, 73u8, 49u8, 17u8, 2u8, 117u8, 225u8, - 251u8, 48u8, 148u8, 105u8, 136u8, 83u8, 65u8, 178u8, 65u8, 96u8, + 163u8, 15u8, 39u8, 245u8, 220u8, 192u8, 67u8, 103u8, 57u8, 83u8, 35u8, + 242u8, 99u8, 9u8, 27u8, 224u8, 154u8, 231u8, 51u8, 170u8, 191u8, 125u8, + 166u8, 63u8, 218u8, 143u8, 169u8, 177u8, 209u8, 234u8, 6u8, 255u8, ], ) } - #[doc = "See [`Pallet::schedule_named_after`]."] + #[doc = "Schedule a named task after a delay."] pub fn schedule_named_after( &self, id: types::schedule_named_after::Id, @@ -22328,9 +25729,114 @@ pub mod api { call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 215u8, 126u8, 151u8, 2u8, 165u8, 35u8, 101u8, 79u8, 101u8, 79u8, 27u8, - 17u8, 244u8, 244u8, 166u8, 173u8, 2u8, 26u8, 222u8, 154u8, 106u8, - 232u8, 202u8, 86u8, 226u8, 222u8, 9u8, 17u8, 221u8, 85u8, 85u8, 140u8, + 176u8, 169u8, 202u8, 92u8, 55u8, 131u8, 173u8, 160u8, 101u8, 48u8, + 164u8, 226u8, 239u8, 1u8, 10u8, 74u8, 98u8, 250u8, 166u8, 18u8, 130u8, + 185u8, 80u8, 241u8, 141u8, 157u8, 108u8, 251u8, 8u8, 238u8, 193u8, + 35u8, + ], + ) + } + #[doc = "Set a retry configuration for a task so that, in case its scheduled run fails, it will"] + #[doc = "be retried after `period` blocks, for a total amount of `retries` retries or until it"] + #[doc = "succeeds."] + #[doc = ""] + #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] + #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] + #[doc = "normally while the task is retrying."] + #[doc = ""] + #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] + #[doc = "clones of the original task. Their retry configuration will be derived from the"] + #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] + #[doc = "original `total_retries`."] + pub fn set_retry( + &self, + task: types::set_retry::Task, + retries: types::set_retry::Retries, + period: types::set_retry::Period, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Scheduler", + "set_retry", + types::SetRetry { + task, + retries, + period, + }, + [ + 2u8, 242u8, 180u8, 69u8, 237u8, 168u8, 243u8, 93u8, 47u8, 222u8, 189u8, + 74u8, 233u8, 106u8, 54u8, 40u8, 160u8, 61u8, 78u8, 138u8, 232u8, 20u8, + 243u8, 17u8, 151u8, 194u8, 67u8, 200u8, 186u8, 192u8, 210u8, 214u8, + ], + ) + } + #[doc = "Set a retry configuration for a named task so that, in case its scheduled run fails, it"] + #[doc = "will be retried after `period` blocks, for a total amount of `retries` retries or until"] + #[doc = "it succeeds."] + #[doc = ""] + #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] + #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] + #[doc = "normally while the task is retrying."] + #[doc = ""] + #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] + #[doc = "clones of the original task. Their retry configuration will be derived from the"] + #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] + #[doc = "original `total_retries`."] + pub fn set_retry_named( + &self, + id: types::set_retry_named::Id, + retries: types::set_retry_named::Retries, + period: types::set_retry_named::Period, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Scheduler", + "set_retry_named", + types::SetRetryNamed { + id, + retries, + period, + }, + [ + 240u8, 102u8, 255u8, 253u8, 52u8, 81u8, 164u8, 170u8, 184u8, 178u8, + 254u8, 126u8, 41u8, 247u8, 121u8, 22u8, 254u8, 136u8, 237u8, 37u8, + 11u8, 42u8, 227u8, 234u8, 132u8, 83u8, 109u8, 168u8, 31u8, 44u8, 231u8, + 70u8, + ], + ) + } + #[doc = "Removes the retry configuration of a task."] + pub fn cancel_retry( + &self, + task: types::cancel_retry::Task, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Scheduler", + "cancel_retry", + types::CancelRetry { task }, + [ + 142u8, 126u8, 127u8, 216u8, 64u8, 189u8, 42u8, 126u8, 63u8, 249u8, + 211u8, 202u8, 224u8, 197u8, 199u8, 240u8, 58u8, 94u8, 219u8, 177u8, + 20u8, 210u8, 153u8, 0u8, 127u8, 255u8, 235u8, 238u8, 170u8, 240u8, + 44u8, 49u8, + ], + ) + } + #[doc = "Cancel the retry configuration of a named task."] + pub fn cancel_retry_named( + &self, + id: types::cancel_retry_named::Id, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Scheduler", + "cancel_retry_named", + types::CancelRetryNamed { id }, + [ + 76u8, 157u8, 253u8, 113u8, 162u8, 54u8, 98u8, 21u8, 62u8, 44u8, 155u8, + 202u8, 2u8, 28u8, 153u8, 219u8, 67u8, 166u8, 206u8, 79u8, 139u8, 3u8, + 119u8, 182u8, 254u8, 134u8, 143u8, 121u8, 155u8, 220u8, 192u8, 209u8, ], ) } @@ -22425,6 +25931,58 @@ pub mod api { # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "Set a retry configuration for some task."] + pub struct RetrySet { + pub task: retry_set::Task, + pub id: retry_set::Id, + pub period: retry_set::Period, + pub retries: retry_set::Retries, + } + pub mod retry_set { + use super::runtime_types; + pub type Task = (::core::primitive::u32, ::core::primitive::u32); + pub type Id = ::core::option::Option<[::core::primitive::u8; 32usize]>; + pub type Period = ::core::primitive::u32; + pub type Retries = ::core::primitive::u8; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for RetrySet { + const PALLET: &'static str = "Scheduler"; + const EVENT: &'static str = "RetrySet"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "Cancel a retry configuration for some task."] + pub struct RetryCancelled { + pub task: retry_cancelled::Task, + pub id: retry_cancelled::Id, + } + pub mod retry_cancelled { + use super::runtime_types; + pub type Task = (::core::primitive::u32, ::core::primitive::u32); + pub type Id = ::core::option::Option<[::core::primitive::u8; 32usize]>; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for RetryCancelled { + const PALLET: &'static str = "Scheduler"; + const EVENT: &'static str = "RetryCancelled"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The call for the provided hash was not found so the task has been aborted."] pub struct CallUnavailable { pub task: call_unavailable::Task, @@ -22473,6 +26031,31 @@ pub mod api { # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "The given task was unable to be retried since the agenda is full at that block or there"] + #[doc = "was not enough weight to reschedule it."] + pub struct RetryFailed { + pub task: retry_failed::Task, + pub id: retry_failed::Id, + } + pub mod retry_failed { + use super::runtime_types; + pub type Task = (::core::primitive::u32, ::core::primitive::u32); + pub type Id = ::core::option::Option<[::core::primitive::u8; 32usize]>; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for RetryFailed { + const PALLET: &'static str = "Scheduler"; + const EVENT: &'static str = "RetryFailed"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The given task can never be executed since it is overweight."] pub struct PermanentlyOverweight { pub task: permanently_overweight::Task, @@ -22514,6 +26097,13 @@ pub mod api { >; pub type Param0 = ::core::primitive::u32; } + pub mod retries { + use super::runtime_types; + pub type Retries = + runtime_types::pallet_scheduler::RetryConfig<::core::primitive::u32>; + pub type Param0 = ::core::primitive::u32; + pub type Param1 = ::core::primitive::u32; + } pub mod lookup { use super::runtime_types; pub type Lookup = (::core::primitive::u32, ::core::primitive::u32); @@ -22557,9 +26147,9 @@ pub mod api { "Agenda", (), [ - 247u8, 226u8, 115u8, 70u8, 172u8, 69u8, 26u8, 24u8, 46u8, 202u8, 118u8, - 250u8, 111u8, 236u8, 77u8, 255u8, 26u8, 125u8, 18u8, 8u8, 24u8, 230u8, - 222u8, 140u8, 179u8, 235u8, 19u8, 161u8, 40u8, 78u8, 26u8, 173u8, + 10u8, 123u8, 252u8, 106u8, 154u8, 9u8, 245u8, 203u8, 188u8, 254u8, + 20u8, 41u8, 6u8, 226u8, 78u8, 188u8, 0u8, 173u8, 143u8, 44u8, 117u8, + 249u8, 180u8, 13u8, 236u8, 224u8, 170u8, 202u8, 24u8, 3u8, 163u8, 37u8, ], ) } @@ -22583,9 +26173,96 @@ pub mod api { _0.borrow(), ), [ - 247u8, 226u8, 115u8, 70u8, 172u8, 69u8, 26u8, 24u8, 46u8, 202u8, 118u8, - 250u8, 111u8, 236u8, 77u8, 255u8, 26u8, 125u8, 18u8, 8u8, 24u8, 230u8, - 222u8, 140u8, 179u8, 235u8, 19u8, 161u8, 40u8, 78u8, 26u8, 173u8, + 10u8, 123u8, 252u8, 106u8, 154u8, 9u8, 245u8, 203u8, 188u8, 254u8, + 20u8, 41u8, 6u8, 226u8, 78u8, 188u8, 0u8, 173u8, 143u8, 44u8, 117u8, + 249u8, 180u8, 13u8, 236u8, 224u8, 170u8, 202u8, 24u8, 3u8, 163u8, 37u8, + ], + ) + } + #[doc = " Retry configurations for items to be executed, indexed by task address."] + pub fn retries_iter( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::retries::Retries, + (), + (), + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Scheduler", + "Retries", + (), + [ + 164u8, 27u8, 208u8, 185u8, 19u8, 232u8, 190u8, 97u8, 137u8, 73u8, + 146u8, 10u8, 241u8, 176u8, 251u8, 140u8, 133u8, 65u8, 190u8, 162u8, + 59u8, 32u8, 77u8, 201u8, 27u8, 78u8, 183u8, 164u8, 74u8, 46u8, 139u8, + 145u8, + ], + ) + } + #[doc = " Retry configurations for items to be executed, indexed by task address."] + pub fn retries_iter1( + &self, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::retries::Param0, + >, + types::retries::Retries, + (), + (), + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Scheduler", + "Retries", + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + [ + 164u8, 27u8, 208u8, 185u8, 19u8, 232u8, 190u8, 97u8, 137u8, 73u8, + 146u8, 10u8, 241u8, 176u8, 251u8, 140u8, 133u8, 65u8, 190u8, 162u8, + 59u8, 32u8, 77u8, 201u8, 27u8, 78u8, 183u8, 164u8, 74u8, 46u8, 139u8, + 145u8, + ], + ) + } + #[doc = " Retry configurations for items to be executed, indexed by task address."] + pub fn retries( + &self, + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + ( + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::retries::Param0, + >, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::retries::Param1, + >, + ), + types::retries::Retries, + ::subxt::ext::subxt_core::utils::Yes, + (), + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Scheduler", + "Retries", + ( + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _1.borrow(), + ), + ), + [ + 164u8, 27u8, 208u8, 185u8, 19u8, 232u8, 190u8, 97u8, 137u8, 73u8, + 146u8, 10u8, 241u8, 176u8, 251u8, 140u8, 133u8, 65u8, 190u8, 162u8, + 59u8, 32u8, 77u8, 201u8, 27u8, 78u8, 183u8, 164u8, 74u8, 46u8, 139u8, + 145u8, ], ) } @@ -22716,7 +26393,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::proxy`]."] + #[doc = "Dispatch the given `call` from an account that the sender is authorised for through"] + #[doc = "`add_proxy`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] + #[doc = "- `call`: The call to be made by the `real` account."] pub struct Proxy { pub real: proxy::Real, pub force_proxy_type: proxy::ForceProxyType, @@ -22750,7 +26435,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::add_proxy`]."] + #[doc = "Register a proxy account for the sender that is able to make calls on its behalf."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `proxy`: The account that the `caller` would like to make a proxy."] + #[doc = "- `proxy_type`: The permissions allowed for this proxy account."] + #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] + #[doc = "zero."] pub struct AddProxy { pub delegate: add_proxy::Delegate, pub proxy_type: add_proxy::ProxyType, @@ -22783,7 +26476,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::remove_proxy`]."] + #[doc = "Unregister a proxy account for the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `proxy`: The account that the `caller` would like to remove as a proxy."] + #[doc = "- `proxy_type`: The permissions currently enabled for the removed proxy account."] pub struct RemoveProxy { pub delegate: remove_proxy::Delegate, pub proxy_type: remove_proxy::ProxyType, @@ -22816,7 +26515,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::remove_proxies`]."] + #[doc = "Unregister all proxy accounts for the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "WARNING: This may be called on accounts created by `pure`, however if done, then"] + #[doc = "the unreserved fees will be inaccessible. **All access to this account will be lost.**"] pub struct RemoveProxies; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveProxies { const PALLET: &'static str = "Proxy"; @@ -22836,7 +26540,24 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::create_pure`]."] + #[doc = "Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and"] + #[doc = "initialize it with a proxy of `proxy_type` for `origin` sender."] + #[doc = ""] + #[doc = "Requires a `Signed` origin."] + #[doc = ""] + #[doc = "- `proxy_type`: The type of the proxy that the sender will be registered as over the"] + #[doc = "new account. This will almost always be the most permissive `ProxyType` possible to"] + #[doc = "allow for maximum flexibility."] + #[doc = "- `index`: A disambiguation index, in case this is called multiple times in the same"] + #[doc = "transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just"] + #[doc = "want to use `0`."] + #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] + #[doc = "zero."] + #[doc = ""] + #[doc = "Fails with `Duplicate` if this has already been called in this transaction, from the"] + #[doc = "same sender, with the same parameters."] + #[doc = ""] + #[doc = "Fails if there are insufficient funds to pay for deposit."] pub struct CreatePure { pub proxy_type: create_pure::ProxyType, pub delay: create_pure::Delay, @@ -22866,7 +26587,22 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::kill_pure`]."] + #[doc = "Removes a previously spawned pure proxy."] + #[doc = ""] + #[doc = "WARNING: **All access to this account will be lost.** Any funds held in it will be"] + #[doc = "inaccessible."] + #[doc = ""] + #[doc = "Requires a `Signed` origin, and the sender account must have been created by a call to"] + #[doc = "`pure` with corresponding parameters."] + #[doc = ""] + #[doc = "- `spawner`: The account that originally called `pure` to create this account."] + #[doc = "- `index`: The disambiguation index originally passed to `pure`. Probably `0`."] + #[doc = "- `proxy_type`: The proxy type originally passed to `pure`."] + #[doc = "- `height`: The height of the chain when the call to `pure` was processed."] + #[doc = "- `ext_index`: The extrinsic index in which the call to `pure` was processed."] + #[doc = ""] + #[doc = "Fails with `NoPermission` in case the caller is not a previously created pure"] + #[doc = "account whose `pure` call has corresponding parameters."] pub struct KillPure { pub spawner: kill_pure::Spawner, pub proxy_type: kill_pure::ProxyType, @@ -22905,7 +26641,21 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::announce`]."] + #[doc = "Publish the hash of a proxy-call that will be made in the future."] + #[doc = ""] + #[doc = "This must be called some number of blocks before the corresponding `proxy` is attempted"] + #[doc = "if the delay associated with the proxy relationship is greater than zero."] + #[doc = ""] + #[doc = "No more than `MaxPending` announcements may be made at any one time."] + #[doc = ""] + #[doc = "This will take a deposit of `AnnouncementDepositFactor` as well as"] + #[doc = "`AnnouncementDepositBase` if there are no other pending announcements."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a proxy of `real`."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] pub struct Announce { pub real: announce::Real, pub call_hash: announce::CallHash, @@ -22936,7 +26686,16 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::remove_announcement`]."] + #[doc = "Remove a given announcement."] + #[doc = ""] + #[doc = "May be called by a proxy account to remove a call they previously announced and return"] + #[doc = "the deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] pub struct RemoveAnnouncement { pub real: remove_announcement::Real, pub call_hash: remove_announcement::CallHash, @@ -22967,7 +26726,16 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::reject_announcement`]."] + #[doc = "Remove the given announcement of a delegate."] + #[doc = ""] + #[doc = "May be called by a target (proxied) account to remove a call that one of their delegates"] + #[doc = "(`delegate`) has announced they want to execute. The deposit is returned."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `delegate`: The account that previously announced the call."] + #[doc = "- `call_hash`: The hash of the call to be made."] pub struct RejectAnnouncement { pub delegate: reject_announcement::Delegate, pub call_hash: reject_announcement::CallHash, @@ -22998,7 +26766,17 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::proxy_announced`]."] + #[doc = "Dispatch the given `call` from an account that the sender is authorized for through"] + #[doc = "`add_proxy`."] + #[doc = ""] + #[doc = "Removes any corresponding announcement(s)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] + #[doc = "- `call`: The call to be made by the `real` account."] pub struct ProxyAnnounced { pub delegate: proxy_announced::Delegate, pub real: proxy_announced::Real, @@ -23026,7 +26804,15 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::proxy`]."] + #[doc = "Dispatch the given `call` from an account that the sender is authorised for through"] + #[doc = "`add_proxy`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] + #[doc = "- `call`: The call to be made by the `real` account."] pub fn proxy( &self, real: types::proxy::Real, @@ -23043,13 +26829,21 @@ pub mod api { call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 98u8, 141u8, 93u8, 220u8, 59u8, 37u8, 195u8, 192u8, 188u8, 135u8, - 200u8, 219u8, 164u8, 53u8, 109u8, 30u8, 116u8, 248u8, 13u8, 14u8, 99u8, - 128u8, 30u8, 33u8, 242u8, 89u8, 73u8, 25u8, 198u8, 19u8, 252u8, 157u8, + 151u8, 61u8, 182u8, 254u8, 214u8, 255u8, 157u8, 170u8, 205u8, 166u8, + 16u8, 85u8, 215u8, 35u8, 104u8, 92u8, 88u8, 4u8, 160u8, 254u8, 208u8, + 165u8, 50u8, 41u8, 63u8, 18u8, 203u8, 223u8, 195u8, 37u8, 104u8, 113u8, ], ) } - #[doc = "See [`Pallet::add_proxy`]."] + #[doc = "Register a proxy account for the sender that is able to make calls on its behalf."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `proxy`: The account that the `caller` would like to make a proxy."] + #[doc = "- `proxy_type`: The permissions allowed for this proxy account."] + #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] + #[doc = "zero."] pub fn add_proxy( &self, delegate: types::add_proxy::Delegate, @@ -23073,7 +26867,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_proxy`]."] + #[doc = "Unregister a proxy account for the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `proxy`: The account that the `caller` would like to remove as a proxy."] + #[doc = "- `proxy_type`: The permissions currently enabled for the removed proxy account."] pub fn remove_proxy( &self, delegate: types::remove_proxy::Delegate, @@ -23096,7 +26896,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_proxies`]."] + #[doc = "Unregister all proxy accounts for the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "WARNING: This may be called on accounts created by `pure`, however if done, then"] + #[doc = "the unreserved fees will be inaccessible. **All access to this account will be lost.**"] pub fn remove_proxies( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -23113,7 +26918,24 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::create_pure`]."] + #[doc = "Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and"] + #[doc = "initialize it with a proxy of `proxy_type` for `origin` sender."] + #[doc = ""] + #[doc = "Requires a `Signed` origin."] + #[doc = ""] + #[doc = "- `proxy_type`: The type of the proxy that the sender will be registered as over the"] + #[doc = "new account. This will almost always be the most permissive `ProxyType` possible to"] + #[doc = "allow for maximum flexibility."] + #[doc = "- `index`: A disambiguation index, in case this is called multiple times in the same"] + #[doc = "transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just"] + #[doc = "want to use `0`."] + #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] + #[doc = "zero."] + #[doc = ""] + #[doc = "Fails with `Duplicate` if this has already been called in this transaction, from the"] + #[doc = "same sender, with the same parameters."] + #[doc = ""] + #[doc = "Fails if there are insufficient funds to pay for deposit."] pub fn create_pure( &self, proxy_type: types::create_pure::ProxyType, @@ -23136,7 +26958,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::kill_pure`]."] + #[doc = "Removes a previously spawned pure proxy."] + #[doc = ""] + #[doc = "WARNING: **All access to this account will be lost.** Any funds held in it will be"] + #[doc = "inaccessible."] + #[doc = ""] + #[doc = "Requires a `Signed` origin, and the sender account must have been created by a call to"] + #[doc = "`pure` with corresponding parameters."] + #[doc = ""] + #[doc = "- `spawner`: The account that originally called `pure` to create this account."] + #[doc = "- `index`: The disambiguation index originally passed to `pure`. Probably `0`."] + #[doc = "- `proxy_type`: The proxy type originally passed to `pure`."] + #[doc = "- `height`: The height of the chain when the call to `pure` was processed."] + #[doc = "- `ext_index`: The extrinsic index in which the call to `pure` was processed."] + #[doc = ""] + #[doc = "Fails with `NoPermission` in case the caller is not a previously created pure"] + #[doc = "account whose `pure` call has corresponding parameters."] pub fn kill_pure( &self, spawner: types::kill_pure::Spawner, @@ -23163,7 +27000,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::announce`]."] + #[doc = "Publish the hash of a proxy-call that will be made in the future."] + #[doc = ""] + #[doc = "This must be called some number of blocks before the corresponding `proxy` is attempted"] + #[doc = "if the delay associated with the proxy relationship is greater than zero."] + #[doc = ""] + #[doc = "No more than `MaxPending` announcements may be made at any one time."] + #[doc = ""] + #[doc = "This will take a deposit of `AnnouncementDepositFactor` as well as"] + #[doc = "`AnnouncementDepositBase` if there are no other pending announcements."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a proxy of `real`."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] pub fn announce( &self, real: types::announce::Real, @@ -23182,7 +27033,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_announcement`]."] + #[doc = "Remove a given announcement."] + #[doc = ""] + #[doc = "May be called by a proxy account to remove a call they previously announced and return"] + #[doc = "the deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] pub fn remove_announcement( &self, real: types::remove_announcement::Real, @@ -23200,7 +27060,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::reject_announcement`]."] + #[doc = "Remove the given announcement of a delegate."] + #[doc = ""] + #[doc = "May be called by a target (proxied) account to remove a call that one of their delegates"] + #[doc = "(`delegate`) has announced they want to execute. The deposit is returned."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `delegate`: The account that previously announced the call."] + #[doc = "- `call_hash`: The hash of the call to be made."] pub fn reject_announcement( &self, delegate: types::reject_announcement::Delegate, @@ -23221,7 +27090,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::proxy_announced`]."] + #[doc = "Dispatch the given `call` from an account that the sender is authorized for through"] + #[doc = "`add_proxy`."] + #[doc = ""] + #[doc = "Removes any corresponding announcement(s)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] + #[doc = "- `call`: The call to be made by the `real` account."] pub fn proxy_announced( &self, delegate: types::proxy_announced::Delegate, @@ -23240,9 +27119,10 @@ pub mod api { call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 26u8, 255u8, 179u8, 183u8, 103u8, 89u8, 89u8, 142u8, 60u8, 152u8, 25u8, - 111u8, 125u8, 218u8, 47u8, 141u8, 211u8, 194u8, 193u8, 46u8, 34u8, - 134u8, 79u8, 218u8, 94u8, 45u8, 203u8, 17u8, 82u8, 3u8, 49u8, 217u8, + 164u8, 188u8, 93u8, 24u8, 109u8, 198u8, 136u8, 195u8, 61u8, 143u8, + 89u8, 149u8, 90u8, 197u8, 3u8, 157u8, 16u8, 188u8, 236u8, 229u8, 125u8, + 171u8, 26u8, 232u8, 215u8, 66u8, 228u8, 216u8, 89u8, 254u8, 214u8, + 73u8, ], ) } @@ -23667,7 +27547,18 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::as_multi_threshold_1`]."] + #[doc = "Immediately dispatch a multi-signature call using a single approval from the caller."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `other_signatories`: The accounts (other than the sender) who are part of the"] + #[doc = "multi-signature, but do not participate in the approval process."] + #[doc = "- `call`: The call to be executed."] + #[doc = ""] + #[doc = "Result is equivalent to the dispatched result."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "O(Z + C) where Z is the length of the call and C its execution weight."] pub struct AsMultiThreshold1 { pub other_signatories: as_multi_threshold1::OtherSignatories, pub call: @@ -23698,7 +27589,45 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::as_multi`]."] + #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] + #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] + #[doc = ""] + #[doc = "If there are enough, then dispatch the call."] + #[doc = ""] + #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] + #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] + #[doc = "is cancelled."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] + #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] + #[doc = "transaction index) of the first approval transaction."] + #[doc = "- `call`: The call to be executed."] + #[doc = ""] + #[doc = "NOTE: Unless this is the final approval, you will generally want to use"] + #[doc = "`approve_as_multi` instead, since it only requires a hash of the call."] + #[doc = ""] + #[doc = "Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise"] + #[doc = "on success, result is `Ok` and the result from the interior call, if it was executed,"] + #[doc = "may be found in the deposited `MultisigExecuted` event."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S + Z + Call)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] + #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] + #[doc = "- One event."] + #[doc = "- The weight of the `call`."] + #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] + #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] pub struct AsMulti { pub threshold: as_multi::Threshold, pub other_signatories: as_multi::OtherSignatories, @@ -23736,7 +27665,36 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::approve_as_multi`]."] + #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] + #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] + #[doc = ""] + #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] + #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] + #[doc = "is cancelled."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] + #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] + #[doc = "transaction index) of the first approval transaction."] + #[doc = "- `call_hash`: The hash of the call to be executed."] + #[doc = ""] + #[doc = "NOTE: If this is the final approval, you will want to use `as_multi` instead."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] + #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] + #[doc = "- One event."] + #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] + #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] pub struct ApproveAsMulti { pub threshold: approve_as_multi::Threshold, pub other_signatories: approve_as_multi::OtherSignatories, @@ -23774,7 +27732,27 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::cancel_as_multi`]."] + #[doc = "Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously"] + #[doc = "for this operation will be unreserved on success."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `timepoint`: The timepoint (block number and transaction index) of the first approval"] + #[doc = "transaction for this dispatch."] + #[doc = "- `call_hash`: The hash of the call to be executed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- One event."] + #[doc = "- I/O: 1 read `O(S)`, one remove."] + #[doc = "- Storage: removes one item."] pub struct CancelAsMulti { pub threshold: cancel_as_multi::Threshold, pub other_signatories: cancel_as_multi::OtherSignatories, @@ -23798,7 +27776,18 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::as_multi_threshold_1`]."] + #[doc = "Immediately dispatch a multi-signature call using a single approval from the caller."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `other_signatories`: The accounts (other than the sender) who are part of the"] + #[doc = "multi-signature, but do not participate in the approval process."] + #[doc = "- `call`: The call to be executed."] + #[doc = ""] + #[doc = "Result is equivalent to the dispatched result."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "O(Z + C) where Z is the length of the call and C its execution weight."] pub fn as_multi_threshold_1( &self, other_signatories: types::as_multi_threshold1::OtherSignatories, @@ -23813,14 +27802,51 @@ pub mod api { call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 193u8, 159u8, 235u8, 139u8, 215u8, 236u8, 234u8, 123u8, 30u8, 127u8, - 92u8, 58u8, 140u8, 165u8, 232u8, 42u8, 90u8, 11u8, 176u8, 101u8, 211u8, - 245u8, 255u8, 57u8, 203u8, 18u8, 250u8, 227u8, 188u8, 229u8, 241u8, - 230u8, + 112u8, 104u8, 247u8, 123u8, 82u8, 158u8, 96u8, 168u8, 40u8, 201u8, + 236u8, 10u8, 9u8, 13u8, 98u8, 210u8, 227u8, 241u8, 179u8, 168u8, 210u8, + 15u8, 194u8, 175u8, 2u8, 216u8, 253u8, 160u8, 164u8, 29u8, 30u8, 18u8, ], ) } - #[doc = "See [`Pallet::as_multi`]."] + #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] + #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] + #[doc = ""] + #[doc = "If there are enough, then dispatch the call."] + #[doc = ""] + #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] + #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] + #[doc = "is cancelled."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] + #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] + #[doc = "transaction index) of the first approval transaction."] + #[doc = "- `call`: The call to be executed."] + #[doc = ""] + #[doc = "NOTE: Unless this is the final approval, you will generally want to use"] + #[doc = "`approve_as_multi` instead, since it only requires a hash of the call."] + #[doc = ""] + #[doc = "Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise"] + #[doc = "on success, result is `Ok` and the result from the interior call, if it was executed,"] + #[doc = "may be found in the deposited `MultisigExecuted` event."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S + Z + Call)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] + #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] + #[doc = "- One event."] + #[doc = "- The weight of the `call`."] + #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] + #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] pub fn as_multi( &self, threshold: types::as_multi::Threshold, @@ -23841,14 +27867,42 @@ pub mod api { max_weight, }, [ - 101u8, 52u8, 26u8, 235u8, 226u8, 182u8, 13u8, 173u8, 150u8, 137u8, - 150u8, 147u8, 155u8, 127u8, 99u8, 254u8, 187u8, 27u8, 109u8, 227u8, - 158u8, 249u8, 19u8, 33u8, 216u8, 156u8, 223u8, 174u8, 89u8, 95u8, 91u8, - 208u8, + 21u8, 194u8, 178u8, 33u8, 212u8, 247u8, 75u8, 83u8, 32u8, 76u8, 195u8, + 10u8, 150u8, 206u8, 46u8, 26u8, 146u8, 95u8, 217u8, 20u8, 59u8, 98u8, + 120u8, 29u8, 59u8, 57u8, 41u8, 192u8, 71u8, 114u8, 49u8, 165u8, ], ) } - #[doc = "See [`Pallet::approve_as_multi`]."] + #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] + #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] + #[doc = ""] + #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] + #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] + #[doc = "is cancelled."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] + #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] + #[doc = "transaction index) of the first approval transaction."] + #[doc = "- `call_hash`: The hash of the call to be executed."] + #[doc = ""] + #[doc = "NOTE: If this is the final approval, you will want to use `as_multi` instead."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] + #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] + #[doc = "- One event."] + #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] + #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] pub fn approve_as_multi( &self, threshold: types::approve_as_multi::Threshold, @@ -23875,7 +27929,27 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel_as_multi`]."] + #[doc = "Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously"] + #[doc = "for this operation will be unreserved on success."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `timepoint`: The timepoint (block number and transaction index) of the first approval"] + #[doc = "transaction for this dispatch."] + #[doc = "- `call_hash`: The hash of the call to be executed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- One event."] + #[doc = "- I/O: 1 read `O(S)`, one remove."] + #[doc = "- Storage: removes one item."] pub fn cancel_as_multi( &self, threshold: types::cancel_as_multi::Threshold, @@ -24216,7 +28290,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::note_preimage`]."] + #[doc = "Register a preimage on-chain."] + #[doc = ""] + #[doc = "If the preimage was previously requested, no fees or deposits are taken for providing"] + #[doc = "the preimage. Otherwise, a deposit is taken proportional to the size of the preimage."] pub struct NotePreimage { pub bytes: note_preimage::Bytes, } @@ -24243,7 +28320,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::unnote_preimage`]."] + #[doc = "Clear an unrequested preimage from the runtime storage."] + #[doc = ""] + #[doc = "If `len` is provided, then it will be a much cheaper operation."] + #[doc = ""] + #[doc = "- `hash`: The hash of the preimage to be removed from the store."] + #[doc = "- `len`: The length of the preimage of `hash`."] pub struct UnnotePreimage { pub hash: unnote_preimage::Hash, } @@ -24269,7 +28351,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::request_preimage`]."] + #[doc = "Request a preimage be uploaded to the chain without paying any fees or deposits."] + #[doc = ""] + #[doc = "If the preimage requests has already been provided on-chain, we unreserve any deposit"] + #[doc = "a user may have paid, and take the control of the preimage out of their hands."] pub struct RequestPreimage { pub hash: request_preimage::Hash, } @@ -24295,7 +28380,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::unrequest_preimage`]."] + #[doc = "Clear a previously made request for a preimage."] + #[doc = ""] + #[doc = "NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`."] pub struct UnrequestPreimage { pub hash: unrequest_preimage::Hash, } @@ -24321,7 +28408,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::ensure_updated`]."] + #[doc = "Ensure that the a bulk of pre-images is upgraded."] + #[doc = ""] + #[doc = "The caller pays no fee if at least 90% of pre-images were successfully updated."] pub struct EnsureUpdated { pub hashes: ensure_updated::Hashes, } @@ -24338,7 +28427,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::note_preimage`]."] + #[doc = "Register a preimage on-chain."] + #[doc = ""] + #[doc = "If the preimage was previously requested, no fees or deposits are taken for providing"] + #[doc = "the preimage. Otherwise, a deposit is taken proportional to the size of the preimage."] pub fn note_preimage( &self, bytes: types::note_preimage::Bytes, @@ -24355,7 +28447,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unnote_preimage`]."] + #[doc = "Clear an unrequested preimage from the runtime storage."] + #[doc = ""] + #[doc = "If `len` is provided, then it will be a much cheaper operation."] + #[doc = ""] + #[doc = "- `hash`: The hash of the preimage to be removed from the store."] + #[doc = "- `len`: The length of the preimage of `hash`."] pub fn unnote_preimage( &self, hash: types::unnote_preimage::Hash, @@ -24373,7 +28470,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::request_preimage`]."] + #[doc = "Request a preimage be uploaded to the chain without paying any fees or deposits."] + #[doc = ""] + #[doc = "If the preimage requests has already been provided on-chain, we unreserve any deposit"] + #[doc = "a user may have paid, and take the control of the preimage out of their hands."] pub fn request_preimage( &self, hash: types::request_preimage::Hash, @@ -24390,7 +28490,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unrequest_preimage`]."] + #[doc = "Clear a previously made request for a preimage."] + #[doc = ""] + #[doc = "NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`."] pub fn unrequest_preimage( &self, hash: types::unrequest_preimage::Hash, @@ -24408,7 +28510,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::ensure_updated`]."] + #[doc = "Ensure that the a bulk of pre-images is upgraded."] + #[doc = ""] + #[doc = "The caller pays no fee if at least 90% of pre-images were successfully updated."] pub fn ensure_updated( &self, hashes: types::ensure_updated::Hashes, @@ -24522,7 +28626,7 @@ pub mod api { pub mod preimage_for { use super::runtime_types; pub type PreimageFor = - runtime_types::bounded_collections::bounded_vec::BoundedVec5< + runtime_types::bounded_collections::bounded_vec::BoundedVec2< ::core::primitive::u8, >; pub type Param0 = ::subxt::ext::subxt_core::utils::H256; @@ -24741,7 +28845,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::create`]."] + #[doc = "Initialize a conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] pub struct Create { pub asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box, pub rate: create::Rate, @@ -24770,7 +28877,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::update`]."] + #[doc = "Update the conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] pub struct Update { pub asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box, pub rate: update::Rate, @@ -24799,7 +28909,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::remove`]."] + #[doc = "Remove an existing conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] pub struct Remove { pub asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box, } @@ -24815,7 +28928,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::create`]."] + #[doc = "Initialize a conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] pub fn create( &self, asset_kind: types::create::AssetKind, @@ -24832,14 +28948,16 @@ pub mod api { rate, }, [ - 154u8, 152u8, 38u8, 160u8, 110u8, 48u8, 11u8, 80u8, 92u8, 50u8, 177u8, - 170u8, 43u8, 6u8, 192u8, 234u8, 105u8, 114u8, 165u8, 178u8, 173u8, - 134u8, 92u8, 233u8, 123u8, 191u8, 176u8, 154u8, 222u8, 224u8, 32u8, - 183u8, + 163u8, 173u8, 223u8, 197u8, 42u8, 251u8, 151u8, 159u8, 252u8, 132u8, + 225u8, 224u8, 207u8, 127u8, 38u8, 0u8, 101u8, 46u8, 29u8, 65u8, 2u8, + 241u8, 3u8, 79u8, 218u8, 10u8, 159u8, 122u8, 48u8, 7u8, 225u8, 103u8, ], ) } - #[doc = "See [`Pallet::update`]."] + #[doc = "Update the conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] pub fn update( &self, asset_kind: types::update::AssetKind, @@ -24856,14 +28974,16 @@ pub mod api { rate, }, [ - 188u8, 71u8, 197u8, 156u8, 105u8, 63u8, 11u8, 90u8, 124u8, 227u8, - 146u8, 78u8, 93u8, 216u8, 100u8, 41u8, 128u8, 115u8, 66u8, 243u8, - 198u8, 61u8, 115u8, 30u8, 170u8, 218u8, 254u8, 203u8, 37u8, 141u8, - 67u8, 179u8, + 21u8, 51u8, 198u8, 111u8, 185u8, 155u8, 215u8, 34u8, 5u8, 135u8, 138u8, + 77u8, 76u8, 158u8, 63u8, 240u8, 117u8, 39u8, 83u8, 146u8, 70u8, 136u8, + 61u8, 159u8, 30u8, 66u8, 85u8, 41u8, 122u8, 174u8, 25u8, 49u8, ], ) } - #[doc = "See [`Pallet::remove`]."] + #[doc = "Remove an existing conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] pub fn remove( &self, asset_kind: types::remove::AssetKind, @@ -24878,10 +28998,10 @@ pub mod api { ), }, [ - 229u8, 203u8, 96u8, 158u8, 162u8, 236u8, 80u8, 239u8, 106u8, 193u8, - 85u8, 234u8, 99u8, 87u8, 214u8, 214u8, 157u8, 55u8, 70u8, 91u8, 9u8, - 187u8, 105u8, 99u8, 134u8, 181u8, 56u8, 212u8, 152u8, 136u8, 100u8, - 32u8, + 205u8, 34u8, 63u8, 131u8, 204u8, 76u8, 186u8, 233u8, 160u8, 45u8, + 231u8, 159u8, 186u8, 60u8, 97u8, 218u8, 174u8, 144u8, 106u8, 58u8, + 69u8, 23u8, 244u8, 129u8, 19u8, 250u8, 16u8, 99u8, 165u8, 165u8, 101u8, + 18u8, ], ) } @@ -24995,9 +29115,10 @@ pub mod api { "ConversionRateToNative", (), [ - 211u8, 210u8, 178u8, 27u8, 157u8, 1u8, 68u8, 252u8, 84u8, 174u8, 141u8, - 185u8, 177u8, 39u8, 49u8, 35u8, 65u8, 254u8, 204u8, 246u8, 132u8, 59u8, - 190u8, 228u8, 135u8, 237u8, 161u8, 35u8, 21u8, 114u8, 88u8, 174u8, + 230u8, 127u8, 110u8, 126u8, 79u8, 168u8, 134u8, 97u8, 195u8, 105u8, + 16u8, 57u8, 197u8, 104u8, 87u8, 144u8, 83u8, 188u8, 85u8, 253u8, 230u8, + 194u8, 183u8, 235u8, 152u8, 222u8, 40u8, 20u8, 135u8, 98u8, 140u8, + 108u8, ], ) } @@ -25023,9 +29144,10 @@ pub mod api { _0.borrow(), ), [ - 211u8, 210u8, 178u8, 27u8, 157u8, 1u8, 68u8, 252u8, 84u8, 174u8, 141u8, - 185u8, 177u8, 39u8, 49u8, 35u8, 65u8, 254u8, 204u8, 246u8, 132u8, 59u8, - 190u8, 228u8, 135u8, 237u8, 161u8, 35u8, 21u8, 114u8, 88u8, 174u8, + 230u8, 127u8, 110u8, 126u8, 79u8, 168u8, 134u8, 97u8, 195u8, 105u8, + 16u8, 57u8, 197u8, 104u8, 87u8, 144u8, 83u8, 188u8, 85u8, 253u8, 230u8, + 194u8, 183u8, 235u8, 152u8, 222u8, 40u8, 20u8, 135u8, 98u8, 140u8, + 108u8, ], ) } @@ -25059,7 +29181,18 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::propose_bounty`]."] + #[doc = "Propose a new bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Payment: `TipReportDepositBase` will be reserved from the origin account, as well as"] + #[doc = "`DataDepositPerByte` for each byte in `reason`. It will be unreserved upon approval,"] + #[doc = "or slashed when rejected."] + #[doc = ""] + #[doc = "- `curator`: The curator account whom will manage this bounty."] + #[doc = "- `fee`: The curator fee."] + #[doc = "- `value`: The total payment amount of this bounty, curator fee included."] + #[doc = "- `description`: The description of this bounty."] pub struct ProposeBounty { #[codec(compact)] pub value: propose_bounty::Value, @@ -25089,7 +29222,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::approve_bounty`]."] + #[doc = "Approve a bounty proposal. At a later time, the bounty will be funded and become active"] + #[doc = "and the original deposit will be returned."] + #[doc = ""] + #[doc = "May only be called from `T::SpendOrigin`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct ApproveBounty { #[codec(compact)] pub bounty_id: approve_bounty::BountyId, @@ -25116,7 +29255,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::propose_curator`]."] + #[doc = "Propose a curator to a funded bounty."] + #[doc = ""] + #[doc = "May only be called from `T::SpendOrigin`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct ProposeCurator { #[codec(compact)] pub bounty_id: propose_curator::BountyId, @@ -25151,7 +29295,23 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::unassign_curator`]."] + #[doc = "Unassign curator from a bounty."] + #[doc = ""] + #[doc = "This function can only be called by the `RejectOrigin` a signed origin."] + #[doc = ""] + #[doc = "If this function is called by the `RejectOrigin`, we assume that the curator is"] + #[doc = "malicious or inactive. As a result, we will slash the curator when possible."] + #[doc = ""] + #[doc = "If the origin is the curator, we take this as a sign they are unable to do their job and"] + #[doc = "they willingly give up. We could slash them, but for now we allow them to recover their"] + #[doc = "deposit and exit without issue. (We may want to change this if it is abused.)"] + #[doc = ""] + #[doc = "Finally, the origin can be anyone if and only if the curator is \"inactive\". This allows"] + #[doc = "anyone in the community to call out that a curator is not doing their due diligence, and"] + #[doc = "we should pick a new curator. In this case the curator should also be slashed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct UnassignCurator { #[codec(compact)] pub bounty_id: unassign_curator::BountyId, @@ -25178,7 +29338,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::accept_curator`]."] + #[doc = "Accept the curator role for a bounty."] + #[doc = "A deposit will be reserved from curator and refund upon successful payout."] + #[doc = ""] + #[doc = "May only be called from the curator."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct AcceptCurator { #[codec(compact)] pub bounty_id: accept_curator::BountyId, @@ -25205,7 +29371,16 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::award_bounty`]."] + #[doc = "Award bounty to a beneficiary account. The beneficiary will be able to claim the funds"] + #[doc = "after a delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to award."] + #[doc = "- `beneficiary`: The beneficiary account whom will receive the payout."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct AwardBounty { #[codec(compact)] pub bounty_id: award_bounty::BountyId, @@ -25237,7 +29412,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::claim_bounty`]."] + #[doc = "Claim the payout from an awarded bounty after payout delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the beneficiary of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to claim."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct ClaimBounty { #[codec(compact)] pub bounty_id: claim_bounty::BountyId, @@ -25264,7 +29446,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::close_bounty`]."] + #[doc = "Cancel a proposed or active bounty. All the funds will be sent to treasury and"] + #[doc = "the curator deposit will be unreserved if possible."] + #[doc = ""] + #[doc = "Only `T::RejectOrigin` is able to cancel a bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to cancel."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct CloseBounty { #[codec(compact)] pub bounty_id: close_bounty::BountyId, @@ -25291,7 +29481,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::extend_bounty_expiry`]."] + #[doc = "Extend the expiry time of an active bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to extend."] + #[doc = "- `remark`: additional information."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub struct ExtendBountyExpiry { #[codec(compact)] pub bounty_id: extend_bounty_expiry::BountyId, @@ -25310,7 +29508,18 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::propose_bounty`]."] + #[doc = "Propose a new bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Payment: `TipReportDepositBase` will be reserved from the origin account, as well as"] + #[doc = "`DataDepositPerByte` for each byte in `reason`. It will be unreserved upon approval,"] + #[doc = "or slashed when rejected."] + #[doc = ""] + #[doc = "- `curator`: The curator account whom will manage this bounty."] + #[doc = "- `fee`: The curator fee."] + #[doc = "- `value`: The total payment amount of this bounty, curator fee included."] + #[doc = "- `description`: The description of this bounty."] pub fn propose_bounty( &self, value: types::propose_bounty::Value, @@ -25328,7 +29537,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::approve_bounty`]."] + #[doc = "Approve a bounty proposal. At a later time, the bounty will be funded and become active"] + #[doc = "and the original deposit will be returned."] + #[doc = ""] + #[doc = "May only be called from `T::SpendOrigin`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn approve_bounty( &self, bounty_id: types::approve_bounty::BountyId, @@ -25346,7 +29561,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::propose_curator`]."] + #[doc = "Propose a curator to a funded bounty."] + #[doc = ""] + #[doc = "May only be called from `T::SpendOrigin`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn propose_curator( &self, bounty_id: types::propose_curator::BountyId, @@ -25369,7 +29589,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unassign_curator`]."] + #[doc = "Unassign curator from a bounty."] + #[doc = ""] + #[doc = "This function can only be called by the `RejectOrigin` a signed origin."] + #[doc = ""] + #[doc = "If this function is called by the `RejectOrigin`, we assume that the curator is"] + #[doc = "malicious or inactive. As a result, we will slash the curator when possible."] + #[doc = ""] + #[doc = "If the origin is the curator, we take this as a sign they are unable to do their job and"] + #[doc = "they willingly give up. We could slash them, but for now we allow them to recover their"] + #[doc = "deposit and exit without issue. (We may want to change this if it is abused.)"] + #[doc = ""] + #[doc = "Finally, the origin can be anyone if and only if the curator is \"inactive\". This allows"] + #[doc = "anyone in the community to call out that a curator is not doing their due diligence, and"] + #[doc = "we should pick a new curator. In this case the curator should also be slashed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn unassign_curator( &self, bounty_id: types::unassign_curator::BountyId, @@ -25387,7 +29623,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::accept_curator`]."] + #[doc = "Accept the curator role for a bounty."] + #[doc = "A deposit will be reserved from curator and refund upon successful payout."] + #[doc = ""] + #[doc = "May only be called from the curator."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn accept_curator( &self, bounty_id: types::accept_curator::BountyId, @@ -25404,7 +29646,16 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::award_bounty`]."] + #[doc = "Award bounty to a beneficiary account. The beneficiary will be able to claim the funds"] + #[doc = "after a delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to award."] + #[doc = "- `beneficiary`: The beneficiary account whom will receive the payout."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn award_bounty( &self, bounty_id: types::award_bounty::BountyId, @@ -25425,7 +29676,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::claim_bounty`]."] + #[doc = "Claim the payout from an awarded bounty after payout delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the beneficiary of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to claim."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn claim_bounty( &self, bounty_id: types::claim_bounty::BountyId, @@ -25443,7 +29701,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::close_bounty`]."] + #[doc = "Cancel a proposed or active bounty. All the funds will be sent to treasury and"] + #[doc = "the curator deposit will be unreserved if possible."] + #[doc = ""] + #[doc = "Only `T::RejectOrigin` is able to cancel a bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to cancel."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn close_bounty( &self, bounty_id: types::close_bounty::BountyId, @@ -25461,7 +29727,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::extend_bounty_expiry`]."] + #[doc = "Extend the expiry time of an active bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to extend."] + #[doc = "- `remark`: additional information."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] pub fn extend_bounty_expiry( &self, bounty_id: types::extend_bounty_expiry::BountyId, @@ -25761,7 +30035,7 @@ pub mod api { pub mod bounty_descriptions { use super::runtime_types; pub type BountyDescriptions = - runtime_types::bounded_collections::bounded_vec::BoundedVec5< + runtime_types::bounded_collections::bounded_vec::BoundedVec2< ::core::primitive::u8, >; pub type Param0 = ::core::primitive::u32; @@ -26105,7 +30379,25 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::add_child_bounty`]."] + #[doc = "Add a new child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of parent"] + #[doc = "bounty and the parent bounty must be in \"active\" state."] + #[doc = ""] + #[doc = "Child-bounty gets added successfully & fund gets transferred from"] + #[doc = "parent bounty to child-bounty account, if parent bounty has enough"] + #[doc = "funds, else the call fails."] + #[doc = ""] + #[doc = "Upper bound to maximum number of active child bounties that can be"] + #[doc = "added are managed via runtime trait config"] + #[doc = "[`Config::MaxActiveChildBountyCount`]."] + #[doc = ""] + #[doc = "If the call is success, the status of child-bounty is updated to"] + #[doc = "\"Added\"."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty for which child-bounty is being added."] + #[doc = "- `value`: Value for executing the proposal."] + #[doc = "- `description`: Text description for the child-bounty."] pub struct AddChildBounty { #[codec(compact)] pub parent_bounty_id: add_child_bounty::ParentBountyId, @@ -26138,7 +30430,21 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::propose_curator`]."] + #[doc = "Propose curator for funded child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be curator of parent bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in \"Added\" state, for processing the call. And"] + #[doc = "state of child-bounty is moved to \"CuratorProposed\" on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "- `curator`: Address of child-bounty curator."] + #[doc = "- `fee`: payment fee to child-bounty curator for execution."] pub struct ProposeCurator { #[codec(compact)] pub parent_bounty_id: propose_curator::ParentBountyId, @@ -26176,7 +30482,25 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::accept_curator`]."] + #[doc = "Accept the curator role for the child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this"] + #[doc = "child-bounty."] + #[doc = ""] + #[doc = "A deposit will be reserved from the curator and refund upon"] + #[doc = "successful payout or cancellation."] + #[doc = ""] + #[doc = "Fee for curator is deducted from curator fee of parent bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in \"CuratorProposed\" state, for processing the"] + #[doc = "call. And state of child-bounty is moved to \"Active\" on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub struct AcceptCurator { #[codec(compact)] pub parent_bounty_id: accept_curator::ParentBountyId, @@ -26206,7 +30530,40 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::unassign_curator`]."] + #[doc = "Unassign curator from a child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call can be either `RejectOrigin`, or"] + #[doc = "the curator of the parent bounty, or any signed origin."] + #[doc = ""] + #[doc = "For the origin other than T::RejectOrigin and the child-bounty"] + #[doc = "curator, parent bounty must be in active state, for this call to"] + #[doc = "work. We allow child-bounty curator and T::RejectOrigin to execute"] + #[doc = "this call irrespective of the parent bounty state."] + #[doc = ""] + #[doc = "If this function is called by the `RejectOrigin` or the"] + #[doc = "parent bounty curator, we assume that the child-bounty curator is"] + #[doc = "malicious or inactive. As a result, child-bounty curator deposit is"] + #[doc = "slashed."] + #[doc = ""] + #[doc = "If the origin is the child-bounty curator, we take this as a sign"] + #[doc = "that they are unable to do their job, and are willingly giving up."] + #[doc = "We could slash the deposit, but for now we allow them to unreserve"] + #[doc = "their deposit and exit without issue. (We may want to change this if"] + #[doc = "it is abused.)"] + #[doc = ""] + #[doc = "Finally, the origin can be anyone iff the child-bounty curator is"] + #[doc = "\"inactive\". Expiry update due of parent bounty is used to estimate"] + #[doc = "inactive state of child-bounty curator."] + #[doc = ""] + #[doc = "This allows anyone in the community to call out that a child-bounty"] + #[doc = "curator is not doing their due diligence, and we should pick a new"] + #[doc = "one. In this case the child-bounty curator deposit is slashed."] + #[doc = ""] + #[doc = "State of child-bounty is moved to Added state on successful call"] + #[doc = "completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub struct UnassignCurator { #[codec(compact)] pub parent_bounty_id: unassign_curator::ParentBountyId, @@ -26236,7 +30593,23 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::award_child_bounty`]."] + #[doc = "Award child-bounty to a beneficiary."] + #[doc = ""] + #[doc = "The beneficiary will be able to claim the funds after a delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the parent curator or"] + #[doc = "curator of this child-bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in active state, for processing the call. And"] + #[doc = "state of child-bounty is moved to \"PendingPayout\" on successful call"] + #[doc = "completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "- `beneficiary`: Beneficiary account."] pub struct AwardChildBounty { #[codec(compact)] pub parent_bounty_id: award_child_bounty::ParentBountyId, @@ -26271,7 +30644,22 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::claim_child_bounty`]."] + #[doc = "Claim the payout from an awarded child-bounty after payout delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call may be any signed origin."] + #[doc = ""] + #[doc = "Call works independent of parent bounty state, No need for parent"] + #[doc = "bounty to be in active state."] + #[doc = ""] + #[doc = "The Beneficiary is paid out with agreed bounty value. Curator fee is"] + #[doc = "paid & curator deposit is unreserved."] + #[doc = ""] + #[doc = "Child-bounty must be in \"PendingPayout\" state, for processing the"] + #[doc = "call. And instance of child-bounty is removed from the state on"] + #[doc = "successful call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub struct ClaimChildBounty { #[codec(compact)] pub parent_bounty_id: claim_child_bounty::ParentBountyId, @@ -26301,7 +30689,28 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::close_child_bounty`]."] + #[doc = "Cancel a proposed or active child-bounty. Child-bounty account funds"] + #[doc = "are transferred to parent bounty account. The child-bounty curator"] + #[doc = "deposit may be unreserved if possible."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be either parent curator or"] + #[doc = "`T::RejectOrigin`."] + #[doc = ""] + #[doc = "If the state of child-bounty is `Active`, curator deposit is"] + #[doc = "unreserved."] + #[doc = ""] + #[doc = "If the state of child-bounty is `PendingPayout`, call fails &"] + #[doc = "returns `PendingPayout` error."] + #[doc = ""] + #[doc = "For the origin other than T::RejectOrigin, parent bounty must be in"] + #[doc = "active state, for this child-bounty call to work. For origin"] + #[doc = "T::RejectOrigin execution is forced."] + #[doc = ""] + #[doc = "Instance of child-bounty is removed from the state on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub struct CloseChildBounty { #[codec(compact)] pub parent_bounty_id: close_child_bounty::ParentBountyId, @@ -26320,7 +30729,25 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::add_child_bounty`]."] + #[doc = "Add a new child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of parent"] + #[doc = "bounty and the parent bounty must be in \"active\" state."] + #[doc = ""] + #[doc = "Child-bounty gets added successfully & fund gets transferred from"] + #[doc = "parent bounty to child-bounty account, if parent bounty has enough"] + #[doc = "funds, else the call fails."] + #[doc = ""] + #[doc = "Upper bound to maximum number of active child bounties that can be"] + #[doc = "added are managed via runtime trait config"] + #[doc = "[`Config::MaxActiveChildBountyCount`]."] + #[doc = ""] + #[doc = "If the call is success, the status of child-bounty is updated to"] + #[doc = "\"Added\"."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty for which child-bounty is being added."] + #[doc = "- `value`: Value for executing the proposal."] + #[doc = "- `description`: Text description for the child-bounty."] pub fn add_child_bounty( &self, parent_bounty_id: types::add_child_bounty::ParentBountyId, @@ -26344,7 +30771,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::propose_curator`]."] + #[doc = "Propose curator for funded child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be curator of parent bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in \"Added\" state, for processing the call. And"] + #[doc = "state of child-bounty is moved to \"CuratorProposed\" on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "- `curator`: Address of child-bounty curator."] + #[doc = "- `fee`: payment fee to child-bounty curator for execution."] pub fn propose_curator( &self, parent_bounty_id: types::propose_curator::ParentBountyId, @@ -26369,7 +30810,25 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::accept_curator`]."] + #[doc = "Accept the curator role for the child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this"] + #[doc = "child-bounty."] + #[doc = ""] + #[doc = "A deposit will be reserved from the curator and refund upon"] + #[doc = "successful payout or cancellation."] + #[doc = ""] + #[doc = "Fee for curator is deducted from curator fee of parent bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in \"CuratorProposed\" state, for processing the"] + #[doc = "call. And state of child-bounty is moved to \"Active\" on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub fn accept_curator( &self, parent_bounty_id: types::accept_curator::ParentBountyId, @@ -26391,7 +30850,40 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unassign_curator`]."] + #[doc = "Unassign curator from a child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call can be either `RejectOrigin`, or"] + #[doc = "the curator of the parent bounty, or any signed origin."] + #[doc = ""] + #[doc = "For the origin other than T::RejectOrigin and the child-bounty"] + #[doc = "curator, parent bounty must be in active state, for this call to"] + #[doc = "work. We allow child-bounty curator and T::RejectOrigin to execute"] + #[doc = "this call irrespective of the parent bounty state."] + #[doc = ""] + #[doc = "If this function is called by the `RejectOrigin` or the"] + #[doc = "parent bounty curator, we assume that the child-bounty curator is"] + #[doc = "malicious or inactive. As a result, child-bounty curator deposit is"] + #[doc = "slashed."] + #[doc = ""] + #[doc = "If the origin is the child-bounty curator, we take this as a sign"] + #[doc = "that they are unable to do their job, and are willingly giving up."] + #[doc = "We could slash the deposit, but for now we allow them to unreserve"] + #[doc = "their deposit and exit without issue. (We may want to change this if"] + #[doc = "it is abused.)"] + #[doc = ""] + #[doc = "Finally, the origin can be anyone iff the child-bounty curator is"] + #[doc = "\"inactive\". Expiry update due of parent bounty is used to estimate"] + #[doc = "inactive state of child-bounty curator."] + #[doc = ""] + #[doc = "This allows anyone in the community to call out that a child-bounty"] + #[doc = "curator is not doing their due diligence, and we should pick a new"] + #[doc = "one. In this case the child-bounty curator deposit is slashed."] + #[doc = ""] + #[doc = "State of child-bounty is moved to Added state on successful call"] + #[doc = "completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub fn unassign_curator( &self, parent_bounty_id: types::unassign_curator::ParentBountyId, @@ -26413,7 +30905,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::award_child_bounty`]."] + #[doc = "Award child-bounty to a beneficiary."] + #[doc = ""] + #[doc = "The beneficiary will be able to claim the funds after a delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the parent curator or"] + #[doc = "curator of this child-bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in active state, for processing the call. And"] + #[doc = "state of child-bounty is moved to \"PendingPayout\" on successful call"] + #[doc = "completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "- `beneficiary`: Beneficiary account."] pub fn award_child_bounty( &self, parent_bounty_id: types::award_child_bounty::ParentBountyId, @@ -26436,7 +30944,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::claim_child_bounty`]."] + #[doc = "Claim the payout from an awarded child-bounty after payout delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call may be any signed origin."] + #[doc = ""] + #[doc = "Call works independent of parent bounty state, No need for parent"] + #[doc = "bounty to be in active state."] + #[doc = ""] + #[doc = "The Beneficiary is paid out with agreed bounty value. Curator fee is"] + #[doc = "paid & curator deposit is unreserved."] + #[doc = ""] + #[doc = "Child-bounty must be in \"PendingPayout\" state, for processing the"] + #[doc = "call. And instance of child-bounty is removed from the state on"] + #[doc = "successful call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub fn claim_child_bounty( &self, parent_bounty_id: types::claim_child_bounty::ParentBountyId, @@ -26457,7 +30980,28 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::close_child_bounty`]."] + #[doc = "Cancel a proposed or active child-bounty. Child-bounty account funds"] + #[doc = "are transferred to parent bounty account. The child-bounty curator"] + #[doc = "deposit may be unreserved if possible."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be either parent curator or"] + #[doc = "`T::RejectOrigin`."] + #[doc = ""] + #[doc = "If the state of child-bounty is `Active`, curator deposit is"] + #[doc = "unreserved."] + #[doc = ""] + #[doc = "If the state of child-bounty is `PendingPayout`, call fails &"] + #[doc = "returns `PendingPayout` error."] + #[doc = ""] + #[doc = "For the origin other than T::RejectOrigin, parent bounty must be in"] + #[doc = "active state, for this child-bounty call to work. For origin"] + #[doc = "T::RejectOrigin execution is forced."] + #[doc = ""] + #[doc = "Instance of child-bounty is removed from the state on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] pub fn close_child_bounty( &self, parent_bounty_id: types::close_child_bounty::ParentBountyId, @@ -26613,7 +31157,7 @@ pub mod api { pub mod child_bounty_descriptions { use super::runtime_types; pub type ChildBountyDescriptions = - runtime_types::bounded_collections::bounded_vec::BoundedVec5< + runtime_types::bounded_collections::bounded_vec::BoundedVec2< ::core::primitive::u8, >; pub type Param0 = ::core::primitive::u32; @@ -26946,7 +31490,17 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::place_bid`]."] + #[doc = "Place a bid."] + #[doc = ""] + #[doc = "Origin must be Signed, and account must have at least `amount` in free balance."] + #[doc = ""] + #[doc = "- `amount`: The amount of the bid; these funds will be reserved, and if/when"] + #[doc = " consolidated, removed. Must be at least `MinBid`."] + #[doc = "- `duration`: The number of periods before which the newly consolidated bid may be"] + #[doc = " thawed. Must be greater than 1 and no more than `QueueCount`."] + #[doc = ""] + #[doc = "Complexities:"] + #[doc = "- `Queues[duration].len()` (just take max)."] pub struct PlaceBid { #[codec(compact)] pub amount: place_bid::Amount, @@ -26975,7 +31529,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::retract_bid`]."] + #[doc = "Retract a previously placed bid."] + #[doc = ""] + #[doc = "Origin must be Signed, and the account should have previously issued a still-active bid"] + #[doc = "of `amount` for `duration`."] + #[doc = ""] + #[doc = "- `amount`: The amount of the previous bid."] + #[doc = "- `duration`: The duration of the previous bid."] pub struct RetractBid { #[codec(compact)] pub amount: retract_bid::Amount, @@ -27004,7 +31564,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::fund_deficit`]."] + #[doc = "Ensure we have sufficient funding for all potential payouts."] + #[doc = ""] + #[doc = "- `origin`: Must be accepted by `FundOrigin`."] pub struct FundDeficit; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for FundDeficit { const PALLET: &'static str = "Nis"; @@ -27024,7 +31586,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::thaw_private`]."] + #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] + #[doc = "the account of the owner."] + #[doc = ""] + #[doc = "- `origin`: Must be Signed and the account must be the owner of the receipt `index` as"] + #[doc = " well as any fungible counterpart."] + #[doc = "- `index`: The index of the receipt."] + #[doc = "- `portion`: If `Some`, then only the given portion of the receipt should be thawed. If"] + #[doc = " `None`, then all of it should be."] pub struct ThawPrivate { #[codec(compact)] pub index: thaw_private::Index, @@ -27055,7 +31624,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::thaw_communal`]."] + #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] + #[doc = "the account of the owner."] + #[doc = ""] + #[doc = "- `origin`: Must be Signed and the account must be the owner of the fungible counterpart"] + #[doc = " for receipt `index`."] + #[doc = "- `index`: The index of the receipt."] pub struct ThawCommunal { #[codec(compact)] pub index: thaw_communal::Index, @@ -27082,7 +31656,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::communify`]."] + #[doc = "Make a private receipt communal and create fungible counterparts for its owner."] pub struct Communify { #[codec(compact)] pub index: communify::Index, @@ -27109,7 +31683,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::privatize`]."] + #[doc = "Make a communal receipt private and burn fungible counterparts from its owner."] pub struct Privatize { #[codec(compact)] pub index: privatize::Index, @@ -27125,7 +31699,17 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::place_bid`]."] + #[doc = "Place a bid."] + #[doc = ""] + #[doc = "Origin must be Signed, and account must have at least `amount` in free balance."] + #[doc = ""] + #[doc = "- `amount`: The amount of the bid; these funds will be reserved, and if/when"] + #[doc = " consolidated, removed. Must be at least `MinBid`."] + #[doc = "- `duration`: The number of periods before which the newly consolidated bid may be"] + #[doc = " thawed. Must be greater than 1 and no more than `QueueCount`."] + #[doc = ""] + #[doc = "Complexities:"] + #[doc = "- `Queues[duration].len()` (just take max)."] pub fn place_bid( &self, amount: types::place_bid::Amount, @@ -27144,7 +31728,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::retract_bid`]."] + #[doc = "Retract a previously placed bid."] + #[doc = ""] + #[doc = "Origin must be Signed, and the account should have previously issued a still-active bid"] + #[doc = "of `amount` for `duration`."] + #[doc = ""] + #[doc = "- `amount`: The amount of the previous bid."] + #[doc = "- `duration`: The duration of the previous bid."] pub fn retract_bid( &self, amount: types::retract_bid::Amount, @@ -27162,7 +31752,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::fund_deficit`]."] + #[doc = "Ensure we have sufficient funding for all potential payouts."] + #[doc = ""] + #[doc = "- `origin`: Must be accepted by `FundOrigin`."] pub fn fund_deficit( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -27179,7 +31771,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::thaw_private`]."] + #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] + #[doc = "the account of the owner."] + #[doc = ""] + #[doc = "- `origin`: Must be Signed and the account must be the owner of the receipt `index` as"] + #[doc = " well as any fungible counterpart."] + #[doc = "- `index`: The index of the receipt."] + #[doc = "- `portion`: If `Some`, then only the given portion of the receipt should be thawed. If"] + #[doc = " `None`, then all of it should be."] pub fn thaw_private( &self, index: types::thaw_private::Index, @@ -27200,7 +31799,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::thaw_communal`]."] + #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] + #[doc = "the account of the owner."] + #[doc = ""] + #[doc = "- `origin`: Must be Signed and the account must be the owner of the fungible counterpart"] + #[doc = " for receipt `index`."] + #[doc = "- `index`: The index of the receipt."] pub fn thaw_communal( &self, index: types::thaw_communal::Index, @@ -27218,7 +31822,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::communify`]."] + #[doc = "Make a private receipt communal and create fungible counterparts for its owner."] pub fn communify( &self, index: types::communify::Index, @@ -27236,7 +31840,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::privatize`]."] + #[doc = "Make a communal receipt private and burn fungible counterparts from its owner."] pub fn privatize( &self, index: types::privatize::Index, @@ -27430,7 +32034,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] - #[doc = "A receipt was transfered."] + #[doc = "A receipt was transferred."] pub struct Transferred { pub from: transferred::From, pub to: transferred::To, @@ -27853,7 +32457,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::transfer_allow_death`]."] + #[doc = "Transfer some liquid free balance to another account."] + #[doc = ""] + #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] + #[doc = "If the sender's account is below the existential deposit as a result"] + #[doc = "of the transfer, the account will be reaped."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] pub struct TransferAllowDeath { pub dest: transfer_allow_death::Dest, #[codec(compact)] @@ -27885,7 +32495,8 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] + #[doc = "may be specified."] pub struct ForceTransfer { pub source: force_transfer::Source, pub dest: force_transfer::Dest, @@ -27922,7 +32533,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::transfer_keep_alive`]."] + #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] + #[doc = "kill the origin account."] + #[doc = ""] + #[doc = "99% of the time you want [`transfer_allow_death`] instead."] + #[doc = ""] + #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] pub struct TransferKeepAlive { pub dest: transfer_keep_alive::Dest, #[codec(compact)] @@ -27954,7 +32570,21 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::transfer_all`]."] + #[doc = "Transfer the entire transferable balance from the caller account."] + #[doc = ""] + #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] + #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] + #[doc = "transferred by this function. To ensure that this function results in a killed account,"] + #[doc = "you might need to prepare the account by removing any reference counters, storage"] + #[doc = "deposits, etc..."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be Signed."] + #[doc = ""] + #[doc = "- `dest`: The recipient of the transfer."] + #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] + #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] + #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] + #[doc = " keep the sender account alive (true)."] pub struct TransferAll { pub dest: transfer_all::Dest, pub keep_alive: transfer_all::KeepAlive, @@ -27985,7 +32615,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_unreserve`]."] + #[doc = "Unreserve some balance from a user by force."] + #[doc = ""] + #[doc = "Can only be called by ROOT."] pub struct ForceUnreserve { pub who: force_unreserve::Who, pub amount: force_unreserve::Amount, @@ -28016,7 +32648,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::upgrade_accounts`]."] + #[doc = "Upgrade a specified account."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `who`: The account to be upgraded."] + #[doc = ""] + #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] + #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] + #[doc = "possibility of churn)."] pub struct UpgradeAccounts { pub who: upgrade_accounts::Who, } @@ -28044,7 +32683,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_set_balance`]."] + #[doc = "Set the regular balance of a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call is `root`."] pub struct ForceSetBalance { pub who: force_set_balance::Who, #[codec(compact)] @@ -28062,10 +32703,49 @@ pub mod api { const PALLET: &'static str = "NisCounterpartBalances"; const CALL: &'static str = "force_set_balance"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Adjust the total issuance in a saturating way."] + #[doc = ""] + #[doc = "Can only be called by root and always needs a positive `delta`."] + #[doc = ""] + #[doc = "# Example"] + pub struct ForceAdjustTotalIssuance { + pub direction: force_adjust_total_issuance::Direction, + #[codec(compact)] + pub delta: force_adjust_total_issuance::Delta, + } + pub mod force_adjust_total_issuance { + use super::runtime_types; + pub type Direction = runtime_types::pallet_balances::types::AdjustmentDirection; + pub type Delta = ::core::primitive::u128; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceAdjustTotalIssuance { + const PALLET: &'static str = "NisCounterpartBalances"; + const CALL: &'static str = "force_adjust_total_issuance"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::transfer_allow_death`]."] + #[doc = "Transfer some liquid free balance to another account."] + #[doc = ""] + #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] + #[doc = "If the sender's account is below the existential deposit as a result"] + #[doc = "of the transfer, the account will be reaped."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] pub fn transfer_allow_death( &self, dest: types::transfer_allow_death::Dest, @@ -28084,7 +32764,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] + #[doc = "may be specified."] pub fn force_transfer( &self, source: types::force_transfer::Source, @@ -28107,7 +32788,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::transfer_keep_alive`]."] + #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] + #[doc = "kill the origin account."] + #[doc = ""] + #[doc = "99% of the time you want [`transfer_allow_death`] instead."] + #[doc = ""] + #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] pub fn transfer_keep_alive( &self, dest: types::transfer_keep_alive::Dest, @@ -28125,7 +32811,21 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::transfer_all`]."] + #[doc = "Transfer the entire transferable balance from the caller account."] + #[doc = ""] + #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] + #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] + #[doc = "transferred by this function. To ensure that this function results in a killed account,"] + #[doc = "you might need to prepare the account by removing any reference counters, storage"] + #[doc = "deposits, etc..."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be Signed."] + #[doc = ""] + #[doc = "- `dest`: The recipient of the transfer."] + #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] + #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] + #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] + #[doc = " keep the sender account alive (true)."] pub fn transfer_all( &self, dest: types::transfer_all::Dest, @@ -28143,7 +32843,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_unreserve`]."] + #[doc = "Unreserve some balance from a user by force."] + #[doc = ""] + #[doc = "Can only be called by ROOT."] pub fn force_unreserve( &self, who: types::force_unreserve::Who, @@ -28162,7 +32864,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::upgrade_accounts`]."] + #[doc = "Upgrade a specified account."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `who`: The account to be upgraded."] + #[doc = ""] + #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] + #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] + #[doc = "possibility of churn)."] pub fn upgrade_accounts( &self, who: types::upgrade_accounts::Who, @@ -28179,7 +32888,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_set_balance`]."] + #[doc = "Set the regular balance of a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call is `root`."] pub fn force_set_balance( &self, who: types::force_set_balance::Who, @@ -28197,6 +32908,30 @@ pub mod api { ], ) } + #[doc = "Adjust the total issuance in a saturating way."] + #[doc = ""] + #[doc = "Can only be called by root and always needs a positive `delta`."] + #[doc = ""] + #[doc = "# Example"] + pub fn force_adjust_total_issuance( + &self, + direction: types::force_adjust_total_issuance::Direction, + delta: types::force_adjust_total_issuance::Delta, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload< + types::ForceAdjustTotalIssuance, + > { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "NisCounterpartBalances", + "force_adjust_total_issuance", + types::ForceAdjustTotalIssuance { direction, delta }, + [ + 208u8, 134u8, 56u8, 133u8, 232u8, 164u8, 10u8, 213u8, 53u8, 193u8, + 190u8, 63u8, 236u8, 186u8, 96u8, 122u8, 104u8, 87u8, 173u8, 38u8, 58u8, + 176u8, 21u8, 78u8, 42u8, 106u8, 46u8, 248u8, 251u8, 190u8, 150u8, + 202u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -28710,6 +33445,30 @@ pub mod api { const PALLET: &'static str = "NisCounterpartBalances"; const EVENT: &'static str = "Thawed"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "The `TotalIssuance` was forcefully changed."] + pub struct TotalIssuanceForced { + pub old: total_issuance_forced::Old, + pub new: total_issuance_forced::New, + } + pub mod total_issuance_forced { + use super::runtime_types; + pub type Old = ::core::primitive::u128; + pub type New = ::core::primitive::u128; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for TotalIssuanceForced { + const PALLET: &'static str = "NisCounterpartBalances"; + const EVENT: &'static str = "TotalIssuanceForced"; + } } pub mod storage { use super::runtime_types; @@ -28742,7 +33501,7 @@ pub mod api { pub mod reserves { use super::runtime_types; pub type Reserves = - runtime_types::bounded_collections::bounded_vec::BoundedVec8< + runtime_types::bounded_collections::bounded_vec::BoundedVec9< runtime_types::pallet_balances::types::ReserveData< [::core::primitive::u8; 8usize], ::core::primitive::u128, @@ -28752,7 +33511,7 @@ pub mod api { } pub mod holds { use super::runtime_types; - pub type Holds = runtime_types::bounded_collections::bounded_vec::BoundedVec9< + pub type Holds = runtime_types::bounded_collections::bounded_vec::BoundedVec10< runtime_types::pallet_balances::types::IdAmount< runtime_types::rococo_runtime::RuntimeHoldReason, ::core::primitive::u128, @@ -28763,7 +33522,7 @@ pub mod api { pub mod freezes { use super::runtime_types; pub type Freezes = - runtime_types::bounded_collections::bounded_vec::BoundedVec10< + runtime_types::bounded_collections::bounded_vec::BoundedVec11< runtime_types::pallet_balances::types::IdAmount< (), ::core::primitive::u128, @@ -28912,6 +33671,8 @@ pub mod api { } #[doc = " Any liquidity locks on some account balances."] #[doc = " NOTE: Should only be accessed when setting, changing and freeing a lock."] + #[doc = ""] + #[doc = " Use of locks is deprecated in favour of freezes. See `https://github.com/paritytech/substrate/pull/12951/`"] pub fn locks_iter( &self, ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< @@ -28934,6 +33695,8 @@ pub mod api { } #[doc = " Any liquidity locks on some account balances."] #[doc = " NOTE: Should only be accessed when setting, changing and freeing a lock."] + #[doc = ""] + #[doc = " Use of locks is deprecated in favour of freezes. See `https://github.com/paritytech/substrate/pull/12951/`"] pub fn locks( &self, _0: impl ::core::borrow::Borrow, @@ -28960,6 +33723,8 @@ pub mod api { ) } #[doc = " Named reserves on some account balances."] + #[doc = ""] + #[doc = " Use of reserves is deprecated in favour of holds. See `https://github.com/paritytech/substrate/pull/12951/`"] pub fn reserves_iter( &self, ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< @@ -28981,6 +33746,8 @@ pub mod api { ) } #[doc = " Named reserves on some account balances."] + #[doc = ""] + #[doc = " Use of reserves is deprecated in favour of holds. See `https://github.com/paritytech/substrate/pull/12951/`"] pub fn reserves( &self, _0: impl ::core::borrow::Borrow, @@ -29021,10 +33788,10 @@ pub mod api { "Holds", (), [ - 72u8, 161u8, 107u8, 123u8, 240u8, 3u8, 198u8, 75u8, 46u8, 131u8, 122u8, - 141u8, 253u8, 141u8, 232u8, 192u8, 146u8, 54u8, 174u8, 162u8, 48u8, - 165u8, 226u8, 233u8, 12u8, 227u8, 23u8, 17u8, 237u8, 179u8, 193u8, - 166u8, + 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, + 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, + 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, + 193u8, ], ) } @@ -29048,10 +33815,10 @@ pub mod api { _0.borrow(), ), [ - 72u8, 161u8, 107u8, 123u8, 240u8, 3u8, 198u8, 75u8, 46u8, 131u8, 122u8, - 141u8, 253u8, 141u8, 232u8, 192u8, 146u8, 54u8, 174u8, 162u8, 48u8, - 165u8, 226u8, 233u8, 12u8, 227u8, 23u8, 17u8, 237u8, 179u8, 193u8, - 166u8, + 181u8, 39u8, 29u8, 45u8, 45u8, 198u8, 129u8, 210u8, 189u8, 183u8, + 121u8, 125u8, 57u8, 90u8, 95u8, 107u8, 51u8, 13u8, 22u8, 105u8, 191u8, + 61u8, 54u8, 182u8, 50u8, 200u8, 137u8, 247u8, 180u8, 158u8, 16u8, + 193u8, ], ) } @@ -29133,6 +33900,8 @@ pub mod api { } #[doc = " The maximum number of locks that should exist on an account."] #[doc = " Not strictly enforced, but used for weight estimation."] + #[doc = ""] + #[doc = " Use of locks is deprecated in favour of freezes. See `https://github.com/paritytech/substrate/pull/12951/`"] pub fn max_locks( &self, ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< @@ -29150,6 +33919,8 @@ pub mod api { ) } #[doc = " The maximum number of named reserves that can exist on an account."] + #[doc = ""] + #[doc = " Use of reserves is deprecated in favour of holds. See `https://github.com/paritytech/substrate/pull/12951/`"] pub fn max_reserves( &self, ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< @@ -29166,23 +33937,6 @@ pub mod api { ], ) } - #[doc = " The maximum number of holds that can exist on an account at any time."] - pub fn max_holds( - &self, - ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< - ::core::primitive::u32, - > { - ::subxt::ext::subxt_core::constants::address::StaticAddress::new_static( - "NisCounterpartBalances", - "MaxHolds", - [ - 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, - 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, - 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, - 145u8, - ], - ) - } #[doc = " The maximum number of individual freeze locks that can exist on an account at any time."] pub fn max_freezes( &self, @@ -29234,7 +33988,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] + #[doc = "Set the validation upgrade cooldown."] pub struct SetValidationUpgradeCooldown { pub new: set_validation_upgrade_cooldown::New, } @@ -29260,7 +34014,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_validation_upgrade_delay`]."] + #[doc = "Set the validation upgrade delay."] pub struct SetValidationUpgradeDelay { pub new: set_validation_upgrade_delay::New, } @@ -29286,7 +34040,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_code_retention_period`]."] + #[doc = "Set the acceptance period for an included candidate."] pub struct SetCodeRetentionPeriod { pub new: set_code_retention_period::New, } @@ -29312,7 +34066,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_max_code_size`]."] + #[doc = "Set the max validation code size for incoming upgrades."] pub struct SetMaxCodeSize { pub new: set_max_code_size::New, } @@ -29338,7 +34092,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_max_pov_size`]."] + #[doc = "Set the max POV block size for incoming upgrades."] pub struct SetMaxPovSize { pub new: set_max_pov_size::New, } @@ -29364,7 +34118,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_max_head_data_size`]."] + #[doc = "Set the max head data size for paras."] pub struct SetMaxHeadDataSize { pub new: set_max_head_data_size::New, } @@ -29390,17 +34144,20 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_on_demand_cores`]."] - pub struct SetOnDemandCores { - pub new: set_on_demand_cores::New, + #[doc = "Set the number of coretime execution cores."] + #[doc = ""] + #[doc = "NOTE: that this configuration is managed by the coretime chain. Only manually change"] + #[doc = "this, if you really know what you are doing!"] + pub struct SetCoretimeCores { + pub new: set_coretime_cores::New, } - pub mod set_on_demand_cores { + pub mod set_coretime_cores { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetOnDemandCores { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetCoretimeCores { const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_on_demand_cores"; + const CALL: &'static str = "set_coretime_cores"; } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -29416,17 +34173,17 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_on_demand_retries`]."] - pub struct SetOnDemandRetries { - pub new: set_on_demand_retries::New, + #[doc = "Set the max number of times a claim may timeout on a core before it is abandoned"] + pub struct SetMaxAvailabilityTimeouts { + pub new: set_max_availability_timeouts::New, } - pub mod set_on_demand_retries { + pub mod set_max_availability_timeouts { use super::runtime_types; pub type New = ::core::primitive::u32; } - impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetOnDemandRetries { + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetMaxAvailabilityTimeouts { const PALLET: &'static str = "Configuration"; - const CALL: &'static str = "set_on_demand_retries"; + const CALL: &'static str = "set_max_availability_timeouts"; } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -29442,7 +34199,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_group_rotation_frequency`]."] + #[doc = "Set the parachain validator-group rotation frequency"] pub struct SetGroupRotationFrequency { pub new: set_group_rotation_frequency::New, } @@ -29468,7 +34225,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_paras_availability_period`]."] + #[doc = "Set the availability period for paras."] pub struct SetParasAvailabilityPeriod { pub new: set_paras_availability_period::New, } @@ -29494,7 +34251,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_scheduling_lookahead`]."] + #[doc = "Set the scheduling lookahead, in expected number of blocks at peak throughput."] pub struct SetSchedulingLookahead { pub new: set_scheduling_lookahead::New, } @@ -29520,7 +34277,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_max_validators_per_core`]."] + #[doc = "Set the maximum number of validators to assign to any core."] pub struct SetMaxValidatorsPerCore { pub new: set_max_validators_per_core::New, } @@ -29546,7 +34303,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_max_validators`]."] + #[doc = "Set the maximum number of validators to use in parachain consensus."] pub struct SetMaxValidators { pub new: set_max_validators::New, } @@ -29572,7 +34329,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_dispute_period`]."] + #[doc = "Set the dispute period, in number of sessions to keep for disputes."] pub struct SetDisputePeriod { pub new: set_dispute_period::New, } @@ -29598,7 +34355,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] + #[doc = "Set the dispute post conclusion acceptance period."] pub struct SetDisputePostConclusionAcceptancePeriod { pub new: set_dispute_post_conclusion_acceptance_period::New, } @@ -29626,7 +34383,8 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_no_show_slots`]."] + #[doc = "Set the no show slots, in number of number of consensus slots."] + #[doc = "Must be at least 1."] pub struct SetNoShowSlots { pub new: set_no_show_slots::New, } @@ -29652,7 +34410,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_n_delay_tranches`]."] + #[doc = "Set the total number of delay tranches."] pub struct SetNDelayTranches { pub new: set_n_delay_tranches::New, } @@ -29678,7 +34436,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] + #[doc = "Set the zeroth delay tranche width."] pub struct SetZerothDelayTrancheWidth { pub new: set_zeroth_delay_tranche_width::New, } @@ -29704,7 +34462,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_needed_approvals`]."] + #[doc = "Set the number of validators needed to approve a block."] pub struct SetNeededApprovals { pub new: set_needed_approvals::New, } @@ -29730,7 +34488,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] + #[doc = "Set the number of samples to do of the `RelayVRFModulo` approval assignment criterion."] pub struct SetRelayVrfModuloSamples { pub new: set_relay_vrf_modulo_samples::New, } @@ -29756,7 +34514,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_max_upward_queue_count`]."] + #[doc = "Sets the maximum items that can present in a upward dispatch queue at once."] pub struct SetMaxUpwardQueueCount { pub new: set_max_upward_queue_count::New, } @@ -29782,7 +34540,8 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_max_upward_queue_size`]."] + #[doc = "Sets the maximum total size of items that can present in a upward dispatch queue at"] + #[doc = "once."] pub struct SetMaxUpwardQueueSize { pub new: set_max_upward_queue_size::New, } @@ -29808,7 +34567,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_max_downward_message_size`]."] + #[doc = "Set the critical downward message size."] pub struct SetMaxDownwardMessageSize { pub new: set_max_downward_message_size::New, } @@ -29834,7 +34593,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_max_upward_message_size`]."] + #[doc = "Sets the maximum size of an upward message that can be sent by a candidate."] pub struct SetMaxUpwardMessageSize { pub new: set_max_upward_message_size::New, } @@ -29860,7 +34619,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] + #[doc = "Sets the maximum number of messages that a candidate can contain."] pub struct SetMaxUpwardMessageNumPerCandidate { pub new: set_max_upward_message_num_per_candidate::New, } @@ -29886,7 +34645,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] + #[doc = "Sets the number of sessions after which an HRMP open channel request expires."] pub struct SetHrmpOpenRequestTtl { pub new: set_hrmp_open_request_ttl::New, } @@ -29912,7 +34671,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_hrmp_sender_deposit`]."] + #[doc = "Sets the amount of funds that the sender should provide for opening an HRMP channel."] pub struct SetHrmpSenderDeposit { pub new: set_hrmp_sender_deposit::New, } @@ -29938,7 +34697,8 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] + #[doc = "Sets the amount of funds that the recipient should provide for accepting opening an HRMP"] + #[doc = "channel."] pub struct SetHrmpRecipientDeposit { pub new: set_hrmp_recipient_deposit::New, } @@ -29964,7 +34724,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] + #[doc = "Sets the maximum number of messages allowed in an HRMP channel at once."] pub struct SetHrmpChannelMaxCapacity { pub new: set_hrmp_channel_max_capacity::New, } @@ -29990,7 +34750,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] + #[doc = "Sets the maximum total size of messages in bytes allowed in an HRMP channel at once."] pub struct SetHrmpChannelMaxTotalSize { pub new: set_hrmp_channel_max_total_size::New, } @@ -30016,7 +34776,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] + #[doc = "Sets the maximum number of inbound HRMP channels a parachain is allowed to accept."] pub struct SetHrmpMaxParachainInboundChannels { pub new: set_hrmp_max_parachain_inbound_channels::New, } @@ -30042,7 +34802,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] + #[doc = "Sets the maximum size of a message that could ever be put into an HRMP channel."] pub struct SetHrmpChannelMaxMessageSize { pub new: set_hrmp_channel_max_message_size::New, } @@ -30068,7 +34828,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] + #[doc = "Sets the maximum number of outbound HRMP channels a parachain is allowed to open."] pub struct SetHrmpMaxParachainOutboundChannels { pub new: set_hrmp_max_parachain_outbound_channels::New, } @@ -30094,7 +34854,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] + #[doc = "Sets the maximum number of outbound HRMP messages can be sent by a candidate."] pub struct SetHrmpMaxMessageNumPerCandidate { pub new: set_hrmp_max_message_num_per_candidate::New, } @@ -30120,7 +34880,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_pvf_voting_ttl`]."] + #[doc = "Set the number of session changes after which a PVF pre-checking voting is rejected."] pub struct SetPvfVotingTtl { pub new: set_pvf_voting_ttl::New, } @@ -30146,7 +34906,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] + #[doc = "Sets the minimum delay between announcing the upgrade block for a parachain until the"] + #[doc = "upgrade taking place."] + #[doc = ""] + #[doc = "See the field documentation for information and constraints for the new value."] pub struct SetMinimumValidationUpgradeDelay { pub new: set_minimum_validation_upgrade_delay::New, } @@ -30172,7 +34935,8 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_bypass_consistency_check`]."] + #[doc = "Setting this to true will disable consistency checks for the configuration setters."] + #[doc = "Use with caution."] pub struct SetBypassConsistencyCheck { pub new: set_bypass_consistency_check::New, } @@ -30198,14 +34962,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_async_backing_params`]."] + #[doc = "Set the asynchronous backing parameters."] pub struct SetAsyncBackingParams { pub new: set_async_backing_params::New, } pub mod set_async_backing_params { use super::runtime_types; pub type New = - runtime_types::polkadot_primitives::v6::async_backing::AsyncBackingParams; + runtime_types::polkadot_primitives::v7::async_backing::AsyncBackingParams; } impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetAsyncBackingParams { const PALLET: &'static str = "Configuration"; @@ -30225,14 +34989,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_executor_params`]."] + #[doc = "Set PVF executor parameters."] pub struct SetExecutorParams { pub new: set_executor_params::New, } pub mod set_executor_params { use super::runtime_types; pub type New = - runtime_types::polkadot_primitives::v6::executor_params::ExecutorParams; + runtime_types::polkadot_primitives::v7::executor_params::ExecutorParams; } impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetExecutorParams { const PALLET: &'static str = "Configuration"; @@ -30252,7 +35016,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_on_demand_base_fee`]."] + #[doc = "Set the on demand (parathreads) base fee."] pub struct SetOnDemandBaseFee { pub new: set_on_demand_base_fee::New, } @@ -30278,7 +35042,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_on_demand_fee_variability`]."] + #[doc = "Set the on demand (parathreads) fee variability."] pub struct SetOnDemandFeeVariability { pub new: set_on_demand_fee_variability::New, } @@ -30304,7 +35068,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_on_demand_queue_max_size`]."] + #[doc = "Set the on demand (parathreads) queue max size."] pub struct SetOnDemandQueueMaxSize { pub new: set_on_demand_queue_max_size::New, } @@ -30330,7 +35094,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] + #[doc = "Set the on demand (parathreads) fee variability."] pub struct SetOnDemandTargetQueueUtilization { pub new: set_on_demand_target_queue_utilization::New, } @@ -30356,7 +35120,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_on_demand_ttl`]."] + #[doc = "Set the on demand (parathreads) ttl in the claimqueue."] pub struct SetOnDemandTtl { pub new: set_on_demand_ttl::New, } @@ -30382,7 +35146,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_minimum_backing_votes`]."] + #[doc = "Set the minimum backing votes threshold."] pub struct SetMinimumBackingVotes { pub new: set_minimum_backing_votes::New, } @@ -30394,10 +35158,92 @@ pub mod api { const PALLET: &'static str = "Configuration"; const CALL: &'static str = "set_minimum_backing_votes"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Set/Unset a node feature."] + pub struct SetNodeFeature { + pub index: set_node_feature::Index, + pub value: set_node_feature::Value, + } + pub mod set_node_feature { + use super::runtime_types; + pub type Index = ::core::primitive::u8; + pub type Value = ::core::primitive::bool; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetNodeFeature { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_node_feature"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Set approval-voting-params."] + pub struct SetApprovalVotingParams { + pub new: set_approval_voting_params::New, + } + pub mod set_approval_voting_params { + use super::runtime_types; + pub type New = runtime_types::polkadot_primitives::v7::ApprovalVotingParams; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetApprovalVotingParams { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_approval_voting_params"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Set scheduler-params."] + pub struct SetSchedulerParams { + pub new: set_scheduler_params::New, + } + pub mod set_scheduler_params { + use super::runtime_types; + pub type New = runtime_types::polkadot_primitives::vstaging::SchedulerParams< + ::core::primitive::u32, + >; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetSchedulerParams { + const PALLET: &'static str = "Configuration"; + const CALL: &'static str = "set_scheduler_params"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] + #[doc = "Set the validation upgrade cooldown."] pub fn set_validation_upgrade_cooldown( &self, new: types::set_validation_upgrade_cooldown::New, @@ -30416,7 +35262,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_validation_upgrade_delay`]."] + #[doc = "Set the validation upgrade delay."] pub fn set_validation_upgrade_delay( &self, new: types::set_validation_upgrade_delay::New, @@ -30434,7 +35280,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_code_retention_period`]."] + #[doc = "Set the acceptance period for an included candidate."] pub fn set_code_retention_period( &self, new: types::set_code_retention_period::New, @@ -30453,7 +35299,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_code_size`]."] + #[doc = "Set the max validation code size for incoming upgrades."] pub fn set_max_code_size( &self, new: types::set_max_code_size::New, @@ -30471,7 +35317,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_pov_size`]."] + #[doc = "Set the max POV block size for incoming upgrades."] pub fn set_max_pov_size( &self, new: types::set_max_pov_size::New, @@ -30488,7 +35334,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_head_data_size`]."] + #[doc = "Set the max head data size for paras."] pub fn set_max_head_data_size( &self, new: types::set_max_head_data_size::New, @@ -30506,43 +35352,45 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_cores`]."] - pub fn set_on_demand_cores( + #[doc = "Set the number of coretime execution cores."] + #[doc = ""] + #[doc = "NOTE: that this configuration is managed by the coretime chain. Only manually change"] + #[doc = "this, if you really know what you are doing!"] + pub fn set_coretime_cores( &self, - new: types::set_on_demand_cores::New, - ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + new: types::set_coretime_cores::New, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload { ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( "Configuration", - "set_on_demand_cores", - types::SetOnDemandCores { new }, + "set_coretime_cores", + types::SetCoretimeCores { new }, [ - 157u8, 26u8, 82u8, 103u8, 83u8, 214u8, 92u8, 176u8, 93u8, 70u8, 32u8, - 217u8, 139u8, 30u8, 145u8, 237u8, 34u8, 121u8, 190u8, 17u8, 128u8, - 243u8, 241u8, 181u8, 85u8, 141u8, 107u8, 70u8, 121u8, 119u8, 20u8, - 104u8, + 179u8, 131u8, 211u8, 152u8, 167u8, 6u8, 108u8, 94u8, 179u8, 97u8, 87u8, + 227u8, 57u8, 120u8, 133u8, 130u8, 59u8, 243u8, 224u8, 2u8, 11u8, 86u8, + 251u8, 77u8, 159u8, 177u8, 145u8, 34u8, 117u8, 93u8, 28u8, 52u8, ], ) } - #[doc = "See [`Pallet::set_on_demand_retries`]."] - pub fn set_on_demand_retries( + #[doc = "Set the max number of times a claim may timeout on a core before it is abandoned"] + pub fn set_max_availability_timeouts( &self, - new: types::set_on_demand_retries::New, - ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload - { + new: types::set_max_availability_timeouts::New, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload< + types::SetMaxAvailabilityTimeouts, + > { ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( "Configuration", - "set_on_demand_retries", - types::SetOnDemandRetries { new }, + "set_max_availability_timeouts", + types::SetMaxAvailabilityTimeouts { new }, [ - 228u8, 78u8, 216u8, 66u8, 17u8, 51u8, 84u8, 14u8, 80u8, 67u8, 24u8, - 138u8, 177u8, 108u8, 203u8, 87u8, 240u8, 125u8, 111u8, 223u8, 216u8, - 212u8, 69u8, 236u8, 216u8, 178u8, 166u8, 145u8, 115u8, 47u8, 147u8, - 235u8, + 53u8, 141u8, 53u8, 9u8, 149u8, 145u8, 48u8, 165u8, 157u8, 2u8, 45u8, + 23u8, 128u8, 233u8, 27u8, 132u8, 189u8, 212u8, 45u8, 187u8, 2u8, 112u8, + 26u8, 88u8, 233u8, 84u8, 148u8, 73u8, 222u8, 208u8, 195u8, 153u8, ], ) } - #[doc = "See [`Pallet::set_group_rotation_frequency`]."] + #[doc = "Set the parachain validator-group rotation frequency"] pub fn set_group_rotation_frequency( &self, new: types::set_group_rotation_frequency::New, @@ -30560,7 +35408,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_paras_availability_period`]."] + #[doc = "Set the availability period for paras."] pub fn set_paras_availability_period( &self, new: types::set_paras_availability_period::New, @@ -30578,7 +35426,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_scheduling_lookahead`]."] + #[doc = "Set the scheduling lookahead, in expected number of blocks at peak throughput."] pub fn set_scheduling_lookahead( &self, new: types::set_scheduling_lookahead::New, @@ -30597,7 +35445,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_validators_per_core`]."] + #[doc = "Set the maximum number of validators to assign to any core."] pub fn set_max_validators_per_core( &self, new: types::set_max_validators_per_core::New, @@ -30616,7 +35464,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_validators`]."] + #[doc = "Set the maximum number of validators to use in parachain consensus."] pub fn set_max_validators( &self, new: types::set_max_validators::New, @@ -30634,7 +35482,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_dispute_period`]."] + #[doc = "Set the dispute period, in number of sessions to keep for disputes."] pub fn set_dispute_period( &self, new: types::set_dispute_period::New, @@ -30652,7 +35500,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] + #[doc = "Set the dispute post conclusion acceptance period."] pub fn set_dispute_post_conclusion_acceptance_period( &self, new: types::set_dispute_post_conclusion_acceptance_period::New, @@ -30671,7 +35519,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_no_show_slots`]."] + #[doc = "Set the no show slots, in number of number of consensus slots."] + #[doc = "Must be at least 1."] pub fn set_no_show_slots( &self, new: types::set_no_show_slots::New, @@ -30688,7 +35537,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_n_delay_tranches`]."] + #[doc = "Set the total number of delay tranches."] pub fn set_n_delay_tranches( &self, new: types::set_n_delay_tranches::New, @@ -30706,7 +35555,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] + #[doc = "Set the zeroth delay tranche width."] pub fn set_zeroth_delay_tranche_width( &self, new: types::set_zeroth_delay_tranche_width::New, @@ -30724,7 +35573,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_needed_approvals`]."] + #[doc = "Set the number of validators needed to approve a block."] pub fn set_needed_approvals( &self, new: types::set_needed_approvals::New, @@ -30741,7 +35590,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] + #[doc = "Set the number of samples to do of the `RelayVRFModulo` approval assignment criterion."] pub fn set_relay_vrf_modulo_samples( &self, new: types::set_relay_vrf_modulo_samples::New, @@ -30760,7 +35609,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_upward_queue_count`]."] + #[doc = "Sets the maximum items that can present in a upward dispatch queue at once."] pub fn set_max_upward_queue_count( &self, new: types::set_max_upward_queue_count::New, @@ -30779,7 +35628,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_upward_queue_size`]."] + #[doc = "Sets the maximum total size of items that can present in a upward dispatch queue at"] + #[doc = "once."] pub fn set_max_upward_queue_size( &self, new: types::set_max_upward_queue_size::New, @@ -30798,7 +35648,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_downward_message_size`]."] + #[doc = "Set the critical downward message size."] pub fn set_max_downward_message_size( &self, new: types::set_max_downward_message_size::New, @@ -30816,7 +35666,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_upward_message_size`]."] + #[doc = "Sets the maximum size of an upward message that can be sent by a candidate."] pub fn set_max_upward_message_size( &self, new: types::set_max_upward_message_size::New, @@ -30835,7 +35685,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] + #[doc = "Sets the maximum number of messages that a candidate can contain."] pub fn set_max_upward_message_num_per_candidate( &self, new: types::set_max_upward_message_num_per_candidate::New, @@ -30853,7 +35703,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] + #[doc = "Sets the number of sessions after which an HRMP open channel request expires."] pub fn set_hrmp_open_request_ttl( &self, new: types::set_hrmp_open_request_ttl::New, @@ -30871,7 +35721,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_sender_deposit`]."] + #[doc = "Sets the amount of funds that the sender should provide for opening an HRMP channel."] pub fn set_hrmp_sender_deposit( &self, new: types::set_hrmp_sender_deposit::New, @@ -30888,7 +35738,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] + #[doc = "Sets the amount of funds that the recipient should provide for accepting opening an HRMP"] + #[doc = "channel."] pub fn set_hrmp_recipient_deposit( &self, new: types::set_hrmp_recipient_deposit::New, @@ -30907,7 +35758,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] + #[doc = "Sets the maximum number of messages allowed in an HRMP channel at once."] pub fn set_hrmp_channel_max_capacity( &self, new: types::set_hrmp_channel_max_capacity::New, @@ -30926,7 +35777,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] + #[doc = "Sets the maximum total size of messages in bytes allowed in an HRMP channel at once."] pub fn set_hrmp_channel_max_total_size( &self, new: types::set_hrmp_channel_max_total_size::New, @@ -30944,7 +35795,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] + #[doc = "Sets the maximum number of inbound HRMP channels a parachain is allowed to accept."] pub fn set_hrmp_max_parachain_inbound_channels( &self, new: types::set_hrmp_max_parachain_inbound_channels::New, @@ -30962,7 +35813,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] + #[doc = "Sets the maximum size of a message that could ever be put into an HRMP channel."] pub fn set_hrmp_channel_max_message_size( &self, new: types::set_hrmp_channel_max_message_size::New, @@ -30981,7 +35832,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] + #[doc = "Sets the maximum number of outbound HRMP channels a parachain is allowed to open."] pub fn set_hrmp_max_parachain_outbound_channels( &self, new: types::set_hrmp_max_parachain_outbound_channels::New, @@ -30999,7 +35850,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] + #[doc = "Sets the maximum number of outbound HRMP messages can be sent by a candidate."] pub fn set_hrmp_max_message_num_per_candidate( &self, new: types::set_hrmp_max_message_num_per_candidate::New, @@ -31017,7 +35868,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_pvf_voting_ttl`]."] + #[doc = "Set the number of session changes after which a PVF pre-checking voting is rejected."] pub fn set_pvf_voting_ttl( &self, new: types::set_pvf_voting_ttl::New, @@ -31035,7 +35886,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] + #[doc = "Sets the minimum delay between announcing the upgrade block for a parachain until the"] + #[doc = "upgrade taking place."] + #[doc = ""] + #[doc = "See the field documentation for information and constraints for the new value."] pub fn set_minimum_validation_upgrade_delay( &self, new: types::set_minimum_validation_upgrade_delay::New, @@ -31054,7 +35908,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_bypass_consistency_check`]."] + #[doc = "Setting this to true will disable consistency checks for the configuration setters."] + #[doc = "Use with caution."] pub fn set_bypass_consistency_check( &self, new: types::set_bypass_consistency_check::New, @@ -31073,7 +35928,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_async_backing_params`]."] + #[doc = "Set the asynchronous backing parameters."] pub fn set_async_backing_params( &self, new: types::set_async_backing_params::New, @@ -31092,7 +35947,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_executor_params`]."] + #[doc = "Set PVF executor parameters."] pub fn set_executor_params( &self, new: types::set_executor_params::New, @@ -31103,13 +35958,13 @@ pub mod api { "set_executor_params", types::SetExecutorParams { new }, [ - 219u8, 27u8, 25u8, 162u8, 61u8, 189u8, 61u8, 32u8, 101u8, 139u8, 89u8, - 51u8, 191u8, 223u8, 94u8, 145u8, 109u8, 247u8, 22u8, 64u8, 178u8, 97u8, - 239u8, 0u8, 125u8, 20u8, 62u8, 210u8, 110u8, 79u8, 225u8, 43u8, + 79u8, 167u8, 242u8, 14u8, 22u8, 177u8, 240u8, 134u8, 154u8, 77u8, + 233u8, 188u8, 110u8, 223u8, 25u8, 52u8, 58u8, 241u8, 226u8, 255u8, 2u8, + 26u8, 8u8, 241u8, 125u8, 33u8, 63u8, 204u8, 93u8, 31u8, 229u8, 0u8, ], ) } - #[doc = "See [`Pallet::set_on_demand_base_fee`]."] + #[doc = "Set the on demand (parathreads) base fee."] pub fn set_on_demand_base_fee( &self, new: types::set_on_demand_base_fee::New, @@ -31126,7 +35981,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_fee_variability`]."] + #[doc = "Set the on demand (parathreads) fee variability."] pub fn set_on_demand_fee_variability( &self, new: types::set_on_demand_fee_variability::New, @@ -31145,7 +36000,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_queue_max_size`]."] + #[doc = "Set the on demand (parathreads) queue max size."] pub fn set_on_demand_queue_max_size( &self, new: types::set_on_demand_queue_max_size::New, @@ -31163,7 +36018,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] + #[doc = "Set the on demand (parathreads) fee variability."] pub fn set_on_demand_target_queue_utilization( &self, new: types::set_on_demand_target_queue_utilization::New, @@ -31182,7 +36037,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_on_demand_ttl`]."] + #[doc = "Set the on demand (parathreads) ttl in the claimqueue."] pub fn set_on_demand_ttl( &self, new: types::set_on_demand_ttl::New, @@ -31200,7 +36055,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_minimum_backing_votes`]."] + #[doc = "Set the minimum backing votes threshold."] pub fn set_minimum_backing_votes( &self, new: types::set_minimum_backing_votes::New, @@ -31218,6 +36073,60 @@ pub mod api { ], ) } + #[doc = "Set/Unset a node feature."] + pub fn set_node_feature( + &self, + index: types::set_node_feature::Index, + value: types::set_node_feature::Value, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Configuration", + "set_node_feature", + types::SetNodeFeature { index, value }, + [ + 255u8, 19u8, 208u8, 76u8, 122u8, 6u8, 42u8, 182u8, 118u8, 151u8, 245u8, + 80u8, 162u8, 243u8, 45u8, 57u8, 122u8, 148u8, 98u8, 170u8, 157u8, 40u8, + 92u8, 234u8, 12u8, 141u8, 54u8, 80u8, 97u8, 249u8, 115u8, 27u8, + ], + ) + } + #[doc = "Set approval-voting-params."] + pub fn set_approval_voting_params( + &self, + new: types::set_approval_voting_params::New, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload< + types::SetApprovalVotingParams, + > { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Configuration", + "set_approval_voting_params", + types::SetApprovalVotingParams { new }, + [ + 248u8, 81u8, 74u8, 103u8, 28u8, 108u8, 190u8, 177u8, 201u8, 252u8, + 87u8, 236u8, 20u8, 189u8, 192u8, 173u8, 40u8, 160u8, 170u8, 187u8, + 42u8, 108u8, 184u8, 131u8, 120u8, 237u8, 229u8, 240u8, 128u8, 49u8, + 163u8, 11u8, + ], + ) + } + #[doc = "Set scheduler-params."] + pub fn set_scheduler_params( + &self, + new: types::set_scheduler_params::New, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Configuration", + "set_scheduler_params", + types::SetSchedulerParams { new }, + [ + 191u8, 87u8, 235u8, 71u8, 143u8, 46u8, 2u8, 88u8, 111u8, 15u8, 251u8, + 230u8, 241u8, 172u8, 183u8, 110u8, 33u8, 26u8, 43u8, 119u8, 74u8, 62u8, + 200u8, 226u8, 83u8, 180u8, 123u8, 132u8, 171u8, 65u8, 30u8, 13u8, + ], + ) + } } } pub mod storage { @@ -31254,10 +36163,9 @@ pub mod api { "ActiveConfig", (), [ - 126u8, 223u8, 107u8, 199u8, 21u8, 114u8, 19u8, 172u8, 27u8, 108u8, - 189u8, 165u8, 33u8, 220u8, 57u8, 81u8, 137u8, 242u8, 204u8, 148u8, - 61u8, 161u8, 156u8, 36u8, 20u8, 172u8, 117u8, 30u8, 152u8, 210u8, - 207u8, 161u8, + 9u8, 85u8, 45u8, 253u8, 3u8, 175u8, 115u8, 58u8, 71u8, 169u8, 68u8, + 163u8, 231u8, 24u8, 231u8, 216u8, 61u8, 134u8, 59u8, 89u8, 31u8, 103u8, + 105u8, 8u8, 182u8, 99u8, 51u8, 130u8, 255u8, 2u8, 0u8, 147u8, ], ) } @@ -31282,10 +36190,9 @@ pub mod api { "PendingConfigs", (), [ - 105u8, 89u8, 53u8, 156u8, 60u8, 53u8, 196u8, 187u8, 5u8, 122u8, 186u8, - 196u8, 162u8, 133u8, 254u8, 178u8, 130u8, 143u8, 90u8, 23u8, 234u8, - 105u8, 9u8, 121u8, 142u8, 123u8, 136u8, 166u8, 95u8, 215u8, 176u8, - 46u8, + 7u8, 170u8, 38u8, 177u8, 76u8, 75u8, 198u8, 192u8, 247u8, 137u8, 85u8, + 17u8, 74u8, 93u8, 170u8, 177u8, 198u8, 208u8, 183u8, 28u8, 178u8, 5u8, + 39u8, 246u8, 175u8, 78u8, 145u8, 37u8, 212u8, 20u8, 52u8, 110u8, ], ) } @@ -31341,13 +36248,13 @@ pub mod api { pub mod active_validator_indices { use super::runtime_types; pub type ActiveValidatorIndices = ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::ValidatorIndex, + runtime_types::polkadot_primitives::v7::ValidatorIndex, >; } pub mod active_validator_keys { use super::runtime_types; pub type ActiveValidatorKeys = ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::validator_app::Public, + runtime_types::polkadot_primitives::v7::validator_app::Public, >; } pub mod allowed_relay_parents { @@ -31417,10 +36324,9 @@ pub mod api { "ActiveValidatorKeys", (), [ - 155u8, 151u8, 155u8, 8u8, 23u8, 38u8, 91u8, 12u8, 94u8, 69u8, 228u8, - 185u8, 14u8, 219u8, 215u8, 98u8, 235u8, 222u8, 157u8, 180u8, 230u8, - 121u8, 205u8, 167u8, 156u8, 134u8, 180u8, 213u8, 87u8, 61u8, 174u8, - 222u8, + 228u8, 111u8, 152u8, 198u8, 158u8, 9u8, 193u8, 222u8, 92u8, 190u8, + 91u8, 24u8, 98u8, 156u8, 88u8, 231u8, 255u8, 1u8, 74u8, 56u8, 44u8, + 110u8, 175u8, 29u8, 45u8, 242u8, 129u8, 181u8, 145u8, 5u8, 28u8, 40u8, ], ) } @@ -31489,13 +36395,13 @@ pub mod api { ); pub mod candidate_backed { use super::runtime_types; - pub type Field0 = runtime_types::polkadot_primitives::v6::CandidateReceipt< + pub type Field0 = runtime_types::polkadot_primitives::v7::CandidateReceipt< ::subxt::ext::subxt_core::utils::H256, >; pub type Field1 = runtime_types::polkadot_parachain_primitives::primitives::HeadData; - pub type Field2 = runtime_types::polkadot_primitives::v6::CoreIndex; - pub type Field3 = runtime_types::polkadot_primitives::v6::GroupIndex; + pub type Field2 = runtime_types::polkadot_primitives::v7::CoreIndex; + pub type Field3 = runtime_types::polkadot_primitives::v7::GroupIndex; } impl ::subxt::ext::subxt_core::events::StaticEvent for CandidateBacked { const PALLET: &'static str = "ParaInclusion"; @@ -31520,13 +36426,13 @@ pub mod api { ); pub mod candidate_included { use super::runtime_types; - pub type Field0 = runtime_types::polkadot_primitives::v6::CandidateReceipt< + pub type Field0 = runtime_types::polkadot_primitives::v7::CandidateReceipt< ::subxt::ext::subxt_core::utils::H256, >; pub type Field1 = runtime_types::polkadot_parachain_primitives::primitives::HeadData; - pub type Field2 = runtime_types::polkadot_primitives::v6::CoreIndex; - pub type Field3 = runtime_types::polkadot_primitives::v6::GroupIndex; + pub type Field2 = runtime_types::polkadot_primitives::v7::CoreIndex; + pub type Field3 = runtime_types::polkadot_primitives::v7::GroupIndex; } impl ::subxt::ext::subxt_core::events::StaticEvent for CandidateIncluded { const PALLET: &'static str = "ParaInclusion"; @@ -31550,12 +36456,12 @@ pub mod api { ); pub mod candidate_timed_out { use super::runtime_types; - pub type Field0 = runtime_types::polkadot_primitives::v6::CandidateReceipt< + pub type Field0 = runtime_types::polkadot_primitives::v7::CandidateReceipt< ::subxt::ext::subxt_core::utils::H256, >; pub type Field1 = runtime_types::polkadot_parachain_primitives::primitives::HeadData; - pub type Field2 = runtime_types::polkadot_primitives::v6::CoreIndex; + pub type Field2 = runtime_types::polkadot_primitives::v7::CoreIndex; } impl ::subxt::ext::subxt_core::events::StaticEvent for CandidateTimedOut { const PALLET: &'static str = "ParaInclusion"; @@ -31590,165 +36496,66 @@ pub mod api { use super::runtime_types; pub mod types { use super::runtime_types; - pub mod availability_bitfields { + pub mod v1 { use super::runtime_types; - pub type AvailabilityBitfields = runtime_types :: polkadot_runtime_parachains :: inclusion :: AvailabilityBitfieldRecord < :: core :: primitive :: u32 > ; - pub type Param0 = runtime_types::polkadot_primitives::v6::ValidatorIndex; - } - pub mod pending_availability { - use super::runtime_types; - pub type PendingAvailability = runtime_types :: polkadot_runtime_parachains :: inclusion :: CandidatePendingAvailability < :: subxt :: ext :: subxt_core :: utils :: H256 , :: core :: primitive :: u32 > ; - pub type Param0 = runtime_types::polkadot_parachain_primitives::primitives::Id; - } - pub mod pending_availability_commitments { - use super::runtime_types; - pub type PendingAvailabilityCommitments = - runtime_types::polkadot_primitives::v6::CandidateCommitments< - ::core::primitive::u32, - >; + pub type V1 = :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: inclusion :: CandidatePendingAvailability < :: subxt :: ext :: subxt_core :: utils :: H256 , :: core :: primitive :: u32 > > ; pub type Param0 = runtime_types::polkadot_parachain_primitives::primitives::Id; } } pub struct StorageApi; impl StorageApi { - #[doc = " The latest bitfield for each validator, referred to by their index in the validator set."] - pub fn availability_bitfields_iter( + #[doc = " Candidates pending availability by `ParaId`. They form a chain starting from the latest"] + #[doc = " included head of the para."] + #[doc = " Use a different prefix post-migration to v1, since the v0 `PendingAvailability` storage"] + #[doc = " would otherwise have the exact same prefix which could cause undefined behaviour when doing"] + #[doc = " the migration."] + pub fn v1_iter( &self, ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< (), - types::availability_bitfields::AvailabilityBitfields, + types::v1::V1, (), (), ::subxt::ext::subxt_core::utils::Yes, > { ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( "ParaInclusion", - "AvailabilityBitfields", + "V1", (), [ - 163u8, 169u8, 217u8, 160u8, 147u8, 165u8, 186u8, 21u8, 171u8, 177u8, - 74u8, 69u8, 55u8, 205u8, 46u8, 13u8, 253u8, 83u8, 55u8, 190u8, 22u8, - 61u8, 32u8, 209u8, 54u8, 120u8, 187u8, 39u8, 114u8, 70u8, 212u8, 170u8, + 168u8, 102u8, 148u8, 186u8, 81u8, 2u8, 106u8, 60u8, 191u8, 34u8, 196u8, + 207u8, 208u8, 186u8, 138u8, 3u8, 31u8, 128u8, 200u8, 132u8, 34u8, + 248u8, 248u8, 14u8, 109u8, 197u8, 44u8, 140u8, 253u8, 33u8, 186u8, + 71u8, ], ) } - #[doc = " The latest bitfield for each validator, referred to by their index in the validator set."] - pub fn availability_bitfields( + #[doc = " Candidates pending availability by `ParaId`. They form a chain starting from the latest"] + #[doc = " included head of the para."] + #[doc = " Use a different prefix post-migration to v1, since the v0 `PendingAvailability` storage"] + #[doc = " would otherwise have the exact same prefix which could cause undefined behaviour when doing"] + #[doc = " the migration."] + pub fn v1( &self, - _0: impl ::core::borrow::Borrow, + _0: impl ::core::borrow::Borrow, ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - ::subxt::ext::subxt_core::storage::address::StaticStorageKey< - types::availability_bitfields::Param0, - >, - types::availability_bitfields::AvailabilityBitfields, + ::subxt::ext::subxt_core::storage::address::StaticStorageKey, + types::v1::V1, ::subxt::ext::subxt_core::utils::Yes, (), (), > { ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( "ParaInclusion", - "AvailabilityBitfields", + "V1", ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( _0.borrow(), ), [ - 163u8, 169u8, 217u8, 160u8, 147u8, 165u8, 186u8, 21u8, 171u8, 177u8, - 74u8, 69u8, 55u8, 205u8, 46u8, 13u8, 253u8, 83u8, 55u8, 190u8, 22u8, - 61u8, 32u8, 209u8, 54u8, 120u8, 187u8, 39u8, 114u8, 70u8, 212u8, 170u8, - ], - ) - } - #[doc = " Candidates pending availability by `ParaId`."] - pub fn pending_availability_iter( - &self, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - (), - types::pending_availability::PendingAvailability, - (), - (), - ::subxt::ext::subxt_core::utils::Yes, - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "ParaInclusion", - "PendingAvailability", - (), - [ - 164u8, 175u8, 34u8, 182u8, 190u8, 147u8, 42u8, 185u8, 162u8, 130u8, - 33u8, 159u8, 234u8, 242u8, 90u8, 119u8, 2u8, 195u8, 48u8, 150u8, 135u8, - 87u8, 8u8, 142u8, 243u8, 142u8, 57u8, 121u8, 225u8, 218u8, 22u8, 132u8, - ], - ) - } - #[doc = " Candidates pending availability by `ParaId`."] - pub fn pending_availability( - &self, - _0: impl ::core::borrow::Borrow, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - ::subxt::ext::subxt_core::storage::address::StaticStorageKey< - types::pending_availability::Param0, - >, - types::pending_availability::PendingAvailability, - ::subxt::ext::subxt_core::utils::Yes, - (), - (), - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "ParaInclusion", - "PendingAvailability", - ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( - _0.borrow(), - ), - [ - 164u8, 175u8, 34u8, 182u8, 190u8, 147u8, 42u8, 185u8, 162u8, 130u8, - 33u8, 159u8, 234u8, 242u8, 90u8, 119u8, 2u8, 195u8, 48u8, 150u8, 135u8, - 87u8, 8u8, 142u8, 243u8, 142u8, 57u8, 121u8, 225u8, 218u8, 22u8, 132u8, - ], - ) - } - #[doc = " The commitments of candidates pending availability, by `ParaId`."] - pub fn pending_availability_commitments_iter( - &self, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - (), - types::pending_availability_commitments::PendingAvailabilityCommitments, - (), - (), - ::subxt::ext::subxt_core::utils::Yes, - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "ParaInclusion", - "PendingAvailabilityCommitments", - (), - [ - 196u8, 210u8, 210u8, 16u8, 246u8, 105u8, 121u8, 178u8, 5u8, 48u8, 40u8, - 183u8, 63u8, 147u8, 48u8, 74u8, 20u8, 83u8, 76u8, 84u8, 41u8, 30u8, - 182u8, 246u8, 164u8, 108u8, 113u8, 16u8, 169u8, 64u8, 97u8, 202u8, - ], - ) - } - #[doc = " The commitments of candidates pending availability, by `ParaId`."] - pub fn pending_availability_commitments( - &self, - _0: impl ::core::borrow::Borrow, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - ::subxt::ext::subxt_core::storage::address::StaticStorageKey< - types::pending_availability_commitments::Param0, - >, - types::pending_availability_commitments::PendingAvailabilityCommitments, - ::subxt::ext::subxt_core::utils::Yes, - (), - (), - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "ParaInclusion", - "PendingAvailabilityCommitments", - ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( - _0.borrow(), - ), - [ - 196u8, 210u8, 210u8, 16u8, 246u8, 105u8, 121u8, 178u8, 5u8, 48u8, 40u8, - 183u8, 63u8, 147u8, 48u8, 74u8, 20u8, 83u8, 76u8, 84u8, 41u8, 30u8, - 182u8, 246u8, 164u8, 108u8, 113u8, 16u8, 169u8, 64u8, 97u8, 202u8, + 168u8, 102u8, 148u8, 186u8, 81u8, 2u8, 106u8, 60u8, 191u8, 34u8, 196u8, + 207u8, 208u8, 186u8, 138u8, 3u8, 31u8, 128u8, 200u8, 132u8, 34u8, + 248u8, 248u8, 14u8, 109u8, 197u8, 44u8, 140u8, 253u8, 33u8, 186u8, + 71u8, ], ) } @@ -31782,13 +36589,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::enter`]."] + #[doc = "Enter the paras inherent. This will process bitfields and backed candidates."] pub struct Enter { pub data: enter::Data, } pub mod enter { use super::runtime_types; - pub type Data = runtime_types::polkadot_primitives::v6::InherentData< + pub type Data = runtime_types::polkadot_primitives::v7::InherentData< runtime_types::sp_runtime::generic::header::Header<::core::primitive::u32>, >; } @@ -31799,7 +36606,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::enter`]."] + #[doc = "Enter the paras inherent. This will process bitfields and backed candidates."] pub fn enter( &self, data: types::enter::Data, @@ -31810,9 +36617,9 @@ pub mod api { "enter", types::Enter { data }, [ - 145u8, 120u8, 158u8, 39u8, 139u8, 223u8, 236u8, 209u8, 253u8, 108u8, - 188u8, 21u8, 23u8, 61u8, 25u8, 171u8, 30u8, 203u8, 161u8, 117u8, 90u8, - 55u8, 50u8, 107u8, 26u8, 52u8, 26u8, 158u8, 56u8, 218u8, 186u8, 142u8, + 244u8, 74u8, 26u8, 233u8, 127u8, 208u8, 55u8, 137u8, 180u8, 244u8, + 70u8, 55u8, 177u8, 211u8, 53u8, 224u8, 167u8, 95u8, 71u8, 211u8, 204u8, + 137u8, 42u8, 149u8, 209u8, 214u8, 26u8, 2u8, 67u8, 107u8, 131u8, 72u8, ], ) } @@ -31829,7 +36636,7 @@ pub mod api { pub mod on_chain_votes { use super::runtime_types; pub type OnChainVotes = - runtime_types::polkadot_primitives::v6::ScrapedOnChainVotes< + runtime_types::polkadot_primitives::v7::ScrapedOnChainVotes< ::subxt::ext::subxt_core::utils::H256, >; } @@ -31877,10 +36684,9 @@ pub mod api { "OnChainVotes", (), [ - 200u8, 210u8, 42u8, 153u8, 85u8, 71u8, 171u8, 108u8, 148u8, 212u8, - 108u8, 61u8, 178u8, 77u8, 129u8, 90u8, 120u8, 218u8, 228u8, 152u8, - 120u8, 226u8, 29u8, 82u8, 239u8, 146u8, 41u8, 164u8, 193u8, 207u8, - 246u8, 115u8, + 97u8, 41u8, 197u8, 241u8, 12u8, 210u8, 132u8, 148u8, 4u8, 230u8, 206u8, + 170u8, 41u8, 135u8, 147u8, 63u8, 47u8, 192u8, 0u8, 133u8, 104u8, 186u8, + 137u8, 94u8, 227u8, 108u8, 253u8, 86u8, 207u8, 233u8, 65u8, 27u8, ], ) } @@ -31898,7 +36704,7 @@ pub mod api { use super::runtime_types; pub type ValidatorGroups = ::subxt::ext::subxt_core::alloc::vec::Vec< ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::ValidatorIndex, + runtime_types::polkadot_primitives::v7::ValidatorIndex, >, >; } @@ -31916,7 +36722,7 @@ pub mod api { } pub mod claim_queue { use super::runtime_types; - pub type ClaimQueue = :: subxt :: ext :: subxt_core :: utils :: KeyedVec < runtime_types :: polkadot_primitives :: v6 :: CoreIndex , :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < :: core :: option :: Option < runtime_types :: polkadot_runtime_parachains :: scheduler :: pallet :: ParasEntry < :: core :: primitive :: u32 > > > > ; + pub type ClaimQueue = :: subxt :: ext :: subxt_core :: utils :: KeyedVec < runtime_types :: polkadot_primitives :: v7 :: CoreIndex , :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: scheduler :: pallet :: ParasEntry < :: core :: primitive :: u32 > > > ; } } pub struct StorageApi; @@ -31948,10 +36754,8 @@ pub mod api { ], ) } - #[doc = " One entry for each availability core. Entries are `None` if the core is not currently"] - #[doc = " occupied. Can be temporarily `Some` if scheduled but not occupied."] - #[doc = " The i'th parachain belongs to the i'th core, with the remaining cores all being"] - #[doc = " parathread-multiplexers."] + #[doc = " One entry for each availability core. The i'th parachain belongs to the i'th core, with the"] + #[doc = " remaining cores all being on demand parachain multiplexers."] #[doc = ""] #[doc = " Bounded by the maximum of either of these two values:"] #[doc = " * The number of parachains and parathread multiplexers"] @@ -31970,9 +36774,10 @@ pub mod api { "AvailabilityCores", (), [ - 134u8, 59u8, 206u8, 4u8, 69u8, 72u8, 73u8, 25u8, 139u8, 152u8, 202u8, - 43u8, 224u8, 77u8, 64u8, 57u8, 218u8, 245u8, 254u8, 222u8, 227u8, 95u8, - 119u8, 134u8, 218u8, 47u8, 154u8, 233u8, 229u8, 172u8, 100u8, 86u8, + 250u8, 177u8, 44u8, 237u8, 5u8, 116u8, 135u8, 99u8, 136u8, 209u8, + 181u8, 145u8, 254u8, 57u8, 42u8, 92u8, 236u8, 67u8, 128u8, 171u8, + 200u8, 88u8, 40u8, 31u8, 163u8, 128u8, 15u8, 96u8, 181u8, 224u8, 162u8, + 188u8, ], ) } @@ -32004,10 +36809,8 @@ pub mod api { ) } #[doc = " One entry for each availability core. The `VecDeque` represents the assignments to be"] - #[doc = " scheduled on that core. `None` is used to signal to not schedule the next para of the core"] - #[doc = " as there is one currently being scheduled. Not using `None` here would overwrite the"] - #[doc = " `CoreState` in the runtime API. The value contained here will not be valid after the end of"] - #[doc = " a block. Runtime APIs should be used to determine scheduled cores/ for the upcoming block."] + #[doc = " scheduled on that core. The value contained here will not be valid after the end of"] + #[doc = " a block. Runtime APIs should be used to determine scheduled cores for the upcoming block."] pub fn claim_queue( &self, ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< @@ -32022,9 +36825,10 @@ pub mod api { "ClaimQueue", (), [ - 132u8, 78u8, 109u8, 225u8, 170u8, 78u8, 17u8, 53u8, 56u8, 218u8, 14u8, - 17u8, 230u8, 247u8, 11u8, 223u8, 18u8, 98u8, 92u8, 164u8, 223u8, 143u8, - 241u8, 64u8, 185u8, 108u8, 228u8, 137u8, 122u8, 100u8, 29u8, 239u8, + 192u8, 65u8, 227u8, 114u8, 125u8, 169u8, 134u8, 70u8, 201u8, 99u8, + 246u8, 23u8, 0u8, 143u8, 163u8, 87u8, 216u8, 1u8, 184u8, 124u8, 23u8, + 180u8, 132u8, 143u8, 202u8, 81u8, 144u8, 242u8, 15u8, 141u8, 124u8, + 126u8, ], ) } @@ -32058,7 +36862,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_set_current_code`]."] + #[doc = "Set the storage for the parachain validation code immediately."] pub struct ForceSetCurrentCode { pub para: force_set_current_code::Para, pub new_code: force_set_current_code::NewCode, @@ -32087,7 +36891,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_set_current_head`]."] + #[doc = "Set the storage for the current parachain head data immediately."] pub struct ForceSetCurrentHead { pub para: force_set_current_head::Para, pub new_head: force_set_current_head::NewHead, @@ -32116,7 +36920,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_schedule_code_upgrade`]."] + #[doc = "Schedule an upgrade as if it was scheduled in the given relay parent block."] pub struct ForceScheduleCodeUpgrade { pub para: force_schedule_code_upgrade::Para, pub new_code: force_schedule_code_upgrade::NewCode, @@ -32147,7 +36951,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_note_new_head`]."] + #[doc = "Note a new block head for para within the context of the current block."] pub struct ForceNoteNewHead { pub para: force_note_new_head::Para, pub new_head: force_note_new_head::NewHead, @@ -32176,7 +36980,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_queue_action`]."] + #[doc = "Put a parachain directly into the next session's action queue."] + #[doc = "We can't queue it any sooner than this without going into the"] + #[doc = "initializer..."] pub struct ForceQueueAction { pub para: force_queue_action::Para, } @@ -32202,7 +37008,20 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::add_trusted_validation_code`]."] + #[doc = "Adds the validation code to the storage."] + #[doc = ""] + #[doc = "The code will not be added if it is already present. Additionally, if PVF pre-checking"] + #[doc = "is running for that code, it will be instantly accepted."] + #[doc = ""] + #[doc = "Otherwise, the code will be added into the storage. Note that the code will be added"] + #[doc = "into storage with reference count 0. This is to account the fact that there are no users"] + #[doc = "for this code yet. The caller will have to make sure that this code eventually gets"] + #[doc = "used by some parachain or removed from the storage to avoid storage leaks. For the"] + #[doc = "latter prefer to use the `poke_unused_validation_code` dispatchable to raw storage"] + #[doc = "manipulation."] + #[doc = ""] + #[doc = "This function is mainly meant to be used for upgrading parachains that do not follow"] + #[doc = "the go-ahead signal while the PVF pre-checking feature is enabled."] pub struct AddTrustedValidationCode { pub validation_code: add_trusted_validation_code::ValidationCode, } @@ -32229,7 +37048,11 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::poke_unused_validation_code`]."] + #[doc = "Remove the validation code from the storage iff the reference count is 0."] + #[doc = ""] + #[doc = "This is better than removing the storage directly, because it will not remove the code"] + #[doc = "that was suddenly got used by some parachain while this dispatchable was pending"] + #[doc = "dispatching."] pub struct PokeUnusedValidationCode { pub validation_code_hash: poke_unused_validation_code::ValidationCodeHash, } @@ -32255,16 +37078,17 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::include_pvf_check_statement`]."] + #[doc = "Includes a statement for a PVF pre-checking vote. Potentially, finalizes the vote and"] + #[doc = "enacts the results if that was the last vote before achieving the supermajority."] pub struct IncludePvfCheckStatement { pub stmt: include_pvf_check_statement::Stmt, pub signature: include_pvf_check_statement::Signature, } pub mod include_pvf_check_statement { use super::runtime_types; - pub type Stmt = runtime_types::polkadot_primitives::v6::PvfCheckStatement; + pub type Stmt = runtime_types::polkadot_primitives::v7::PvfCheckStatement; pub type Signature = - runtime_types::polkadot_primitives::v6::validator_app::Signature; + runtime_types::polkadot_primitives::v7::validator_app::Signature; } impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for IncludePvfCheckStatement { const PALLET: &'static str = "Paras"; @@ -32284,7 +37108,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_set_most_recent_context`]."] + #[doc = "Set the storage for the current parachain head data immediately."] pub struct ForceSetMostRecentContext { pub para: force_set_most_recent_context::Para, pub context: force_set_most_recent_context::Context, @@ -32301,7 +37125,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::force_set_current_code`]."] + #[doc = "Set the storage for the parachain validation code immediately."] pub fn force_set_current_code( &self, para: types::force_set_current_code::Para, @@ -32320,7 +37144,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_set_current_head`]."] + #[doc = "Set the storage for the current parachain head data immediately."] pub fn force_set_current_head( &self, para: types::force_set_current_head::Para, @@ -32339,7 +37163,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_schedule_code_upgrade`]."] + #[doc = "Schedule an upgrade as if it was scheduled in the given relay parent block."] pub fn force_schedule_code_upgrade( &self, para: types::force_schedule_code_upgrade::Para, @@ -32364,7 +37188,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_note_new_head`]."] + #[doc = "Note a new block head for para within the context of the current block."] pub fn force_note_new_head( &self, para: types::force_note_new_head::Para, @@ -32382,7 +37206,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_queue_action`]."] + #[doc = "Put a parachain directly into the next session's action queue."] + #[doc = "We can't queue it any sooner than this without going into the"] + #[doc = "initializer..."] pub fn force_queue_action( &self, para: types::force_queue_action::Para, @@ -32400,7 +37226,20 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::add_trusted_validation_code`]."] + #[doc = "Adds the validation code to the storage."] + #[doc = ""] + #[doc = "The code will not be added if it is already present. Additionally, if PVF pre-checking"] + #[doc = "is running for that code, it will be instantly accepted."] + #[doc = ""] + #[doc = "Otherwise, the code will be added into the storage. Note that the code will be added"] + #[doc = "into storage with reference count 0. This is to account the fact that there are no users"] + #[doc = "for this code yet. The caller will have to make sure that this code eventually gets"] + #[doc = "used by some parachain or removed from the storage to avoid storage leaks. For the"] + #[doc = "latter prefer to use the `poke_unused_validation_code` dispatchable to raw storage"] + #[doc = "manipulation."] + #[doc = ""] + #[doc = "This function is mainly meant to be used for upgrading parachains that do not follow"] + #[doc = "the go-ahead signal while the PVF pre-checking feature is enabled."] pub fn add_trusted_validation_code( &self, validation_code: types::add_trusted_validation_code::ValidationCode, @@ -32419,7 +37258,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::poke_unused_validation_code`]."] + #[doc = "Remove the validation code from the storage iff the reference count is 0."] + #[doc = ""] + #[doc = "This is better than removing the storage directly, because it will not remove the code"] + #[doc = "that was suddenly got used by some parachain while this dispatchable was pending"] + #[doc = "dispatching."] pub fn poke_unused_validation_code( &self, validation_code_hash: types::poke_unused_validation_code::ValidationCodeHash, @@ -32439,7 +37282,8 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::include_pvf_check_statement`]."] + #[doc = "Includes a statement for a PVF pre-checking vote. Potentially, finalizes the vote and"] + #[doc = "enacts the results if that was the last vote before achieving the supermajority."] pub fn include_pvf_check_statement( &self, stmt: types::include_pvf_check_statement::Stmt, @@ -32452,14 +37296,13 @@ pub mod api { "include_pvf_check_statement", types::IncludePvfCheckStatement { stmt, signature }, [ - 104u8, 113u8, 121u8, 186u8, 41u8, 70u8, 254u8, 44u8, 207u8, 94u8, 61u8, - 148u8, 106u8, 240u8, 165u8, 223u8, 231u8, 190u8, 157u8, 97u8, 55u8, - 90u8, 229u8, 112u8, 129u8, 224u8, 29u8, 180u8, 242u8, 203u8, 195u8, - 19u8, + 207u8, 92u8, 120u8, 222u8, 183u8, 105u8, 82u8, 155u8, 62u8, 41u8, 87u8, + 66u8, 240u8, 71u8, 160u8, 114u8, 99u8, 195u8, 247u8, 190u8, 40u8, + 132u8, 71u8, 161u8, 109u8, 207u8, 9u8, 163u8, 125u8, 98u8, 71u8, 107u8, ], ) } - #[doc = "See [`Pallet::force_set_most_recent_context`]."] + #[doc = "Set the storage for the current parachain head data immediately."] pub fn force_set_most_recent_context( &self, para: types::force_set_most_recent_context::Para, @@ -32734,6 +37577,13 @@ pub mod api { pub type FutureCodeUpgrades = ::core::primitive::u32; pub type Param0 = runtime_types::polkadot_parachain_primitives::primitives::Id; } + pub mod future_code_upgrades_at { + use super::runtime_types; + pub type FutureCodeUpgradesAt = ::subxt::ext::subxt_core::alloc::vec::Vec<( + runtime_types::polkadot_parachain_primitives::primitives::Id, + ::core::primitive::u32, + )>; + } pub mod future_code_hash { use super::runtime_types; pub type FutureCodeHash = runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash ; @@ -32742,13 +37592,13 @@ pub mod api { pub mod upgrade_go_ahead_signal { use super::runtime_types; pub type UpgradeGoAheadSignal = - runtime_types::polkadot_primitives::v6::UpgradeGoAhead; + runtime_types::polkadot_primitives::v7::UpgradeGoAhead; pub type Param0 = runtime_types::polkadot_parachain_primitives::primitives::Id; } pub mod upgrade_restriction_signal { use super::runtime_types; pub type UpgradeRestrictionSignal = - runtime_types::polkadot_primitives::v6::UpgradeRestriction; + runtime_types::polkadot_primitives::v7::UpgradeRestriction; pub type Param0 = runtime_types::polkadot_parachain_primitives::primitives::Id; } pub mod upgrade_cooldowns { @@ -32810,9 +37660,9 @@ pub mod api { "PvfActiveVoteMap", (), [ - 72u8, 55u8, 139u8, 104u8, 161u8, 63u8, 114u8, 153u8, 16u8, 221u8, 60u8, - 88u8, 52u8, 207u8, 123u8, 193u8, 11u8, 30u8, 19u8, 39u8, 231u8, 39u8, - 251u8, 44u8, 248u8, 129u8, 181u8, 173u8, 248u8, 89u8, 43u8, 106u8, + 180u8, 73u8, 103u8, 207u8, 245u8, 111u8, 142u8, 8u8, 159u8, 143u8, + 245u8, 212u8, 149u8, 78u8, 213u8, 224u8, 206u8, 8u8, 95u8, 40u8, 24u8, + 72u8, 123u8, 41u8, 198u8, 190u8, 9u8, 33u8, 247u8, 205u8, 60u8, 199u8, ], ) } @@ -32839,9 +37689,9 @@ pub mod api { _0.borrow(), ), [ - 72u8, 55u8, 139u8, 104u8, 161u8, 63u8, 114u8, 153u8, 16u8, 221u8, 60u8, - 88u8, 52u8, 207u8, 123u8, 193u8, 11u8, 30u8, 19u8, 39u8, 231u8, 39u8, - 251u8, 44u8, 248u8, 129u8, 181u8, 173u8, 248u8, 89u8, 43u8, 106u8, + 180u8, 73u8, 103u8, 207u8, 245u8, 111u8, 142u8, 8u8, 159u8, 143u8, + 245u8, 212u8, 149u8, 78u8, 213u8, 224u8, 206u8, 8u8, 95u8, 40u8, 24u8, + 72u8, 123u8, 41u8, 198u8, 190u8, 9u8, 33u8, 247u8, 205u8, 60u8, 199u8, ], ) } @@ -33257,7 +38107,8 @@ pub mod api { ], ) } - #[doc = " The block number at which the planned code change is expected for a para."] + #[doc = " The block number at which the planned code change is expected for a parachain."] + #[doc = ""] #[doc = " The change will be applied after the first parablock for this ID included which executes"] #[doc = " in the context of a relay chain block with a number >= `expected_at`."] pub fn future_code_upgrades_iter( @@ -33280,7 +38131,8 @@ pub mod api { ], ) } - #[doc = " The block number at which the planned code change is expected for a para."] + #[doc = " The block number at which the planned code change is expected for a parachain."] + #[doc = ""] #[doc = " The change will be applied after the first parablock for this ID included which executes"] #[doc = " in the context of a relay chain block with a number >= `expected_at`."] pub fn future_code_upgrades( @@ -33308,6 +38160,35 @@ pub mod api { ], ) } + #[doc = " The list of upcoming future code upgrades."] + #[doc = ""] + #[doc = " Each item is a pair of the parachain and the expected block at which the upgrade should be"] + #[doc = " applied. The upgrade will be applied at the given relay chain block. In contrast to"] + #[doc = " [`FutureCodeUpgrades`] this code upgrade will be applied regardless the parachain making any"] + #[doc = " progress or not."] + #[doc = ""] + #[doc = " Ordered ascending by block number."] + pub fn future_code_upgrades_at( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::future_code_upgrades_at::FutureCodeUpgradesAt, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Paras", + "FutureCodeUpgradesAt", + (), + [ + 106u8, 115u8, 201u8, 132u8, 198u8, 78u8, 236u8, 157u8, 246u8, 176u8, + 236u8, 158u8, 90u8, 166u8, 25u8, 230u8, 30u8, 149u8, 163u8, 15u8, + 108u8, 145u8, 167u8, 118u8, 74u8, 211u8, 96u8, 173u8, 56u8, 11u8, + 181u8, 146u8, + ], + ) + } #[doc = " The actual future code hash of a para."] #[doc = ""] #[doc = " Corresponding code can be retrieved with [`CodeByHash`]."] @@ -33515,8 +38396,10 @@ pub mod api { ], ) } - #[doc = " The list of upcoming code upgrades. Each item is a pair of which para performs a code"] - #[doc = " upgrade and at which relay-chain block it is expected at."] + #[doc = " The list of upcoming code upgrades."] + #[doc = ""] + #[doc = " Each item is a pair of which para performs a code upgrade and at which relay-chain block it"] + #[doc = " is expected at."] #[doc = ""] #[doc = " Ordered ascending by block number."] pub fn upcoming_upgrades( @@ -33793,7 +38676,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_approve`]."] + #[doc = "Issue a signal to the consensus engine to forcibly act as though all parachain"] + #[doc = "blocks in all relay chain blocks up to and including the given number in the current"] + #[doc = "chain are valid and should be finalized."] pub struct ForceApprove { pub up_to: force_approve::UpTo, } @@ -33808,7 +38693,9 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::force_approve`]."] + #[doc = "Issue a signal to the consensus engine to forcibly act as though all parachain"] + #[doc = "blocks in all relay chain blocks up to and including the given number in the current"] + #[doc = "chain are valid and should be finalized."] pub fn force_approve( &self, up_to: types::force_approve::UpTo, @@ -33892,9 +38779,10 @@ pub mod api { "BufferedSessionChanges", (), [ - 99u8, 153u8, 100u8, 11u8, 28u8, 62u8, 163u8, 239u8, 177u8, 55u8, 151u8, - 242u8, 227u8, 59u8, 176u8, 10u8, 227u8, 51u8, 252u8, 191u8, 233u8, - 36u8, 1u8, 131u8, 255u8, 56u8, 6u8, 65u8, 5u8, 185u8, 114u8, 139u8, + 52u8, 253u8, 99u8, 88u8, 47u8, 128u8, 246u8, 183u8, 252u8, 144u8, + 187u8, 140u8, 169u8, 21u8, 167u8, 72u8, 246u8, 217u8, 140u8, 234u8, + 222u8, 57u8, 254u8, 33u8, 237u8, 212u8, 136u8, 204u8, 79u8, 185u8, + 83u8, 36u8, ], ) } @@ -34116,7 +39004,16 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::hrmp_init_open_channel`]."] + #[doc = "Initiate opening a channel from a parachain to a given recipient with given channel"] + #[doc = "parameters."] + #[doc = ""] + #[doc = "- `proposed_max_capacity` - specifies how many messages can be in the channel at once."] + #[doc = "- `proposed_max_message_size` - specifies the maximum size of the messages."] + #[doc = ""] + #[doc = "These numbers are a subject to the relay-chain configuration limits."] + #[doc = ""] + #[doc = "The channel can be opened only after the recipient confirms it and only on a session"] + #[doc = "change."] pub struct HrmpInitOpenChannel { pub recipient: hrmp_init_open_channel::Recipient, pub proposed_max_capacity: hrmp_init_open_channel::ProposedMaxCapacity, @@ -34147,7 +39044,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::hrmp_accept_open_channel`]."] + #[doc = "Accept a pending open channel request from the given sender."] + #[doc = ""] + #[doc = "The channel will be opened only on the next session boundary."] pub struct HrmpAcceptOpenChannel { pub sender: hrmp_accept_open_channel::Sender, } @@ -34173,7 +39072,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::hrmp_close_channel`]."] + #[doc = "Initiate unilateral closing of a channel. The origin must be either the sender or the"] + #[doc = "recipient in the channel being closed."] + #[doc = ""] + #[doc = "The closure can only happen on a session change."] pub struct HrmpCloseChannel { pub channel_id: hrmp_close_channel::ChannelId, } @@ -34200,7 +39102,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_clean_hrmp`]."] + #[doc = "This extrinsic triggers the cleanup of all the HRMP storage items that a para may have."] + #[doc = "Normally this happens once per session, but this allows you to trigger the cleanup"] + #[doc = "immediately for a specific parachain."] + #[doc = ""] + #[doc = "Number of inbound and outbound channels for `para` must be provided as witness data."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub struct ForceCleanHrmp { pub para: force_clean_hrmp::Para, pub num_inbound: force_clean_hrmp::NumInbound, @@ -34230,7 +39138,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_process_hrmp_open`]."] + #[doc = "Force process HRMP open channel requests."] + #[doc = ""] + #[doc = "If there are pending HRMP open channel requests, you can use this function to process"] + #[doc = "all of those requests immediately."] + #[doc = ""] + #[doc = "Total number of opening channels must be provided as witness data."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub struct ForceProcessHrmpOpen { pub channels: force_process_hrmp_open::Channels, } @@ -34256,7 +39171,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_process_hrmp_close`]."] + #[doc = "Force process HRMP close channel requests."] + #[doc = ""] + #[doc = "If there are pending HRMP close channel requests, you can use this function to process"] + #[doc = "all of those requests immediately."] + #[doc = ""] + #[doc = "Total number of closing channels must be provided as witness data."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub struct ForceProcessHrmpClose { pub channels: force_process_hrmp_close::Channels, } @@ -34282,7 +39204,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::hrmp_cancel_open_request`]."] + #[doc = "This cancels a pending open channel request. It can be canceled by either of the sender"] + #[doc = "or the recipient for that request. The origin must be either of those."] + #[doc = ""] + #[doc = "The cancellation happens immediately. It is not possible to cancel the request if it is"] + #[doc = "already accepted."] + #[doc = ""] + #[doc = "Total number of open requests (i.e. `HrmpOpenChannelRequestsList`) must be provided as"] + #[doc = "witness data."] pub struct HrmpCancelOpenRequest { pub channel_id: hrmp_cancel_open_request::ChannelId, pub open_requests: hrmp_cancel_open_request::OpenRequests, @@ -34311,7 +39240,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_open_hrmp_channel`]."] + #[doc = "Open a channel from a `sender` to a `recipient` `ParaId`. Although opened by governance,"] + #[doc = "the `max_capacity` and `max_message_size` are still subject to the Relay Chain's"] + #[doc = "configured limits."] + #[doc = ""] + #[doc = "Expected use is when one (and only one) of the `ParaId`s involved in the channel is"] + #[doc = "governed by the system, e.g. a system parachain."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub struct ForceOpenHrmpChannel { pub sender: force_open_hrmp_channel::Sender, pub recipient: force_open_hrmp_channel::Recipient, @@ -34344,7 +39280,18 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::establish_system_channel`]."] + #[doc = "Establish an HRMP channel between two system chains. If the channel does not already"] + #[doc = "exist, the transaction fees will be refunded to the caller. The system does not take"] + #[doc = "deposits for channels between system chains, and automatically sets the message number"] + #[doc = "and size limits to the maximum allowed by the network's configuration."] + #[doc = ""] + #[doc = "Arguments:"] + #[doc = ""] + #[doc = "- `sender`: A system chain, `ParaId`."] + #[doc = "- `recipient`: A system chain, `ParaId`."] + #[doc = ""] + #[doc = "Any signed origin can call this function, but _both_ inputs MUST be system chains. If"] + #[doc = "the channel does not exist yet, there is no fee."] pub struct EstablishSystemChannel { pub sender: establish_system_channel::Sender, pub recipient: establish_system_channel::Recipient, @@ -34373,7 +39320,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::poke_channel_deposits`]."] + #[doc = "Update the deposits held for an HRMP channel to the latest `Configuration`. Channels"] + #[doc = "with system chains do not require a deposit."] + #[doc = ""] + #[doc = "Arguments:"] + #[doc = ""] + #[doc = "- `sender`: A chain, `ParaId`."] + #[doc = "- `recipient`: A chain, `ParaId`."] + #[doc = ""] + #[doc = "Any signed origin can call this function."] pub struct PokeChannelDeposits { pub sender: poke_channel_deposits::Sender, pub recipient: poke_channel_deposits::Recipient, @@ -34388,10 +39343,52 @@ pub mod api { const PALLET: &'static str = "Hrmp"; const CALL: &'static str = "poke_channel_deposits"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Establish a bidirectional HRMP channel between a parachain and a system chain."] + #[doc = ""] + #[doc = "Arguments:"] + #[doc = ""] + #[doc = "- `target_system_chain`: A system chain, `ParaId`."] + #[doc = ""] + #[doc = "The origin needs to be the parachain origin."] + pub struct EstablishChannelWithSystem { + pub target_system_chain: establish_channel_with_system::TargetSystemChain, + } + pub mod establish_channel_with_system { + use super::runtime_types; + pub type TargetSystemChain = + runtime_types::polkadot_parachain_primitives::primitives::Id; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for EstablishChannelWithSystem { + const PALLET: &'static str = "Hrmp"; + const CALL: &'static str = "establish_channel_with_system"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::hrmp_init_open_channel`]."] + #[doc = "Initiate opening a channel from a parachain to a given recipient with given channel"] + #[doc = "parameters."] + #[doc = ""] + #[doc = "- `proposed_max_capacity` - specifies how many messages can be in the channel at once."] + #[doc = "- `proposed_max_message_size` - specifies the maximum size of the messages."] + #[doc = ""] + #[doc = "These numbers are a subject to the relay-chain configuration limits."] + #[doc = ""] + #[doc = "The channel can be opened only after the recipient confirms it and only on a session"] + #[doc = "change."] pub fn hrmp_init_open_channel( &self, recipient: types::hrmp_init_open_channel::Recipient, @@ -34415,7 +39412,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::hrmp_accept_open_channel`]."] + #[doc = "Accept a pending open channel request from the given sender."] + #[doc = ""] + #[doc = "The channel will be opened only on the next session boundary."] pub fn hrmp_accept_open_channel( &self, sender: types::hrmp_accept_open_channel::Sender, @@ -34433,7 +39432,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::hrmp_close_channel`]."] + #[doc = "Initiate unilateral closing of a channel. The origin must be either the sender or the"] + #[doc = "recipient in the channel being closed."] + #[doc = ""] + #[doc = "The closure can only happen on a session change."] pub fn hrmp_close_channel( &self, channel_id: types::hrmp_close_channel::ChannelId, @@ -34451,7 +39453,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_clean_hrmp`]."] + #[doc = "This extrinsic triggers the cleanup of all the HRMP storage items that a para may have."] + #[doc = "Normally this happens once per session, but this allows you to trigger the cleanup"] + #[doc = "immediately for a specific parachain."] + #[doc = ""] + #[doc = "Number of inbound and outbound channels for `para` must be provided as witness data."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub fn force_clean_hrmp( &self, para: types::force_clean_hrmp::Para, @@ -34474,7 +39482,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_process_hrmp_open`]."] + #[doc = "Force process HRMP open channel requests."] + #[doc = ""] + #[doc = "If there are pending HRMP open channel requests, you can use this function to process"] + #[doc = "all of those requests immediately."] + #[doc = ""] + #[doc = "Total number of opening channels must be provided as witness data."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub fn force_process_hrmp_open( &self, channels: types::force_process_hrmp_open::Channels, @@ -34492,7 +39507,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_process_hrmp_close`]."] + #[doc = "Force process HRMP close channel requests."] + #[doc = ""] + #[doc = "If there are pending HRMP close channel requests, you can use this function to process"] + #[doc = "all of those requests immediately."] + #[doc = ""] + #[doc = "Total number of closing channels must be provided as witness data."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub fn force_process_hrmp_close( &self, channels: types::force_process_hrmp_close::Channels, @@ -34511,7 +39533,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::hrmp_cancel_open_request`]."] + #[doc = "This cancels a pending open channel request. It can be canceled by either of the sender"] + #[doc = "or the recipient for that request. The origin must be either of those."] + #[doc = ""] + #[doc = "The cancellation happens immediately. It is not possible to cancel the request if it is"] + #[doc = "already accepted."] + #[doc = ""] + #[doc = "Total number of open requests (i.e. `HrmpOpenChannelRequestsList`) must be provided as"] + #[doc = "witness data."] pub fn hrmp_cancel_open_request( &self, channel_id: types::hrmp_cancel_open_request::ChannelId, @@ -34533,7 +39562,14 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_open_hrmp_channel`]."] + #[doc = "Open a channel from a `sender` to a `recipient` `ParaId`. Although opened by governance,"] + #[doc = "the `max_capacity` and `max_message_size` are still subject to the Relay Chain's"] + #[doc = "configured limits."] + #[doc = ""] + #[doc = "Expected use is when one (and only one) of the `ParaId`s involved in the channel is"] + #[doc = "governed by the system, e.g. a system parachain."] + #[doc = ""] + #[doc = "Origin must be the `ChannelManager`."] pub fn force_open_hrmp_channel( &self, sender: types::force_open_hrmp_channel::Sender, @@ -34558,7 +39594,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::establish_system_channel`]."] + #[doc = "Establish an HRMP channel between two system chains. If the channel does not already"] + #[doc = "exist, the transaction fees will be refunded to the caller. The system does not take"] + #[doc = "deposits for channels between system chains, and automatically sets the message number"] + #[doc = "and size limits to the maximum allowed by the network's configuration."] + #[doc = ""] + #[doc = "Arguments:"] + #[doc = ""] + #[doc = "- `sender`: A system chain, `ParaId`."] + #[doc = "- `recipient`: A system chain, `ParaId`."] + #[doc = ""] + #[doc = "Any signed origin can call this function, but _both_ inputs MUST be system chains. If"] + #[doc = "the channel does not exist yet, there is no fee."] pub fn establish_system_channel( &self, sender: types::establish_system_channel::Sender, @@ -34577,7 +39624,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::poke_channel_deposits`]."] + #[doc = "Update the deposits held for an HRMP channel to the latest `Configuration`. Channels"] + #[doc = "with system chains do not require a deposit."] + #[doc = ""] + #[doc = "Arguments:"] + #[doc = ""] + #[doc = "- `sender`: A chain, `ParaId`."] + #[doc = "- `recipient`: A chain, `ParaId`."] + #[doc = ""] + #[doc = "Any signed origin can call this function."] pub fn poke_channel_deposits( &self, sender: types::poke_channel_deposits::Sender, @@ -34595,6 +39650,32 @@ pub mod api { ], ) } + #[doc = "Establish a bidirectional HRMP channel between a parachain and a system chain."] + #[doc = ""] + #[doc = "Arguments:"] + #[doc = ""] + #[doc = "- `target_system_chain`: A system chain, `ParaId`."] + #[doc = ""] + #[doc = "The origin needs to be the parachain origin."] + pub fn establish_channel_with_system( + &self, + target_system_chain: types::establish_channel_with_system::TargetSystemChain, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload< + types::EstablishChannelWithSystem, + > { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Hrmp", + "establish_channel_with_system", + types::EstablishChannelWithSystem { + target_system_chain, + }, + [ + 97u8, 88u8, 72u8, 195u8, 37u8, 11u8, 77u8, 206u8, 254u8, 81u8, 104u8, + 73u8, 220u8, 240u8, 187u8, 154u8, 131u8, 146u8, 128u8, 116u8, 223u8, + 35u8, 105u8, 236u8, 208u8, 99u8, 233u8, 74u8, 115u8, 166u8, 5u8, 205u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -34741,7 +39822,7 @@ pub mod api { # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] - #[doc = "An HRMP channel was opened between two system chains."] + #[doc = "An HRMP channel was opened with a system chain."] pub struct HrmpSystemChannelOpened { pub sender: hrmp_system_channel_opened::Sender, pub recipient: hrmp_system_channel_opened::Recipient, @@ -35486,7 +40567,7 @@ pub mod api { pub mod assignment_keys_unsafe { use super::runtime_types; pub type AssignmentKeysUnsafe = ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::assignment_app::Public, + runtime_types::polkadot_primitives::v7::assignment_app::Public, >; } pub mod earliest_stored_session { @@ -35495,7 +40576,7 @@ pub mod api { } pub mod sessions { use super::runtime_types; - pub type Sessions = runtime_types::polkadot_primitives::v6::SessionInfo; + pub type Sessions = runtime_types::polkadot_primitives::v7::SessionInfo; pub type Param0 = ::core::primitive::u32; } pub mod account_keys { @@ -35508,7 +40589,7 @@ pub mod api { pub mod session_executor_params { use super::runtime_types; pub type SessionExecutorParams = - runtime_types::polkadot_primitives::v6::executor_params::ExecutorParams; + runtime_types::polkadot_primitives::v7::executor_params::ExecutorParams; pub type Param0 = ::core::primitive::u32; } } @@ -35531,9 +40612,10 @@ pub mod api { "AssignmentKeysUnsafe", (), [ - 51u8, 155u8, 91u8, 101u8, 118u8, 243u8, 134u8, 138u8, 147u8, 59u8, - 195u8, 186u8, 54u8, 187u8, 36u8, 14u8, 91u8, 141u8, 60u8, 139u8, 28u8, - 74u8, 111u8, 232u8, 198u8, 229u8, 61u8, 63u8, 72u8, 214u8, 152u8, 2u8, + 180u8, 187u8, 151u8, 97u8, 28u8, 143u8, 44u8, 107u8, 127u8, 16u8, 82u8, + 208u8, 210u8, 99u8, 211u8, 54u8, 252u8, 164u8, 138u8, 142u8, 124u8, + 117u8, 217u8, 184u8, 223u8, 65u8, 45u8, 143u8, 220u8, 212u8, 254u8, + 173u8, ], ) } @@ -35575,10 +40657,10 @@ pub mod api { "Sessions", (), [ - 254u8, 40u8, 169u8, 18u8, 252u8, 203u8, 49u8, 182u8, 123u8, 19u8, - 241u8, 150u8, 227u8, 153u8, 108u8, 109u8, 66u8, 129u8, 157u8, 27u8, - 130u8, 215u8, 105u8, 18u8, 163u8, 72u8, 182u8, 243u8, 31u8, 157u8, - 103u8, 111u8, + 234u8, 87u8, 239u8, 243u8, 224u8, 177u8, 208u8, 208u8, 80u8, 111u8, + 190u8, 108u8, 189u8, 81u8, 68u8, 30u8, 108u8, 83u8, 43u8, 150u8, 87u8, + 156u8, 68u8, 231u8, 151u8, 67u8, 26u8, 223u8, 218u8, 137u8, 229u8, + 228u8, ], ) } @@ -35604,10 +40686,10 @@ pub mod api { _0.borrow(), ), [ - 254u8, 40u8, 169u8, 18u8, 252u8, 203u8, 49u8, 182u8, 123u8, 19u8, - 241u8, 150u8, 227u8, 153u8, 108u8, 109u8, 66u8, 129u8, 157u8, 27u8, - 130u8, 215u8, 105u8, 18u8, 163u8, 72u8, 182u8, 243u8, 31u8, 157u8, - 103u8, 111u8, + 234u8, 87u8, 239u8, 243u8, 224u8, 177u8, 208u8, 208u8, 80u8, 111u8, + 190u8, 108u8, 189u8, 81u8, 68u8, 30u8, 108u8, 83u8, 43u8, 150u8, 87u8, + 156u8, 68u8, 231u8, 151u8, 67u8, 26u8, 223u8, 218u8, 137u8, 229u8, + 228u8, ], ) } @@ -35675,10 +40757,9 @@ pub mod api { "SessionExecutorParams", (), [ - 102u8, 51u8, 28u8, 199u8, 238u8, 229u8, 99u8, 38u8, 116u8, 154u8, - 250u8, 136u8, 240u8, 122u8, 82u8, 13u8, 139u8, 160u8, 149u8, 218u8, - 162u8, 130u8, 109u8, 251u8, 10u8, 109u8, 200u8, 158u8, 32u8, 157u8, - 84u8, 234u8, + 38u8, 80u8, 118u8, 112u8, 189u8, 55u8, 95u8, 184u8, 19u8, 8u8, 114u8, + 6u8, 173u8, 80u8, 254u8, 98u8, 107u8, 202u8, 215u8, 107u8, 149u8, + 157u8, 145u8, 8u8, 249u8, 255u8, 83u8, 199u8, 47u8, 179u8, 208u8, 83u8, ], ) } @@ -35702,10 +40783,9 @@ pub mod api { _0.borrow(), ), [ - 102u8, 51u8, 28u8, 199u8, 238u8, 229u8, 99u8, 38u8, 116u8, 154u8, - 250u8, 136u8, 240u8, 122u8, 82u8, 13u8, 139u8, 160u8, 149u8, 218u8, - 162u8, 130u8, 109u8, 251u8, 10u8, 109u8, 200u8, 158u8, 32u8, 157u8, - 84u8, 234u8, + 38u8, 80u8, 118u8, 112u8, 189u8, 55u8, 95u8, 184u8, 19u8, 8u8, 114u8, + 6u8, 173u8, 80u8, 254u8, 98u8, 107u8, 202u8, 215u8, 107u8, 149u8, + 157u8, 145u8, 8u8, 249u8, 255u8, 83u8, 199u8, 47u8, 179u8, 208u8, 83u8, ], ) } @@ -35739,7 +40819,6 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_unfreeze`]."] pub struct ForceUnfreeze; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceUnfreeze { const PALLET: &'static str = "ParasDisputes"; @@ -35748,7 +40827,6 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::force_unfreeze`]."] pub fn force_unfreeze( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -35855,7 +40933,7 @@ pub mod api { } pub mod disputes { use super::runtime_types; - pub type Disputes = runtime_types::polkadot_primitives::v6::DisputeState< + pub type Disputes = runtime_types::polkadot_primitives::v7::DisputeState< ::core::primitive::u32, >; pub type Param0 = ::core::primitive::u32; @@ -35864,7 +40942,7 @@ pub mod api { pub mod backers_on_disputes { use super::runtime_types; pub type BackersOnDisputes = ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::ValidatorIndex, + runtime_types::polkadot_primitives::v7::ValidatorIndex, >; pub type Param0 = ::core::primitive::u32; pub type Param1 = runtime_types::polkadot_core_primitives::CandidateHash; @@ -36228,7 +41306,6 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::report_dispute_lost_unsigned`]."] pub struct ReportDisputeLostUnsigned { pub dispute_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< report_dispute_lost_unsigned::DisputeProof, @@ -36238,7 +41315,7 @@ pub mod api { pub mod report_dispute_lost_unsigned { use super::runtime_types; pub type DisputeProof = - runtime_types::polkadot_primitives::v6::slashing::DisputeProof; + runtime_types::polkadot_primitives::v7::slashing::DisputeProof; pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; } impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ReportDisputeLostUnsigned { @@ -36248,7 +41325,6 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::report_dispute_lost_unsigned`]."] pub fn report_dispute_lost_unsigned( &self, dispute_proof: types::report_dispute_lost_unsigned::DisputeProof, @@ -36266,10 +41342,9 @@ pub mod api { key_owner_proof, }, [ - 57u8, 99u8, 246u8, 126u8, 203u8, 239u8, 64u8, 182u8, 167u8, 204u8, - 96u8, 221u8, 126u8, 94u8, 254u8, 210u8, 18u8, 182u8, 207u8, 32u8, - 250u8, 249u8, 116u8, 156u8, 210u8, 63u8, 254u8, 74u8, 86u8, 101u8, - 28u8, 229u8, + 18u8, 73u8, 202u8, 17u8, 170u8, 157u8, 84u8, 74u8, 185u8, 45u8, 77u8, + 154u8, 79u8, 108u8, 36u8, 247u8, 125u8, 6u8, 170u8, 179u8, 64u8, 149u8, + 201u8, 138u8, 74u8, 148u8, 37u8, 120u8, 235u8, 220u8, 214u8, 95u8, ], ) } @@ -36282,7 +41357,7 @@ pub mod api { pub mod unapplied_slashes { use super::runtime_types; pub type UnappliedSlashes = - runtime_types::polkadot_primitives::v6::slashing::PendingSlashes; + runtime_types::polkadot_primitives::v7::slashing::PendingSlashes; pub type Param0 = ::core::primitive::u32; pub type Param1 = runtime_types::polkadot_core_primitives::CandidateHash; } @@ -36309,10 +41384,10 @@ pub mod api { "UnappliedSlashes", (), [ - 114u8, 171u8, 137u8, 142u8, 180u8, 125u8, 226u8, 240u8, 99u8, 181u8, - 68u8, 221u8, 91u8, 124u8, 172u8, 93u8, 103u8, 12u8, 95u8, 43u8, 67u8, - 59u8, 29u8, 133u8, 140u8, 17u8, 141u8, 228u8, 145u8, 201u8, 82u8, - 126u8, + 139u8, 156u8, 52u8, 31u8, 151u8, 223u8, 139u8, 230u8, 222u8, 217u8, + 12u8, 49u8, 83u8, 192u8, 23u8, 89u8, 204u8, 185u8, 212u8, 185u8, 176u8, + 49u8, 91u8, 206u8, 184u8, 98u8, 65u8, 151u8, 246u8, 128u8, 149u8, + 186u8, ], ) } @@ -36336,10 +41411,10 @@ pub mod api { _0.borrow(), ), [ - 114u8, 171u8, 137u8, 142u8, 180u8, 125u8, 226u8, 240u8, 99u8, 181u8, - 68u8, 221u8, 91u8, 124u8, 172u8, 93u8, 103u8, 12u8, 95u8, 43u8, 67u8, - 59u8, 29u8, 133u8, 140u8, 17u8, 141u8, 228u8, 145u8, 201u8, 82u8, - 126u8, + 139u8, 156u8, 52u8, 31u8, 151u8, 223u8, 139u8, 230u8, 222u8, 217u8, + 12u8, 49u8, 83u8, 192u8, 23u8, 89u8, 204u8, 185u8, 212u8, 185u8, 176u8, + 49u8, 91u8, 206u8, 184u8, 98u8, 65u8, 151u8, 246u8, 128u8, 149u8, + 186u8, ], ) } @@ -36374,10 +41449,10 @@ pub mod api { ), ), [ - 114u8, 171u8, 137u8, 142u8, 180u8, 125u8, 226u8, 240u8, 99u8, 181u8, - 68u8, 221u8, 91u8, 124u8, 172u8, 93u8, 103u8, 12u8, 95u8, 43u8, 67u8, - 59u8, 29u8, 133u8, 140u8, 17u8, 141u8, 228u8, 145u8, 201u8, 82u8, - 126u8, + 139u8, 156u8, 52u8, 31u8, 151u8, 223u8, 139u8, 230u8, 222u8, 217u8, + 12u8, 49u8, 83u8, 192u8, 23u8, 89u8, 204u8, 185u8, 212u8, 185u8, 176u8, + 49u8, 91u8, 206u8, 184u8, 98u8, 65u8, 151u8, 246u8, 128u8, 149u8, + 186u8, ], ) } @@ -36458,7 +41533,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::reap_page`]."] + #[doc = "Remove a page which has no more messages remaining to be processed or is stale."] pub struct ReapPage { pub message_origin: reap_page::MessageOrigin, pub page_index: reap_page::PageIndex, @@ -36486,7 +41561,19 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::execute_overweight`]."] + #[doc = "Execute an overweight message."] + #[doc = ""] + #[doc = "Temporary processing errors will be propagated whereas permanent errors are treated"] + #[doc = "as success condition."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `message_origin`: The origin from which the message to be executed arrived."] + #[doc = "- `page`: The page in the queue in which the message to be executed is sitting."] + #[doc = "- `index`: The index into the queue of the message to be executed."] + #[doc = "- `weight_limit`: The maximum amount of weight allowed to be consumed in the execution"] + #[doc = " of the message."] + #[doc = ""] + #[doc = "Benchmark complexity considerations: O(index + weight_limit)."] pub struct ExecuteOverweight { pub message_origin: execute_overweight::MessageOrigin, pub page: execute_overweight::Page, @@ -36507,7 +41594,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::reap_page`]."] + #[doc = "Remove a page which has no more messages remaining to be processed or is stale."] pub fn reap_page( &self, message_origin: types::reap_page::MessageOrigin, @@ -36528,7 +41615,19 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::execute_overweight`]."] + #[doc = "Execute an overweight message."] + #[doc = ""] + #[doc = "Temporary processing errors will be propagated whereas permanent errors are treated"] + #[doc = "as success condition."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `message_origin`: The origin from which the message to be executed arrived."] + #[doc = "- `page`: The page in the queue in which the message to be executed is sitting."] + #[doc = "- `index`: The index into the queue of the message to be executed."] + #[doc = "- `weight_limit`: The maximum amount of weight allowed to be consumed in the execution"] + #[doc = " of the message."] + #[doc = ""] + #[doc = "Benchmark complexity considerations: O(index + weight_limit)."] pub fn execute_overweight( &self, message_origin: types::execute_overweight::MessageOrigin, @@ -36578,7 +41677,7 @@ pub mod api { } pub mod processing_failed { use super::runtime_types; - pub type Id = [::core::primitive::u8; 32usize]; + pub type Id = ::subxt::ext::subxt_core::utils::H256; pub type Origin = runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin; pub type Error = @@ -36607,7 +41706,7 @@ pub mod api { } pub mod processed { use super::runtime_types; - pub type Id = [::core::primitive::u8; 32usize]; + pub type Id = ::subxt::ext::subxt_core::utils::H256; pub type Origin = runtime_types::polkadot_runtime_parachains::inclusion::AggregateMessageOrigin; pub type WeightUsed = runtime_types::sp_weights::weight_v2::Weight; @@ -36900,10 +41999,11 @@ pub mod api { ) } #[doc = " The amount of weight (if any) which should be provided to the message queue for"] - #[doc = " servicing enqueued items."] + #[doc = " servicing enqueued items `on_initialize`."] #[doc = ""] #[doc = " This may be legitimately `None` in the case that you will call"] - #[doc = " `ServiceQueues::service_queues` manually."] + #[doc = " `ServiceQueues::service_queues` manually or set [`Self::IdleMaxServiceWeight`] to have"] + #[doc = " it run in `on_idle`."] pub fn service_weight( &self, ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< @@ -36919,21 +42019,29 @@ pub mod api { ], ) } + #[doc = " The maximum amount of weight (if any) to be used from remaining weight `on_idle` which"] + #[doc = " should be provided to the message queue for servicing enqueued items `on_idle`."] + #[doc = " Useful for parachains to process messages at the same block they are received."] + #[doc = ""] + #[doc = " If `None`, it will not call `ServiceQueues::service_queues` in `on_idle`."] + pub fn idle_max_service_weight( + &self, + ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< + ::core::option::Option, + > { + ::subxt::ext::subxt_core::constants::address::StaticAddress::new_static( + "MessageQueue", + "IdleMaxServiceWeight", + [ + 204u8, 140u8, 63u8, 167u8, 49u8, 8u8, 148u8, 163u8, 190u8, 224u8, 15u8, + 103u8, 86u8, 153u8, 248u8, 117u8, 223u8, 117u8, 210u8, 80u8, 205u8, + 155u8, 40u8, 11u8, 59u8, 63u8, 129u8, 156u8, 17u8, 83u8, 177u8, 250u8, + ], + ) + } } } } - pub mod para_assignment_provider { - use super::root_mod; - use super::runtime_types; - pub mod storage { - use super::runtime_types; - pub mod types { - use super::runtime_types; - } - pub struct StorageApi; - impl StorageApi {} - } - } pub mod on_demand_assignment_provider { use super::root_mod; use super::runtime_types; @@ -36963,7 +42071,22 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::place_order_allow_death`]."] + #[doc = "Create a single on demand core order."] + #[doc = "Will use the spot price for the current block and will reap the account if needed."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] + #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] + #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] + #[doc = ""] + #[doc = "Errors:"] + #[doc = "- `InsufficientBalance`: from the Currency implementation"] + #[doc = "- `InvalidParaId`"] + #[doc = "- `QueueFull`"] + #[doc = "- `SpotPriceHigherThanMaxAmount`"] + #[doc = ""] + #[doc = "Events:"] + #[doc = "- `SpotOrderPlaced`"] pub struct PlaceOrderAllowDeath { pub max_amount: place_order_allow_death::MaxAmount, pub para_id: place_order_allow_death::ParaId, @@ -36991,7 +42114,22 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::place_order_keep_alive`]."] + #[doc = "Same as the [`place_order_allow_death`](Self::place_order_allow_death) call , but with a"] + #[doc = "check that placing the order will not reap the account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] + #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] + #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] + #[doc = ""] + #[doc = "Errors:"] + #[doc = "- `InsufficientBalance`: from the Currency implementation"] + #[doc = "- `InvalidParaId`"] + #[doc = "- `QueueFull`"] + #[doc = "- `SpotPriceHigherThanMaxAmount`"] + #[doc = ""] + #[doc = "Events:"] + #[doc = "- `SpotOrderPlaced`"] pub struct PlaceOrderKeepAlive { pub max_amount: place_order_keep_alive::MaxAmount, pub para_id: place_order_keep_alive::ParaId, @@ -37008,7 +42146,22 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::place_order_allow_death`]."] + #[doc = "Create a single on demand core order."] + #[doc = "Will use the spot price for the current block and will reap the account if needed."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] + #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] + #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] + #[doc = ""] + #[doc = "Errors:"] + #[doc = "- `InsufficientBalance`: from the Currency implementation"] + #[doc = "- `InvalidParaId`"] + #[doc = "- `QueueFull`"] + #[doc = "- `SpotPriceHigherThanMaxAmount`"] + #[doc = ""] + #[doc = "Events:"] + #[doc = "- `SpotOrderPlaced`"] pub fn place_order_allow_death( &self, max_amount: types::place_order_allow_death::MaxAmount, @@ -37030,7 +42183,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::place_order_keep_alive`]."] + #[doc = "Same as the [`place_order_allow_death`](Self::place_order_allow_death) call , but with a"] + #[doc = "check that placing the order will not reap the account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] + #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] + #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] + #[doc = ""] + #[doc = "Errors:"] + #[doc = "- `InsufficientBalance`: from the Currency implementation"] + #[doc = "- `InvalidParaId`"] + #[doc = "- `QueueFull`"] + #[doc = "- `SpotPriceHigherThanMaxAmount`"] + #[doc = ""] + #[doc = "Events:"] + #[doc = "- `SpotOrderPlaced`"] pub fn place_order_keep_alive( &self, max_amount: types::place_order_keep_alive::MaxAmount, @@ -37109,69 +42277,27 @@ pub mod api { use super::runtime_types; pub mod types { use super::runtime_types; - pub mod spot_traffic { - use super::runtime_types; - pub type SpotTraffic = runtime_types::sp_arithmetic::fixed_point::FixedU128; - } - pub mod on_demand_queue { - use super::runtime_types; - pub type OnDemandQueue = ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_runtime_parachains::scheduler::common::Assignment, - >; - } pub mod para_id_affinity { use super::runtime_types; pub type ParaIdAffinity = runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: CoreAffinityCount ; pub type Param0 = runtime_types::polkadot_parachain_primitives::primitives::Id; } + pub mod queue_status { + use super::runtime_types; + pub type QueueStatus = runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: QueueStatusType ; + } + pub mod free_entries { + use super::runtime_types; + pub type FreeEntries = :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: EnqueuedOrder > ; + } + pub mod affinity_entries { + use super::runtime_types; + pub type AffinityEntries = :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: EnqueuedOrder > ; + pub type Param0 = runtime_types::polkadot_primitives::v7::CoreIndex; + } } pub struct StorageApi; impl StorageApi { - #[doc = " Keeps track of the multiplier used to calculate the current spot price for the on demand"] - #[doc = " assigner."] - pub fn spot_traffic( - &self, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - (), - types::spot_traffic::SpotTraffic, - ::subxt::ext::subxt_core::utils::Yes, - ::subxt::ext::subxt_core::utils::Yes, - (), - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "OnDemandAssignmentProvider", - "SpotTraffic", - (), - [ - 8u8, 236u8, 233u8, 156u8, 211u8, 45u8, 192u8, 58u8, 108u8, 247u8, 47u8, - 97u8, 229u8, 26u8, 188u8, 67u8, 98u8, 43u8, 11u8, 11u8, 1u8, 127u8, - 15u8, 75u8, 25u8, 19u8, 220u8, 16u8, 121u8, 223u8, 207u8, 226u8, - ], - ) - } - #[doc = " The order storage entry. Uses a VecDeque to be able to push to the front of the"] - #[doc = " queue from the scheduler on session boundaries."] - pub fn on_demand_queue( - &self, - ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - (), - types::on_demand_queue::OnDemandQueue, - ::subxt::ext::subxt_core::utils::Yes, - ::subxt::ext::subxt_core::utils::Yes, - (), - > { - ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( - "OnDemandAssignmentProvider", - "OnDemandQueue", - (), - [ - 241u8, 10u8, 89u8, 240u8, 227u8, 90u8, 218u8, 35u8, 80u8, 244u8, 219u8, - 112u8, 177u8, 143u8, 43u8, 228u8, 224u8, 165u8, 217u8, 65u8, 17u8, - 182u8, 61u8, 173u8, 214u8, 140u8, 224u8, 68u8, 68u8, 226u8, 208u8, - 156u8, - ], - ) - } #[doc = " Maps a `ParaId` to `CoreIndex` and keeps track of how many assignments the scheduler has in"] #[doc = " it's lookahead. Keeping track of this affinity prevents parallel execution of the same"] #[doc = " `ParaId` on two or more `CoreIndex`es."] @@ -37189,9 +42315,10 @@ pub mod api { "ParaIdAffinity", (), [ - 145u8, 117u8, 2u8, 170u8, 99u8, 68u8, 166u8, 236u8, 247u8, 80u8, 202u8, - 87u8, 116u8, 244u8, 218u8, 172u8, 41u8, 187u8, 170u8, 163u8, 187u8, - 13u8, 9u8, 19u8, 55u8, 167u8, 67u8, 30u8, 57u8, 162u8, 226u8, 65u8, + 84u8, 171u8, 103u8, 180u8, 176u8, 210u8, 232u8, 184u8, 221u8, 129u8, + 174u8, 253u8, 250u8, 168u8, 2u8, 250u8, 105u8, 143u8, 120u8, 204u8, + 30u8, 242u8, 151u8, 44u8, 48u8, 150u8, 81u8, 194u8, 191u8, 91u8, 29u8, + 46u8, ], ) } @@ -37202,7 +42329,9 @@ pub mod api { &self, _0: impl ::core::borrow::Borrow, ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< - (), + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::para_id_affinity::Param0, + >, types::para_id_affinity::ParaIdAffinity, ::subxt::ext::subxt_core::utils::Yes, (), @@ -37211,11 +42340,106 @@ pub mod api { ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( "OnDemandAssignmentProvider", "ParaIdAffinity", + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + [ + 84u8, 171u8, 103u8, 180u8, 176u8, 210u8, 232u8, 184u8, 221u8, 129u8, + 174u8, 253u8, 250u8, 168u8, 2u8, 250u8, 105u8, 143u8, 120u8, 204u8, + 30u8, 242u8, 151u8, 44u8, 48u8, 150u8, 81u8, 194u8, 191u8, 91u8, 29u8, + 46u8, + ], + ) + } + #[doc = " Overall status of queue (both free + affinity entries)"] + pub fn queue_status( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::queue_status::QueueStatus, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "OnDemandAssignmentProvider", + "QueueStatus", (), [ - 145u8, 117u8, 2u8, 170u8, 99u8, 68u8, 166u8, 236u8, 247u8, 80u8, 202u8, - 87u8, 116u8, 244u8, 218u8, 172u8, 41u8, 187u8, 170u8, 163u8, 187u8, - 13u8, 9u8, 19u8, 55u8, 167u8, 67u8, 30u8, 57u8, 162u8, 226u8, 65u8, + 44u8, 67u8, 88u8, 179u8, 0u8, 178u8, 233u8, 101u8, 156u8, 215u8, 99u8, + 242u8, 236u8, 2u8, 153u8, 32u8, 214u8, 247u8, 193u8, 234u8, 194u8, + 30u8, 182u8, 151u8, 18u8, 121u8, 208u8, 146u8, 231u8, 6u8, 162u8, 20u8, + ], + ) + } + #[doc = " Priority queue for all orders which don't yet (or not any more) have any core affinity."] + pub fn free_entries( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::free_entries::FreeEntries, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "OnDemandAssignmentProvider", + "FreeEntries", + (), + [ + 229u8, 190u8, 235u8, 140u8, 35u8, 221u8, 62u8, 119u8, 131u8, 211u8, + 177u8, 218u8, 84u8, 132u8, 135u8, 118u8, 138u8, 227u8, 186u8, 52u8, + 102u8, 190u8, 155u8, 123u8, 232u8, 136u8, 97u8, 203u8, 55u8, 113u8, + 194u8, 7u8, + ], + ) + } + #[doc = " Queue entries that are currently bound to a particular core due to core affinity."] + pub fn affinity_entries_iter( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::affinity_entries::AffinityEntries, + (), + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "OnDemandAssignmentProvider", + "AffinityEntries", + (), + [ + 130u8, 236u8, 62u8, 133u8, 71u8, 121u8, 51u8, 37u8, 27u8, 240u8, 134u8, + 28u8, 221u8, 211u8, 28u8, 182u8, 222u8, 220u8, 249u8, 227u8, 2u8, + 124u8, 71u8, 252u8, 208u8, 36u8, 219u8, 147u8, 235u8, 254u8, 36u8, + 90u8, + ], + ) + } + #[doc = " Queue entries that are currently bound to a particular core due to core affinity."] + pub fn affinity_entries( + &self, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::affinity_entries::Param0, + >, + types::affinity_entries::AffinityEntries, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "OnDemandAssignmentProvider", + "AffinityEntries", + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + [ + 130u8, 236u8, 62u8, 133u8, 71u8, 121u8, 51u8, 37u8, 27u8, 240u8, 134u8, + 28u8, 221u8, 211u8, 28u8, 182u8, 222u8, 220u8, 249u8, 227u8, 2u8, + 124u8, 71u8, 252u8, 208u8, 36u8, 219u8, 147u8, 235u8, 254u8, 36u8, + 90u8, ], ) } @@ -37245,9 +42469,159 @@ pub mod api { } } } - pub mod parachains_assignment_provider { + pub mod coretime_assignment_provider { use super::root_mod; use super::runtime_types; + #[doc = "The `Error` enum of this pallet."] + pub type Error = + runtime_types::polkadot_runtime_parachains::assigner_coretime::pallet::Error; + pub mod storage { + use super::runtime_types; + pub mod types { + use super::runtime_types; + pub mod core_schedules { + use super::runtime_types; + pub type CoreSchedules = + runtime_types::polkadot_runtime_parachains::assigner_coretime::Schedule< + ::core::primitive::u32, + >; + pub type Param0 = ::core::primitive::u32; + pub type Param1 = runtime_types::polkadot_primitives::v7::CoreIndex; + } + pub mod core_descriptors { + use super::runtime_types; + pub type CoreDescriptors = runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: CoreDescriptor < :: core :: primitive :: u32 > ; + pub type Param0 = runtime_types::polkadot_primitives::v7::CoreIndex; + } + } + pub struct StorageApi; + impl StorageApi { + #[doc = " Scheduled assignment sets."] + #[doc = ""] + #[doc = " Assignments as of the given block number. They will go into state once the block number is"] + #[doc = " reached (and replace whatever was in there before)."] + pub fn core_schedules_iter( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::core_schedules::CoreSchedules, + (), + (), + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "CoretimeAssignmentProvider", + "CoreSchedules", + (), + [ + 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, + 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, + 57u8, 248u8, 24u8, 145u8, 34u8, 74u8, 21u8, 225u8, 159u8, 232u8, + ], + ) + } + #[doc = " Scheduled assignment sets."] + #[doc = ""] + #[doc = " Assignments as of the given block number. They will go into state once the block number is"] + #[doc = " reached (and replace whatever was in there before)."] + pub fn core_schedules_iter1( + &self, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::core_schedules::CoreSchedules, + (), + (), + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "CoretimeAssignmentProvider", + "CoreSchedules", + (), + [ + 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, + 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, + 57u8, 248u8, 24u8, 145u8, 34u8, 74u8, 21u8, 225u8, 159u8, 232u8, + ], + ) + } + #[doc = " Scheduled assignment sets."] + #[doc = ""] + #[doc = " Assignments as of the given block number. They will go into state once the block number is"] + #[doc = " reached (and replace whatever was in there before)."] + pub fn core_schedules( + &self, + _0: impl ::core::borrow::Borrow, + _1: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + ((), ()), + types::core_schedules::CoreSchedules, + ::subxt::ext::subxt_core::utils::Yes, + (), + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "CoretimeAssignmentProvider", + "CoreSchedules", + ((), ()), + [ + 34u8, 85u8, 91u8, 158u8, 28u8, 200u8, 76u8, 188u8, 253u8, 91u8, 153u8, + 42u8, 42u8, 227u8, 119u8, 181u8, 247u8, 44u8, 29u8, 24u8, 128u8, 49u8, + 57u8, 248u8, 24u8, 145u8, 34u8, 74u8, 21u8, 225u8, 159u8, 232u8, + ], + ) + } + #[doc = " Assignments which are currently active."] + #[doc = ""] + #[doc = " They will be picked from `PendingAssignments` once we reach the scheduled block number in"] + #[doc = " `PendingAssignments`."] + pub fn core_descriptors_iter( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::core_descriptors::CoreDescriptors, + (), + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "CoretimeAssignmentProvider", + "CoreDescriptors", + (), + [ + 1u8, 90u8, 208u8, 119u8, 150u8, 241u8, 133u8, 74u8, 22u8, 166u8, 13u8, + 7u8, 73u8, 136u8, 105u8, 61u8, 251u8, 245u8, 164u8, 7u8, 45u8, 68u8, + 190u8, 224u8, 34u8, 22u8, 30u8, 250u8, 171u8, 152u8, 238u8, 120u8, + ], + ) + } + #[doc = " Assignments which are currently active."] + #[doc = ""] + #[doc = " They will be picked from `PendingAssignments` once we reach the scheduled block number in"] + #[doc = " `PendingAssignments`."] + pub fn core_descriptors( + &self, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::core_descriptors::CoreDescriptors, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "CoretimeAssignmentProvider", + "CoreDescriptors", + (), + [ + 1u8, 90u8, 208u8, 119u8, 150u8, 241u8, 133u8, 74u8, 22u8, 166u8, 13u8, + 7u8, 73u8, 136u8, 105u8, 61u8, 251u8, 245u8, 164u8, 7u8, 45u8, 68u8, + 190u8, 224u8, 34u8, 22u8, 30u8, 250u8, 171u8, 152u8, 238u8, 120u8, + ], + ) + } + } + } } pub mod registrar { use super::root_mod; @@ -37276,7 +42650,26 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::register`]."] + #[doc = "Register head data and validation code for a reserved Para Id."] + #[doc = ""] + #[doc = "## Arguments"] + #[doc = "- `origin`: Must be called by a `Signed` origin."] + #[doc = "- `id`: The para ID. Must be owned/managed by the `origin` signing account."] + #[doc = "- `genesis_head`: The genesis head data of the parachain/thread."] + #[doc = "- `validation_code`: The initial validation code of the parachain/thread."] + #[doc = ""] + #[doc = "## Deposits/Fees"] + #[doc = "The account with the originating signature must reserve a deposit."] + #[doc = ""] + #[doc = "The deposit is required to cover the costs associated with storing the genesis head"] + #[doc = "data and the validation code."] + #[doc = "This accounts for the potential to store validation code of a size up to the"] + #[doc = "`max_code_size`, as defined in the configuration pallet"] + #[doc = ""] + #[doc = "Anything already reserved previously for this para ID is accounted for."] + #[doc = ""] + #[doc = "## Events"] + #[doc = "The `Registered` event is emitted in case of success."] pub struct Register { pub id: register::Id, pub genesis_head: register::GenesisHead, @@ -37308,7 +42701,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_register`]."] + #[doc = "Force the registration of a Para Id on the relay chain."] + #[doc = ""] + #[doc = "This function must be called by a Root origin."] + #[doc = ""] + #[doc = "The deposit taken can be specified for this registration. Any `ParaId`"] + #[doc = "can be registered, including sub-1000 IDs which are System Parachains."] pub struct ForceRegister { pub who: force_register::Who, pub deposit: force_register::Deposit, @@ -37344,7 +42742,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::deregister`]."] + #[doc = "Deregister a Para Id, freeing all data and returning any deposit."] + #[doc = ""] + #[doc = "The caller must be Root, the `para` owner, or the `para` itself. The para must be an"] + #[doc = "on-demand parachain."] pub struct Deregister { pub id: deregister::Id, } @@ -37370,7 +42771,18 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::swap`]."] + #[doc = "Swap a lease holding parachain with another parachain, either on-demand or lease"] + #[doc = "holding."] + #[doc = ""] + #[doc = "The origin must be Root, the `para` owner, or the `para` itself."] + #[doc = ""] + #[doc = "The swap will happen only if there is already an opposite swap pending. If there is not,"] + #[doc = "the swap will be stored in the pending swaps map, ready for a later confirmatory swap."] + #[doc = ""] + #[doc = "The `ParaId`s remain mapped to the same head data and code so external code can rely on"] + #[doc = "`ParaId` to be a long-term identifier of a notional \"parachain\". However, their"] + #[doc = "scheduling info (i.e. whether they're an on-demand parachain or lease holding"] + #[doc = "parachain), auction information and the auction deposit are switched."] pub struct Swap { pub id: swap::Id, pub other: swap::Other, @@ -37398,7 +42810,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::remove_lock`]."] + #[doc = "Remove a manager lock from a para. This will allow the manager of a"] + #[doc = "previously locked para to deregister or swap a para without using governance."] + #[doc = ""] + #[doc = "Can only be called by the Root origin or the parachain."] pub struct RemoveLock { pub para: remove_lock::Para, } @@ -37424,7 +42839,23 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::reserve`]."] + #[doc = "Reserve a Para Id on the relay chain."] + #[doc = ""] + #[doc = "This function will reserve a new Para Id to be owned/managed by the origin account."] + #[doc = "The origin account is able to register head data and validation code using `register` to"] + #[doc = "create an on-demand parachain. Using the Slots pallet, an on-demand parachain can then"] + #[doc = "be upgraded to a lease holding parachain."] + #[doc = ""] + #[doc = "## Arguments"] + #[doc = "- `origin`: Must be called by a `Signed` origin. Becomes the manager/owner of the new"] + #[doc = " para ID."] + #[doc = ""] + #[doc = "## Deposits/Fees"] + #[doc = "The origin must reserve a deposit of `ParaDeposit` for the registration."] + #[doc = ""] + #[doc = "## Events"] + #[doc = "The `Reserved` event is emitted in case of success, which provides the ID reserved for"] + #[doc = "use."] pub struct Reserve; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Reserve { const PALLET: &'static str = "Registrar"; @@ -37444,7 +42875,11 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::add_lock`]."] + #[doc = "Add a manager lock from a para. This will prevent the manager of a"] + #[doc = "para to deregister or swap a para."] + #[doc = ""] + #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] + #[doc = "unlocked."] pub struct AddLock { pub para: add_lock::Para, } @@ -37470,7 +42905,17 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::schedule_code_upgrade`]."] + #[doc = "Schedule a parachain upgrade."] + #[doc = ""] + #[doc = "This will kick off a check of `new_code` by all validators. After the majority of the"] + #[doc = "validators have reported on the validity of the code, the code will either be enacted"] + #[doc = "or the upgrade will be rejected. If the code will be enacted, the current code of the"] + #[doc = "parachain will be overwritten directly. This means that any PoV will be checked by this"] + #[doc = "new code. The parachain itself will not be informed explictely that the validation code"] + #[doc = "has changed."] + #[doc = ""] + #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] + #[doc = "unlocked."] pub struct ScheduleCodeUpgrade { pub para: schedule_code_upgrade::Para, pub new_code: schedule_code_upgrade::NewCode, @@ -37499,7 +42944,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_current_head`]."] + #[doc = "Set the parachain's current head."] + #[doc = ""] + #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] + #[doc = "unlocked."] pub struct SetCurrentHead { pub para: set_current_head::Para, pub new_head: set_current_head::NewHead, @@ -37517,7 +42965,26 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::register`]."] + #[doc = "Register head data and validation code for a reserved Para Id."] + #[doc = ""] + #[doc = "## Arguments"] + #[doc = "- `origin`: Must be called by a `Signed` origin."] + #[doc = "- `id`: The para ID. Must be owned/managed by the `origin` signing account."] + #[doc = "- `genesis_head`: The genesis head data of the parachain/thread."] + #[doc = "- `validation_code`: The initial validation code of the parachain/thread."] + #[doc = ""] + #[doc = "## Deposits/Fees"] + #[doc = "The account with the originating signature must reserve a deposit."] + #[doc = ""] + #[doc = "The deposit is required to cover the costs associated with storing the genesis head"] + #[doc = "data and the validation code."] + #[doc = "This accounts for the potential to store validation code of a size up to the"] + #[doc = "`max_code_size`, as defined in the configuration pallet"] + #[doc = ""] + #[doc = "Anything already reserved previously for this para ID is accounted for."] + #[doc = ""] + #[doc = "## Events"] + #[doc = "The `Registered` event is emitted in case of success."] pub fn register( &self, id: types::register::Id, @@ -37540,7 +43007,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_register`]."] + #[doc = "Force the registration of a Para Id on the relay chain."] + #[doc = ""] + #[doc = "This function must be called by a Root origin."] + #[doc = ""] + #[doc = "The deposit taken can be specified for this registration. Any `ParaId`"] + #[doc = "can be registered, including sub-1000 IDs which are System Parachains."] pub fn force_register( &self, who: types::force_register::Who, @@ -37568,7 +43040,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::deregister`]."] + #[doc = "Deregister a Para Id, freeing all data and returning any deposit."] + #[doc = ""] + #[doc = "The caller must be Root, the `para` owner, or the `para` itself. The para must be an"] + #[doc = "on-demand parachain."] pub fn deregister( &self, id: types::deregister::Id, @@ -37585,7 +43060,18 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::swap`]."] + #[doc = "Swap a lease holding parachain with another parachain, either on-demand or lease"] + #[doc = "holding."] + #[doc = ""] + #[doc = "The origin must be Root, the `para` owner, or the `para` itself."] + #[doc = ""] + #[doc = "The swap will happen only if there is already an opposite swap pending. If there is not,"] + #[doc = "the swap will be stored in the pending swaps map, ready for a later confirmatory swap."] + #[doc = ""] + #[doc = "The `ParaId`s remain mapped to the same head data and code so external code can rely on"] + #[doc = "`ParaId` to be a long-term identifier of a notional \"parachain\". However, their"] + #[doc = "scheduling info (i.e. whether they're an on-demand parachain or lease holding"] + #[doc = "parachain), auction information and the auction deposit are switched."] pub fn swap( &self, id: types::swap::Id, @@ -37604,7 +43090,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::remove_lock`]."] + #[doc = "Remove a manager lock from a para. This will allow the manager of a"] + #[doc = "previously locked para to deregister or swap a para without using governance."] + #[doc = ""] + #[doc = "Can only be called by the Root origin or the parachain."] pub fn remove_lock( &self, para: types::remove_lock::Para, @@ -37621,7 +43110,23 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::reserve`]."] + #[doc = "Reserve a Para Id on the relay chain."] + #[doc = ""] + #[doc = "This function will reserve a new Para Id to be owned/managed by the origin account."] + #[doc = "The origin account is able to register head data and validation code using `register` to"] + #[doc = "create an on-demand parachain. Using the Slots pallet, an on-demand parachain can then"] + #[doc = "be upgraded to a lease holding parachain."] + #[doc = ""] + #[doc = "## Arguments"] + #[doc = "- `origin`: Must be called by a `Signed` origin. Becomes the manager/owner of the new"] + #[doc = " para ID."] + #[doc = ""] + #[doc = "## Deposits/Fees"] + #[doc = "The origin must reserve a deposit of `ParaDeposit` for the registration."] + #[doc = ""] + #[doc = "## Events"] + #[doc = "The `Reserved` event is emitted in case of success, which provides the ID reserved for"] + #[doc = "use."] pub fn reserve( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -37637,7 +43142,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::add_lock`]."] + #[doc = "Add a manager lock from a para. This will prevent the manager of a"] + #[doc = "para to deregister or swap a para."] + #[doc = ""] + #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] + #[doc = "unlocked."] pub fn add_lock( &self, para: types::add_lock::Para, @@ -37654,7 +43163,17 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::schedule_code_upgrade`]."] + #[doc = "Schedule a parachain upgrade."] + #[doc = ""] + #[doc = "This will kick off a check of `new_code` by all validators. After the majority of the"] + #[doc = "validators have reported on the validity of the code, the code will either be enacted"] + #[doc = "or the upgrade will be rejected. If the code will be enacted, the current code of the"] + #[doc = "parachain will be overwritten directly. This means that any PoV will be checked by this"] + #[doc = "new code. The parachain itself will not be informed explictely that the validation code"] + #[doc = "has changed."] + #[doc = ""] + #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] + #[doc = "unlocked."] pub fn schedule_code_upgrade( &self, para: types::schedule_code_upgrade::Para, @@ -37673,7 +43192,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_current_head`]."] + #[doc = "Set the parachain's current head."] + #[doc = ""] + #[doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] + #[doc = "unlocked."] pub fn set_current_head( &self, para: types::set_current_head::Para, @@ -38009,7 +43531,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_lease`]."] + #[doc = "Just a connect into the `lease_out` call, in case Root wants to force some lease to"] + #[doc = "happen independently of any other on-chain mechanism to use it."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] pub struct ForceLease { pub para: force_lease::Para, pub leaser: force_lease::Leaser, @@ -38043,7 +43568,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::clear_all_leases`]."] + #[doc = "Clear all leases for a Para Id, refunding any deposits back to the original owners."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] pub struct ClearAllLeases { pub para: clear_all_leases::Para, } @@ -38069,7 +43596,13 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::trigger_onboard`]."] + #[doc = "Try to onboard a parachain that has a lease for the current lease period."] + #[doc = ""] + #[doc = "This function can be useful if there was some state issue with a para that should"] + #[doc = "have onboarded, but was unable to. As long as they have a lease period, we can"] + #[doc = "let them onboard from here."] + #[doc = ""] + #[doc = "Origin must be signed, but can be called by anyone."] pub struct TriggerOnboard { pub para: trigger_onboard::Para, } @@ -38084,7 +43617,10 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::force_lease`]."] + #[doc = "Just a connect into the `lease_out` call, in case Root wants to force some lease to"] + #[doc = "happen independently of any other on-chain mechanism to use it."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] pub fn force_lease( &self, para: types::force_lease::Para, @@ -38112,7 +43648,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::clear_all_leases`]."] + #[doc = "Clear all leases for a Para Id, refunding any deposits back to the original owners."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] pub fn clear_all_leases( &self, para: types::clear_all_leases::Para, @@ -38129,7 +43667,13 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::trigger_onboard`]."] + #[doc = "Try to onboard a parachain that has a lease for the current lease period."] + #[doc = ""] + #[doc = "This function can be useful if there was some state issue with a para that should"] + #[doc = "have onboarded, but was unable to. As long as they have a lease period, we can"] + #[doc = "let them onboard from here."] + #[doc = ""] + #[doc = "Origin must be signed, but can be called by anyone."] pub fn trigger_onboard( &self, para: types::trigger_onboard::Para, @@ -38375,7 +43919,11 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::new_auction`]."] + #[doc = "Create a new auction."] + #[doc = ""] + #[doc = "This can only happen when there isn't already an auction in progress and may only be"] + #[doc = "called by the root origin. Accepts the `duration` of this auction and the"] + #[doc = "`lease_period_index` of the initial lease period of the four that are to be auctioned."] pub struct NewAuction { #[codec(compact)] pub duration: new_auction::Duration, @@ -38405,7 +43953,22 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::bid`]."] + #[doc = "Make a new bid from an account (including a parachain account) for deploying a new"] + #[doc = "parachain."] + #[doc = ""] + #[doc = "Multiple simultaneous bids from the same bidder are allowed only as long as all active"] + #[doc = "bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted."] + #[doc = ""] + #[doc = "- `sub` is the sub-bidder ID, allowing for multiple competing bids to be made by (and"] + #[doc = "funded by) the same account."] + #[doc = "- `auction_index` is the index of the auction to bid on. Should just be the present"] + #[doc = "value of `AuctionCounter`."] + #[doc = "- `first_slot` is the first lease period index of the range to bid on. This is the"] + #[doc = "absolute lease period index value, not an auction-specific offset."] + #[doc = "- `last_slot` is the last lease period index of the range to bid on. This is the"] + #[doc = "absolute lease period index value, not an auction-specific offset."] + #[doc = "- `amount` is the amount to bid to be held as deposit for the parachain should the"] + #[doc = "bid win. This amount is held throughout the range."] pub struct Bid { #[codec(compact)] pub para: bid::Para, @@ -38444,7 +44007,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::cancel_auction`]."] + #[doc = "Cancel an in-progress auction."] + #[doc = ""] + #[doc = "Can only be called by Root origin."] pub struct CancelAuction; impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for CancelAuction { const PALLET: &'static str = "Auctions"; @@ -38453,7 +44018,11 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::new_auction`]."] + #[doc = "Create a new auction."] + #[doc = ""] + #[doc = "This can only happen when there isn't already an auction in progress and may only be"] + #[doc = "called by the root origin. Accepts the `duration` of this auction and the"] + #[doc = "`lease_period_index` of the initial lease period of the four that are to be auctioned."] pub fn new_auction( &self, duration: types::new_auction::Duration, @@ -38475,7 +44044,22 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::bid`]."] + #[doc = "Make a new bid from an account (including a parachain account) for deploying a new"] + #[doc = "parachain."] + #[doc = ""] + #[doc = "Multiple simultaneous bids from the same bidder are allowed only as long as all active"] + #[doc = "bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted."] + #[doc = ""] + #[doc = "- `sub` is the sub-bidder ID, allowing for multiple competing bids to be made by (and"] + #[doc = "funded by) the same account."] + #[doc = "- `auction_index` is the index of the auction to bid on. Should just be the present"] + #[doc = "value of `AuctionCounter`."] + #[doc = "- `first_slot` is the first lease period index of the range to bid on. This is the"] + #[doc = "absolute lease period index value, not an auction-specific offset."] + #[doc = "- `last_slot` is the last lease period index of the range to bid on. This is the"] + #[doc = "absolute lease period index value, not an auction-specific offset."] + #[doc = "- `amount` is the amount to bid to be held as deposit for the parachain should the"] + #[doc = "bid win. This amount is held throughout the range."] pub fn bid( &self, para: types::bid::Para, @@ -38502,7 +44086,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::cancel_auction`]."] + #[doc = "Cancel an in-progress auction."] + #[doc = ""] + #[doc = "Can only be called by Root origin."] pub fn cancel_auction( &self, ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload @@ -39028,7 +44614,11 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::create`]."] + #[doc = "Create a new crowdloaning campaign for a parachain slot with the given lease period"] + #[doc = "range."] + #[doc = ""] + #[doc = "This applies a lock to your parachain configuration, ensuring that it cannot be changed"] + #[doc = "by the parachain manager."] pub struct Create { #[codec(compact)] pub index: create::Index, @@ -39070,7 +44660,8 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::contribute`]."] + #[doc = "Contribute to a crowd sale. This will transfer some balance over to fund a parachain"] + #[doc = "slot. It will be withdrawable when the crowdloan has ended and the funds are unused."] pub struct Contribute { #[codec(compact)] pub index: contribute::Index, @@ -39103,7 +44694,23 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::withdraw`]."] + #[doc = "Withdraw full balance of a specific contributor."] + #[doc = ""] + #[doc = "Origin must be signed, but can come from anyone."] + #[doc = ""] + #[doc = "The fund must be either in, or ready for, retirement. For a fund to be *in* retirement,"] + #[doc = "then the retirement flag must be set. For a fund to be ready for retirement, then:"] + #[doc = "- it must not already be in retirement;"] + #[doc = "- the amount of raised funds must be bigger than the _free_ balance of the account;"] + #[doc = "- and either:"] + #[doc = " - the block number must be at least `end`; or"] + #[doc = " - the current lease period must be greater than the fund's `last_period`."] + #[doc = ""] + #[doc = "In this case, the fund's retirement flag is set and its `end` is reset to the current"] + #[doc = "block number."] + #[doc = ""] + #[doc = "- `who`: The account whose contribution should be withdrawn."] + #[doc = "- `index`: The parachain to whose crowdloan the contribution was made."] pub struct Withdraw { pub who: withdraw::Who, #[codec(compact)] @@ -39132,7 +44739,11 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::refund`]."] + #[doc = "Automatically refund contributors of an ended crowdloan."] + #[doc = "Due to weight restrictions, this function may need to be called multiple"] + #[doc = "times to fully refund all users. We will refund `RemoveKeysLimit` users at a time."] + #[doc = ""] + #[doc = "Origin must be signed, but can come from anyone."] pub struct Refund { #[codec(compact)] pub index: refund::Index, @@ -39159,7 +44770,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::dissolve`]."] + #[doc = "Remove a fund after the retirement period has ended and all funds have been returned."] pub struct Dissolve { #[codec(compact)] pub index: dissolve::Index, @@ -39186,7 +44797,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::edit`]."] + #[doc = "Edit the configuration for an in-progress crowdloan."] + #[doc = ""] + #[doc = "Can only be called by Root origin."] pub struct Edit { #[codec(compact)] pub index: edit::Index, @@ -39228,7 +44841,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::add_memo`]."] + #[doc = "Add an optional memo to an existing crowdloan contribution."] + #[doc = ""] + #[doc = "Origin must be Signed, and the user must have contributed to the crowdloan."] pub struct AddMemo { pub index: add_memo::Index, pub memo: add_memo::Memo, @@ -39257,7 +44872,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::poke`]."] + #[doc = "Poke the fund into `NewRaise`"] + #[doc = ""] + #[doc = "Origin must be Signed, and the fund has non-zero raise."] pub struct Poke { pub index: poke::Index, } @@ -39283,7 +44900,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::contribute_all`]."] + #[doc = "Contribute your entire balance to a crowd sale. This will transfer the entire balance of"] + #[doc = "a user over to fund a parachain slot. It will be withdrawable when the crowdloan has"] + #[doc = "ended and the funds are unused."] pub struct ContributeAll { #[codec(compact)] pub index: contribute_all::Index, @@ -39302,7 +44921,11 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::create`]."] + #[doc = "Create a new crowdloaning campaign for a parachain slot with the given lease period"] + #[doc = "range."] + #[doc = ""] + #[doc = "This applies a lock to your parachain configuration, ensuring that it cannot be changed"] + #[doc = "by the parachain manager."] pub fn create( &self, index: types::create::Index, @@ -39325,13 +44948,15 @@ pub mod api { verifier, }, [ - 236u8, 3u8, 248u8, 168u8, 136u8, 216u8, 20u8, 58u8, 179u8, 13u8, 184u8, - 73u8, 105u8, 35u8, 167u8, 66u8, 117u8, 195u8, 41u8, 41u8, 117u8, 176u8, - 65u8, 18u8, 225u8, 66u8, 2u8, 61u8, 212u8, 92u8, 117u8, 90u8, + 93u8, 62u8, 50u8, 153u8, 231u8, 103u8, 233u8, 109u8, 182u8, 182u8, + 174u8, 247u8, 176u8, 234u8, 224u8, 108u8, 143u8, 213u8, 99u8, 60u8, + 91u8, 209u8, 120u8, 83u8, 54u8, 16u8, 169u8, 156u8, 49u8, 232u8, 228u8, + 89u8, ], ) } - #[doc = "See [`Pallet::contribute`]."] + #[doc = "Contribute to a crowd sale. This will transfer some balance over to fund a parachain"] + #[doc = "slot. It will be withdrawable when the crowdloan has ended and the funds are unused."] pub fn contribute( &self, index: types::contribute::Index, @@ -39348,14 +44973,29 @@ pub mod api { signature, }, [ - 186u8, 247u8, 240u8, 7u8, 12u8, 239u8, 39u8, 191u8, 150u8, 219u8, - 137u8, 122u8, 214u8, 61u8, 62u8, 180u8, 229u8, 181u8, 105u8, 190u8, - 228u8, 55u8, 242u8, 70u8, 91u8, 118u8, 143u8, 233u8, 186u8, 231u8, - 207u8, 106u8, + 235u8, 111u8, 40u8, 4u8, 141u8, 19u8, 229u8, 202u8, 158u8, 30u8, 112u8, + 53u8, 113u8, 65u8, 162u8, 226u8, 116u8, 221u8, 118u8, 54u8, 204u8, + 50u8, 23u8, 246u8, 20u8, 245u8, 187u8, 150u8, 142u8, 184u8, 96u8, 84u8, ], ) } - #[doc = "See [`Pallet::withdraw`]."] + #[doc = "Withdraw full balance of a specific contributor."] + #[doc = ""] + #[doc = "Origin must be signed, but can come from anyone."] + #[doc = ""] + #[doc = "The fund must be either in, or ready for, retirement. For a fund to be *in* retirement,"] + #[doc = "then the retirement flag must be set. For a fund to be ready for retirement, then:"] + #[doc = "- it must not already be in retirement;"] + #[doc = "- the amount of raised funds must be bigger than the _free_ balance of the account;"] + #[doc = "- and either:"] + #[doc = " - the block number must be at least `end`; or"] + #[doc = " - the current lease period must be greater than the fund's `last_period`."] + #[doc = ""] + #[doc = "In this case, the fund's retirement flag is set and its `end` is reset to the current"] + #[doc = "block number."] + #[doc = ""] + #[doc = "- `who`: The account whose contribution should be withdrawn."] + #[doc = "- `index`: The parachain to whose crowdloan the contribution was made."] pub fn withdraw( &self, who: types::withdraw::Who, @@ -39373,7 +45013,11 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::refund`]."] + #[doc = "Automatically refund contributors of an ended crowdloan."] + #[doc = "Due to weight restrictions, this function may need to be called multiple"] + #[doc = "times to fully refund all users. We will refund `RemoveKeysLimit` users at a time."] + #[doc = ""] + #[doc = "Origin must be signed, but can come from anyone."] pub fn refund( &self, index: types::refund::Index, @@ -39391,7 +45035,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::dissolve`]."] + #[doc = "Remove a fund after the retirement period has ended and all funds have been returned."] pub fn dissolve( &self, index: types::dissolve::Index, @@ -39409,7 +45053,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::edit`]."] + #[doc = "Edit the configuration for an in-progress crowdloan."] + #[doc = ""] + #[doc = "Can only be called by Root origin."] pub fn edit( &self, index: types::edit::Index, @@ -39432,14 +45078,16 @@ pub mod api { verifier, }, [ - 126u8, 29u8, 232u8, 93u8, 94u8, 23u8, 47u8, 217u8, 62u8, 2u8, 161u8, - 31u8, 156u8, 229u8, 109u8, 45u8, 97u8, 101u8, 189u8, 139u8, 40u8, - 238u8, 150u8, 94u8, 145u8, 77u8, 26u8, 153u8, 217u8, 171u8, 48u8, - 195u8, + 185u8, 194u8, 173u8, 141u8, 104u8, 157u8, 104u8, 216u8, 223u8, 189u8, + 184u8, 104u8, 71u8, 177u8, 70u8, 129u8, 207u8, 167u8, 80u8, 247u8, + 149u8, 151u8, 211u8, 119u8, 224u8, 214u8, 214u8, 15u8, 88u8, 116u8, + 191u8, 234u8, ], ) } - #[doc = "See [`Pallet::add_memo`]."] + #[doc = "Add an optional memo to an existing crowdloan contribution."] + #[doc = ""] + #[doc = "Origin must be Signed, and the user must have contributed to the crowdloan."] pub fn add_memo( &self, index: types::add_memo::Index, @@ -39458,7 +45106,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::poke`]."] + #[doc = "Poke the fund into `NewRaise`"] + #[doc = ""] + #[doc = "Origin must be Signed, and the fund has non-zero raise."] pub fn poke( &self, index: types::poke::Index, @@ -39476,7 +45126,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::contribute_all`]."] + #[doc = "Contribute your entire balance to a crowd sale. This will transfer the entire balance of"] + #[doc = "a user over to fund a parachain slot. It will be withdrawable when the crowdloan has"] + #[doc = "ended and the funds are unused."] pub fn contribute_all( &self, index: types::contribute_all::Index, @@ -39488,9 +45140,9 @@ pub mod api { "contribute_all", types::ContributeAll { index, signature }, [ - 233u8, 62u8, 129u8, 168u8, 161u8, 163u8, 78u8, 92u8, 191u8, 239u8, - 61u8, 2u8, 198u8, 246u8, 246u8, 81u8, 32u8, 131u8, 118u8, 170u8, 72u8, - 87u8, 17u8, 26u8, 55u8, 10u8, 146u8, 184u8, 213u8, 200u8, 252u8, 50u8, + 167u8, 206u8, 26u8, 124u8, 97u8, 175u8, 170u8, 30u8, 34u8, 29u8, 1u8, + 189u8, 8u8, 168u8, 108u8, 7u8, 154u8, 248u8, 96u8, 158u8, 15u8, 160u8, + 222u8, 205u8, 143u8, 18u8, 128u8, 215u8, 29u8, 109u8, 158u8, 11u8, ], ) } @@ -39783,10 +45435,10 @@ pub mod api { "Funds", (), [ - 191u8, 255u8, 37u8, 49u8, 246u8, 246u8, 168u8, 178u8, 73u8, 238u8, - 49u8, 76u8, 66u8, 246u8, 207u8, 12u8, 76u8, 233u8, 31u8, 218u8, 132u8, - 236u8, 237u8, 210u8, 116u8, 159u8, 191u8, 89u8, 212u8, 167u8, 61u8, - 41u8, + 201u8, 39u8, 80u8, 58u8, 162u8, 213u8, 138u8, 215u8, 11u8, 6u8, 39u8, + 197u8, 142u8, 151u8, 231u8, 166u8, 255u8, 142u8, 219u8, 116u8, 56u8, + 187u8, 128u8, 11u8, 216u8, 49u8, 95u8, 154u8, 55u8, 241u8, 185u8, + 198u8, ], ) } @@ -39810,10 +45462,10 @@ pub mod api { _0.borrow(), ), [ - 191u8, 255u8, 37u8, 49u8, 246u8, 246u8, 168u8, 178u8, 73u8, 238u8, - 49u8, 76u8, 66u8, 246u8, 207u8, 12u8, 76u8, 233u8, 31u8, 218u8, 132u8, - 236u8, 237u8, 210u8, 116u8, 159u8, 191u8, 89u8, 212u8, 167u8, 61u8, - 41u8, + 201u8, 39u8, 80u8, 58u8, 162u8, 213u8, 138u8, 215u8, 11u8, 6u8, 39u8, + 197u8, 142u8, 151u8, 231u8, 166u8, 255u8, 142u8, 219u8, 116u8, 56u8, + 187u8, 128u8, 11u8, 216u8, 49u8, 95u8, 154u8, 55u8, 241u8, 185u8, + 198u8, ], ) } @@ -39943,6 +45595,215 @@ pub mod api { } } } + pub mod coretime { + use super::root_mod; + use super::runtime_types; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::polkadot_runtime_parachains::coretime::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_parachains::coretime::pallet::Call; + pub mod calls { + use super::root_mod; + use super::runtime_types; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct RequestCoreCount { + pub count: request_core_count::Count, + } + pub mod request_core_count { + use super::runtime_types; + pub type Count = ::core::primitive::u16; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RequestCoreCount { + const PALLET: &'static str = "Coretime"; + const CALL: &'static str = "request_core_count"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Receive instructions from the `ExternalBrokerOrigin`, detailing how a specific core is"] + #[doc = "to be used."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "-`origin`: The `ExternalBrokerOrigin`, assumed to be the Broker system parachain."] + #[doc = "-`core`: The core that should be scheduled."] + #[doc = "-`begin`: The starting blockheight of the instruction."] + #[doc = "-`assignment`: How the blockspace should be utilised."] + #[doc = "-`end_hint`: An optional hint as to when this particular set of instructions will end."] + pub struct AssignCore { + pub core: assign_core::Core, + pub begin: assign_core::Begin, + pub assignment: assign_core::Assignment, + pub end_hint: assign_core::EndHint, + } + pub mod assign_core { + use super::runtime_types; + pub type Core = ::core::primitive::u16; + pub type Begin = ::core::primitive::u32; + pub type Assignment = ::subxt::ext::subxt_core::alloc::vec::Vec<( + runtime_types::pallet_broker::coretime_interface::CoreAssignment, + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + )>; + pub type EndHint = ::core::option::Option<::core::primitive::u32>; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for AssignCore { + const PALLET: &'static str = "Coretime"; + const CALL: &'static str = "assign_core"; + } + } + pub struct TransactionApi; + impl TransactionApi { + pub fn request_core_count( + &self, + count: types::request_core_count::Count, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Coretime", + "request_core_count", + types::RequestCoreCount { count }, + [ + 8u8, 225u8, 74u8, 162u8, 188u8, 3u8, 191u8, 45u8, 167u8, 21u8, 227u8, + 200u8, 65u8, 221u8, 49u8, 212u8, 12u8, 229u8, 160u8, 178u8, 136u8, + 13u8, 131u8, 42u8, 220u8, 3u8, 151u8, 241u8, 210u8, 158u8, 218u8, + 217u8, + ], + ) + } + #[doc = "Receive instructions from the `ExternalBrokerOrigin`, detailing how a specific core is"] + #[doc = "to be used."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "-`origin`: The `ExternalBrokerOrigin`, assumed to be the Broker system parachain."] + #[doc = "-`core`: The core that should be scheduled."] + #[doc = "-`begin`: The starting blockheight of the instruction."] + #[doc = "-`assignment`: How the blockspace should be utilised."] + #[doc = "-`end_hint`: An optional hint as to when this particular set of instructions will end."] + pub fn assign_core( + &self, + core: types::assign_core::Core, + begin: types::assign_core::Begin, + assignment: types::assign_core::Assignment, + end_hint: types::assign_core::EndHint, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Coretime", + "assign_core", + types::AssignCore { + core, + begin, + assignment, + end_hint, + }, + [ + 113u8, 133u8, 153u8, 202u8, 209u8, 53u8, 168u8, 214u8, 153u8, 232u8, + 170u8, 35u8, 63u8, 87u8, 5u8, 108u8, 188u8, 55u8, 111u8, 55u8, 22u8, + 1u8, 190u8, 216u8, 233u8, 185u8, 135u8, 172u8, 15u8, 254u8, 91u8, 92u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_parachains::coretime::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "The broker chain has asked for revenue information for a specific block."] + pub struct RevenueInfoRequested { + pub when: revenue_info_requested::When, + } + pub mod revenue_info_requested { + use super::runtime_types; + pub type When = ::core::primitive::u32; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for RevenueInfoRequested { + const PALLET: &'static str = "Coretime"; + const EVENT: &'static str = "RevenueInfoRequested"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "A core has received a new assignment from the broker chain."] + pub struct CoreAssigned { + pub core: core_assigned::Core, + } + pub mod core_assigned { + use super::runtime_types; + pub type Core = runtime_types::polkadot_primitives::v7::CoreIndex; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for CoreAssigned { + const PALLET: &'static str = "Coretime"; + const EVENT: &'static str = "CoreAssigned"; + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The ParaId of the broker system parachain."] + pub fn broker_id( + &self, + ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< + ::core::primitive::u32, + > { + ::subxt::ext::subxt_core::constants::address::StaticAddress::new_static( + "Coretime", + "BrokerId", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + } + } + } pub mod xcm_pallet { use super::root_mod; use super::runtime_types; @@ -39970,14 +45831,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::send`]."] + #[doc = "WARNING: DEPRECATED. `send` will be removed after June 2024. Use `send_blob` instead."] pub struct Send { pub dest: ::subxt::ext::subxt_core::alloc::boxed::Box, pub message: ::subxt::ext::subxt_core::alloc::boxed::Box, } pub mod send { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedMultiLocation; + pub type Dest = runtime_types::xcm::VersionedLocation; pub type Message = runtime_types::xcm::VersionedXcm1; } impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for Send { @@ -39998,7 +45859,24 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::teleport_assets`]."] + #[doc = "Teleport some assets from the local chain to some destination chain."] + #[doc = ""] + #[doc = "**This function is deprecated: Use `limited_teleport_assets` instead.**"] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] + #[doc = "with all fees taken as needed from the asset."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` chain."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] pub struct TeleportAssets { pub dest: ::subxt::ext::subxt_core::alloc::boxed::Box, pub beneficiary: @@ -40009,9 +45887,9 @@ pub mod api { } pub mod teleport_assets { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedMultiLocation; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Assets = runtime_types::xcm::VersionedAssets; pub type FeeAssetItem = ::core::primitive::u32; } impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for TeleportAssets { @@ -40032,7 +45910,36 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::reserve_transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve."] + #[doc = ""] + #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] + #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] + #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] + #[doc = " assets to `beneficiary`."] + #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] + #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] + #[doc = " deposit them to `beneficiary`."] + #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] + #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] + #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] + #[doc = ""] + #[doc = "**This function is deprecated: Use `limited_reserve_transfer_assets` instead.**"] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] + #[doc = "with all fees taken as needed from the asset."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] pub struct ReserveTransferAssets { pub dest: ::subxt::ext::subxt_core::alloc::boxed::Box, @@ -40046,9 +45953,9 @@ pub mod api { } pub mod reserve_transfer_assets { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedMultiLocation; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Assets = runtime_types::xcm::VersionedAssets; pub type FeeAssetItem = ::core::primitive::u32; } impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ReserveTransferAssets { @@ -40069,7 +45976,17 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::execute`]."] + #[doc = "Execute an XCM message from a local, signed, origin."] + #[doc = ""] + #[doc = "An event is deposited indicating whether `msg` could be executed completely or only"] + #[doc = "partially."] + #[doc = ""] + #[doc = "No more than `max_weight` will be used in its attempted execution. If this is less than"] + #[doc = "the maximum amount of weight that the message could take to be executed, then no"] + #[doc = "execution attempt will be made."] + #[doc = ""] + #[doc = "WARNING: DEPRECATED. `execute` will be removed after June 2024. Use `execute_blob`"] + #[doc = "instead."] pub struct Execute { pub message: ::subxt::ext::subxt_core::alloc::boxed::Box, pub max_weight: execute::MaxWeight, @@ -40097,7 +46014,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_xcm_version`]."] + #[doc = "Extoll that a particular destination can be communicated with through a particular"] + #[doc = "version of XCM."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The destination that is being described."] + #[doc = "- `xcm_version`: The latest version of XCM that `location` supports."] pub struct ForceXcmVersion { pub location: ::subxt::ext::subxt_core::alloc::boxed::Box, @@ -40105,8 +46027,7 @@ pub mod api { } pub mod force_xcm_version { use super::runtime_types; - pub type Location = - runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Location = runtime_types::staging_xcm::v4::location::Location; pub type Version = ::core::primitive::u32; } impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceXcmVersion { @@ -40127,7 +46048,11 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_default_xcm_version`]."] + #[doc = "Set a safe XCM version (the version that XCM should be encoded with if the most recent"] + #[doc = "version a destination can accept is unknown)."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `maybe_xcm_version`: The default XCM encoding version, or `None` to disable."] pub struct ForceDefaultXcmVersion { pub maybe_xcm_version: force_default_xcm_version::MaybeXcmVersion, } @@ -40153,7 +46078,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_subscribe_version_notify`]."] + #[doc = "Ask a location to notify us regarding their XCM version and any changes to it."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The location to which we should subscribe for XCM version notifications."] pub struct ForceSubscribeVersionNotify { pub location: ::subxt::ext::subxt_core::alloc::boxed::Box< force_subscribe_version_notify::Location, @@ -40161,7 +46089,7 @@ pub mod api { } pub mod force_subscribe_version_notify { use super::runtime_types; - pub type Location = runtime_types::xcm::VersionedMultiLocation; + pub type Location = runtime_types::xcm::VersionedLocation; } impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceSubscribeVersionNotify { const PALLET: &'static str = "XcmPallet"; @@ -40181,7 +46109,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] + #[doc = "Require that a particular destination should no longer notify us regarding any XCM"] + #[doc = "version changes."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The location to which we are currently subscribed for XCM version"] + #[doc = " notifications which we no longer desire."] pub struct ForceUnsubscribeVersionNotify { pub location: ::subxt::ext::subxt_core::alloc::boxed::Box< force_unsubscribe_version_notify::Location, @@ -40189,7 +46122,7 @@ pub mod api { } pub mod force_unsubscribe_version_notify { use super::runtime_types; - pub type Location = runtime_types::xcm::VersionedMultiLocation; + pub type Location = runtime_types::xcm::VersionedLocation; } impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ForceUnsubscribeVersionNotify { const PALLET: &'static str = "XcmPallet"; @@ -40209,7 +46142,36 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve."] + #[doc = ""] + #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] + #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] + #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] + #[doc = " assets to `beneficiary`."] + #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] + #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] + #[doc = " deposit them to `beneficiary`."] + #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] + #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] + #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] + #[doc = "is needed than `weight_limit`, then the operation will fail and the sent assets may be"] + #[doc = "at risk."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] pub struct LimitedReserveTransferAssets { pub dest: ::subxt::ext::subxt_core::alloc::boxed::Box< limited_reserve_transfer_assets::Dest, @@ -40225,9 +46187,9 @@ pub mod api { } pub mod limited_reserve_transfer_assets { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedMultiLocation; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Assets = runtime_types::xcm::VersionedAssets; pub type FeeAssetItem = ::core::primitive::u32; pub type WeightLimit = runtime_types::xcm::v3::WeightLimit; } @@ -40249,7 +46211,24 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::limited_teleport_assets`]."] + #[doc = "Teleport some assets from the local chain to some destination chain."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] + #[doc = "is needed than `weight_limit`, then the operation will fail and the sent assets may be"] + #[doc = "at risk."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` chain."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] pub struct LimitedTeleportAssets { pub dest: ::subxt::ext::subxt_core::alloc::boxed::Box, @@ -40264,9 +46243,9 @@ pub mod api { } pub mod limited_teleport_assets { use super::runtime_types; - pub type Dest = runtime_types::xcm::VersionedMultiLocation; - pub type Beneficiary = runtime_types::xcm::VersionedMultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Assets = runtime_types::xcm::VersionedAssets; pub type FeeAssetItem = ::core::primitive::u32; pub type WeightLimit = runtime_types::xcm::v3::WeightLimit; } @@ -40288,7 +46267,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_suspension`]."] + #[doc = "Set or unset the global suspension state of the XCM executor."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `suspended`: `true` to suspend, `false` to resume."] pub struct ForceSuspension { pub suspended: force_suspension::Suspended, } @@ -40300,10 +46282,279 @@ pub mod api { const PALLET: &'static str = "XcmPallet"; const CALL: &'static str = "force_suspension"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve, or through teleports."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item` (hence referred to as `fees`), up to enough to pay for"] + #[doc = "`weight_limit` of weight. If more weight is needed than `weight_limit`, then the"] + #[doc = "operation will fail and the sent assets may be at risk."] + #[doc = ""] + #[doc = "`assets` (excluding `fees`) must have same reserve location or otherwise be teleportable"] + #[doc = "to `dest`, no limitations imposed on `fees`."] + #[doc = " - for local reserve: transfer assets to sovereign account of destination chain and"] + #[doc = " forward a notification XCM to `dest` to mint and deposit reserve-based assets to"] + #[doc = " `beneficiary`."] + #[doc = " - for destination reserve: burn local assets and forward a notification to `dest` chain"] + #[doc = " to withdraw the reserve assets from this chain's sovereign account and deposit them"] + #[doc = " to `beneficiary`."] + #[doc = " - for remote reserve: burn local assets, forward XCM to reserve chain to move reserves"] + #[doc = " from this chain's SA to `dest` chain's SA, and forward another XCM to `dest` to mint"] + #[doc = " and deposit reserve-based assets to `beneficiary`."] + #[doc = " - for teleports: burn local assets and forward XCM to `dest` chain to mint/teleport"] + #[doc = " assets and deposit them to `beneficiary`."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent,"] + #[doc = " Parachain(..))` to send from parachain to parachain, or `X1(Parachain(..))` to send"] + #[doc = " from relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] + pub struct TransferAssets { + pub dest: ::subxt::ext::subxt_core::alloc::boxed::Box, + pub beneficiary: + ::subxt::ext::subxt_core::alloc::boxed::Box, + pub assets: + ::subxt::ext::subxt_core::alloc::boxed::Box, + pub fee_asset_item: transfer_assets::FeeAssetItem, + pub weight_limit: transfer_assets::WeightLimit, + } + pub mod transfer_assets { + use super::runtime_types; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Assets = runtime_types::xcm::VersionedAssets; + pub type FeeAssetItem = ::core::primitive::u32; + pub type WeightLimit = runtime_types::xcm::v3::WeightLimit; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for TransferAssets { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "transfer_assets"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Claims assets trapped on this pallet because of leftover assets during XCM execution."] + #[doc = ""] + #[doc = "- `origin`: Anyone can call this extrinsic."] + #[doc = "- `assets`: The exact assets that were trapped. Use the version to specify what version"] + #[doc = "was the latest when they were trapped."] + #[doc = "- `beneficiary`: The location/account where the claimed assets will be deposited."] + pub struct ClaimAssets { + pub assets: ::subxt::ext::subxt_core::alloc::boxed::Box, + pub beneficiary: + ::subxt::ext::subxt_core::alloc::boxed::Box, + } + pub mod claim_assets { + use super::runtime_types; + pub type Assets = runtime_types::xcm::VersionedAssets; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ClaimAssets { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "claim_assets"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Execute an XCM from a local, signed, origin."] + #[doc = ""] + #[doc = "An event is deposited indicating whether the message could be executed completely"] + #[doc = "or only partially."] + #[doc = ""] + #[doc = "No more than `max_weight` will be used in its attempted execution. If this is less than"] + #[doc = "the maximum amount of weight that the message could take to be executed, then no"] + #[doc = "execution attempt will be made."] + #[doc = ""] + #[doc = "The message is passed in encoded. It needs to be decodable as a [`VersionedXcm`]."] + pub struct ExecuteBlob { + pub encoded_message: execute_blob::EncodedMessage, + pub max_weight: execute_blob::MaxWeight, + } + pub mod execute_blob { + use super::runtime_types; + pub type EncodedMessage = + runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >; + pub type MaxWeight = runtime_types::sp_weights::weight_v2::Weight; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ExecuteBlob { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "execute_blob"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Send an XCM from a local, signed, origin."] + #[doc = ""] + #[doc = "The destination, `dest`, will receive this message with a `DescendOrigin` instruction"] + #[doc = "that makes the origin of the message be the origin on this system."] + #[doc = ""] + #[doc = "The message is passed in encoded. It needs to be decodable as a [`VersionedXcm`]."] + pub struct SendBlob { + pub dest: ::subxt::ext::subxt_core::alloc::boxed::Box, + pub encoded_message: send_blob::EncodedMessage, + } + pub mod send_blob { + use super::runtime_types; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type EncodedMessage = + runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SendBlob { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "send_blob"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Transfer assets from the local chain to the destination chain using explicit transfer"] + #[doc = "types for assets and fees."] + #[doc = ""] + #[doc = "`assets` must have same reserve location or may be teleportable to `dest`. Caller must"] + #[doc = "provide the `assets_transfer_type` to be used for `assets`:"] + #[doc = " - `TransferType::LocalReserve`: transfer assets to sovereign account of destination"] + #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] + #[doc = " assets to `beneficiary`."] + #[doc = " - `TransferType::DestinationReserve`: burn local assets and forward a notification to"] + #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] + #[doc = " deposit them to `beneficiary`."] + #[doc = " - `TransferType::RemoteReserve(reserve)`: burn local assets, forward XCM to `reserve`"] + #[doc = " chain to move reserves from this chain's SA to `dest` chain's SA, and forward another"] + #[doc = " XCM to `dest` to mint and deposit reserve-based assets to `beneficiary`. Typically"] + #[doc = " the remote `reserve` is Asset Hub."] + #[doc = " - `TransferType::Teleport`: burn local assets and forward XCM to `dest` chain to"] + #[doc = " mint/teleport assets and deposit them to `beneficiary`."] + #[doc = ""] + #[doc = "Fee payment on the source, destination and all intermediary hops, is specified through"] + #[doc = "`fees_id`, but make sure enough of the specified `fees_id` asset is included in the"] + #[doc = "given list of `assets`. `fees_id` should be enough to pay for `weight_limit`. If more"] + #[doc = "weight is needed than `weight_limit`, then the operation will fail and the sent assets"] + #[doc = "may be at risk."] + #[doc = ""] + #[doc = "`fees_id` may use different transfer type than rest of `assets` and can be specified"] + #[doc = "through `fees_transfer_type`."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain, or `(parents: 2, (GlobalConsensus(..), ..))` to send from"] + #[doc = " parachain across a bridge to another ecosystem destination."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `assets_transfer_type`: The XCM `TransferType` used to transfer the `assets`."] + #[doc = "- `fees_id`: One of the included `assets` to be be used to pay fees."] + #[doc = "- `fees_transfer_type`: The XCM `TransferType` used to transfer the `fees` assets."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] + pub struct TransferAssetsUsingType { + pub dest: ::subxt::ext::subxt_core::alloc::boxed::Box< + transfer_assets_using_type::Dest, + >, + pub beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box< + transfer_assets_using_type::Beneficiary, + >, + pub assets: ::subxt::ext::subxt_core::alloc::boxed::Box< + transfer_assets_using_type::Assets, + >, + pub assets_transfer_type: ::subxt::ext::subxt_core::alloc::boxed::Box< + transfer_assets_using_type::AssetsTransferType, + >, + pub fees_id: ::subxt::ext::subxt_core::alloc::boxed::Box< + transfer_assets_using_type::FeesId, + >, + pub fees_transfer_type: ::subxt::ext::subxt_core::alloc::boxed::Box< + transfer_assets_using_type::FeesTransferType, + >, + pub weight_limit: transfer_assets_using_type::WeightLimit, + } + pub mod transfer_assets_using_type { + use super::runtime_types; + pub type Dest = runtime_types::xcm::VersionedLocation; + pub type Beneficiary = runtime_types::xcm::VersionedLocation; + pub type Assets = runtime_types::xcm::VersionedAssets; + pub type AssetsTransferType = + runtime_types::staging_xcm_executor::traits::asset_transfer::TransferType; + pub type FeesId = runtime_types::xcm::VersionedAssetId; + pub type FeesTransferType = + runtime_types::staging_xcm_executor::traits::asset_transfer::TransferType; + pub type WeightLimit = runtime_types::xcm::v3::WeightLimit; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for TransferAssetsUsingType { + const PALLET: &'static str = "XcmPallet"; + const CALL: &'static str = "transfer_assets_using_type"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::send`]."] + #[doc = "WARNING: DEPRECATED. `send` will be removed after June 2024. Use `send_blob` instead."] pub fn send( &self, dest: types::send::Dest, @@ -40318,13 +46569,31 @@ pub mod api { message: ::subxt::ext::subxt_core::alloc::boxed::Box::new(message), }, [ - 147u8, 255u8, 86u8, 82u8, 17u8, 159u8, 225u8, 145u8, 220u8, 89u8, 71u8, - 23u8, 193u8, 249u8, 12u8, 70u8, 19u8, 140u8, 232u8, 97u8, 12u8, 220u8, - 113u8, 65u8, 4u8, 255u8, 138u8, 10u8, 231u8, 122u8, 67u8, 105u8, + 47u8, 63u8, 128u8, 176u8, 10u8, 137u8, 124u8, 238u8, 155u8, 37u8, + 193u8, 160u8, 83u8, 240u8, 21u8, 179u8, 169u8, 131u8, 27u8, 104u8, + 195u8, 208u8, 123u8, 14u8, 221u8, 12u8, 45u8, 81u8, 148u8, 76u8, 17u8, + 100u8, ], ) } - #[doc = "See [`Pallet::teleport_assets`]."] + #[doc = "Teleport some assets from the local chain to some destination chain."] + #[doc = ""] + #[doc = "**This function is deprecated: Use `limited_teleport_assets` instead.**"] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] + #[doc = "with all fees taken as needed from the asset."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` chain."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] pub fn teleport_assets( &self, dest: types::teleport_assets::Dest, @@ -40345,13 +46614,42 @@ pub mod api { fee_asset_item, }, [ - 56u8, 144u8, 237u8, 60u8, 157u8, 5u8, 7u8, 129u8, 41u8, 149u8, 160u8, - 100u8, 233u8, 102u8, 181u8, 140u8, 115u8, 213u8, 29u8, 132u8, 16u8, - 30u8, 23u8, 82u8, 140u8, 134u8, 37u8, 87u8, 3u8, 99u8, 172u8, 42u8, + 124u8, 191u8, 118u8, 61u8, 45u8, 225u8, 97u8, 83u8, 198u8, 20u8, 139u8, + 117u8, 241u8, 1u8, 19u8, 54u8, 79u8, 181u8, 131u8, 112u8, 11u8, 118u8, + 147u8, 12u8, 89u8, 156u8, 123u8, 123u8, 195u8, 45u8, 50u8, 107u8, ], ) } - #[doc = "See [`Pallet::reserve_transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve."] + #[doc = ""] + #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] + #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] + #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] + #[doc = " assets to `beneficiary`."] + #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] + #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] + #[doc = " deposit them to `beneficiary`."] + #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] + #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] + #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] + #[doc = ""] + #[doc = "**This function is deprecated: Use `limited_reserve_transfer_assets` instead.**"] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] + #[doc = "with all fees taken as needed from the asset."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] pub fn reserve_transfer_assets( &self, dest: types::reserve_transfer_assets::Dest, @@ -40373,13 +46671,24 @@ pub mod api { fee_asset_item, }, [ - 21u8, 167u8, 44u8, 22u8, 210u8, 73u8, 148u8, 7u8, 91u8, 108u8, 148u8, - 205u8, 170u8, 243u8, 142u8, 224u8, 205u8, 119u8, 252u8, 22u8, 203u8, - 32u8, 73u8, 200u8, 178u8, 14u8, 167u8, 147u8, 166u8, 55u8, 14u8, 231u8, + 97u8, 102u8, 230u8, 44u8, 135u8, 197u8, 43u8, 53u8, 182u8, 125u8, + 140u8, 141u8, 229u8, 73u8, 29u8, 55u8, 159u8, 104u8, 197u8, 20u8, + 124u8, 234u8, 250u8, 94u8, 133u8, 253u8, 189u8, 6u8, 216u8, 162u8, + 218u8, 89u8, ], ) } - #[doc = "See [`Pallet::execute`]."] + #[doc = "Execute an XCM message from a local, signed, origin."] + #[doc = ""] + #[doc = "An event is deposited indicating whether `msg` could be executed completely or only"] + #[doc = "partially."] + #[doc = ""] + #[doc = "No more than `max_weight` will be used in its attempted execution. If this is less than"] + #[doc = "the maximum amount of weight that the message could take to be executed, then no"] + #[doc = "execution attempt will be made."] + #[doc = ""] + #[doc = "WARNING: DEPRECATED. `execute` will be removed after June 2024. Use `execute_blob`"] + #[doc = "instead."] pub fn execute( &self, message: types::execute::Message, @@ -40394,13 +46703,19 @@ pub mod api { max_weight, }, [ - 15u8, 97u8, 86u8, 111u8, 105u8, 116u8, 109u8, 206u8, 70u8, 8u8, 57u8, - 232u8, 133u8, 132u8, 30u8, 219u8, 34u8, 69u8, 0u8, 213u8, 98u8, 241u8, - 186u8, 93u8, 216u8, 39u8, 73u8, 24u8, 193u8, 87u8, 92u8, 31u8, + 71u8, 109u8, 92u8, 110u8, 198u8, 150u8, 140u8, 125u8, 248u8, 236u8, + 177u8, 156u8, 198u8, 223u8, 51u8, 15u8, 52u8, 240u8, 20u8, 200u8, 68u8, + 145u8, 36u8, 156u8, 159u8, 153u8, 125u8, 48u8, 181u8, 61u8, 53u8, + 208u8, ], ) } - #[doc = "See [`Pallet::force_xcm_version`]."] + #[doc = "Extoll that a particular destination can be communicated with through a particular"] + #[doc = "version of XCM."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The destination that is being described."] + #[doc = "- `xcm_version`: The latest version of XCM that `location` supports."] pub fn force_xcm_version( &self, location: types::force_xcm_version::Location, @@ -40415,13 +46730,17 @@ pub mod api { version, }, [ - 110u8, 11u8, 78u8, 255u8, 66u8, 2u8, 55u8, 108u8, 92u8, 151u8, 231u8, - 175u8, 75u8, 156u8, 34u8, 191u8, 0u8, 56u8, 104u8, 197u8, 70u8, 204u8, - 73u8, 234u8, 173u8, 251u8, 88u8, 226u8, 3u8, 136u8, 228u8, 136u8, + 69u8, 151u8, 198u8, 154u8, 69u8, 181u8, 41u8, 111u8, 145u8, 230u8, + 103u8, 42u8, 237u8, 91u8, 235u8, 6u8, 156u8, 65u8, 187u8, 48u8, 171u8, + 200u8, 49u8, 4u8, 9u8, 210u8, 229u8, 152u8, 187u8, 88u8, 80u8, 246u8, ], ) } - #[doc = "See [`Pallet::force_default_xcm_version`]."] + #[doc = "Set a safe XCM version (the version that XCM should be encoded with if the most recent"] + #[doc = "version a destination can accept is unknown)."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `maybe_xcm_version`: The default XCM encoding version, or `None` to disable."] pub fn force_default_xcm_version( &self, maybe_xcm_version: types::force_default_xcm_version::MaybeXcmVersion, @@ -40440,7 +46759,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_subscribe_version_notify`]."] + #[doc = "Ask a location to notify us regarding their XCM version and any changes to it."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The location to which we should subscribe for XCM version notifications."] pub fn force_subscribe_version_notify( &self, location: types::force_subscribe_version_notify::Location, @@ -40454,13 +46776,18 @@ pub mod api { location: ::subxt::ext::subxt_core::alloc::boxed::Box::new(location), }, [ - 112u8, 254u8, 138u8, 12u8, 203u8, 176u8, 251u8, 167u8, 223u8, 0u8, - 71u8, 148u8, 19u8, 179u8, 47u8, 96u8, 188u8, 189u8, 14u8, 172u8, 1u8, - 1u8, 192u8, 107u8, 137u8, 158u8, 22u8, 9u8, 138u8, 241u8, 32u8, 47u8, + 203u8, 171u8, 70u8, 130u8, 46u8, 63u8, 76u8, 50u8, 105u8, 23u8, 249u8, + 190u8, 115u8, 74u8, 70u8, 125u8, 132u8, 112u8, 138u8, 60u8, 33u8, 35u8, + 45u8, 29u8, 95u8, 103u8, 187u8, 182u8, 188u8, 196u8, 248u8, 152u8, ], ) } - #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] + #[doc = "Require that a particular destination should no longer notify us regarding any XCM"] + #[doc = "version changes."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `location`: The location to which we are currently subscribed for XCM version"] + #[doc = " notifications which we no longer desire."] pub fn force_unsubscribe_version_notify( &self, location: types::force_unsubscribe_version_notify::Location, @@ -40474,14 +46801,42 @@ pub mod api { location: ::subxt::ext::subxt_core::alloc::boxed::Box::new(location), }, [ - 205u8, 143u8, 230u8, 143u8, 166u8, 184u8, 53u8, 252u8, 118u8, 184u8, - 209u8, 227u8, 225u8, 184u8, 254u8, 244u8, 101u8, 56u8, 27u8, 128u8, - 40u8, 159u8, 178u8, 62u8, 63u8, 164u8, 59u8, 236u8, 1u8, 168u8, 202u8, - 42u8, + 6u8, 113u8, 168u8, 215u8, 233u8, 202u8, 249u8, 134u8, 131u8, 8u8, + 142u8, 203u8, 142u8, 95u8, 216u8, 70u8, 38u8, 99u8, 166u8, 97u8, 218u8, + 132u8, 247u8, 14u8, 42u8, 99u8, 4u8, 115u8, 200u8, 180u8, 213u8, 50u8, ], ) } - #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve."] + #[doc = ""] + #[doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] + #[doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] + #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] + #[doc = " assets to `beneficiary`."] + #[doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] + #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] + #[doc = " deposit them to `beneficiary`."] + #[doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] + #[doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] + #[doc = " to mint and deposit reserve-based assets to `beneficiary`."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] + #[doc = "is needed than `weight_limit`, then the operation will fail and the sent assets may be"] + #[doc = "at risk."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] pub fn limited_reserve_transfer_assets( &self, dest: types::limited_reserve_transfer_assets::Dest, @@ -40505,14 +46860,31 @@ pub mod api { weight_limit, }, [ - 10u8, 139u8, 165u8, 239u8, 92u8, 178u8, 169u8, 62u8, 166u8, 236u8, - 50u8, 12u8, 196u8, 3u8, 233u8, 209u8, 3u8, 159u8, 184u8, 234u8, 171u8, - 46u8, 145u8, 134u8, 241u8, 155u8, 221u8, 173u8, 166u8, 94u8, 147u8, - 88u8, + 198u8, 66u8, 204u8, 162u8, 222u8, 246u8, 141u8, 165u8, 241u8, 62u8, + 43u8, 236u8, 56u8, 200u8, 54u8, 47u8, 174u8, 83u8, 167u8, 220u8, 174u8, + 111u8, 123u8, 202u8, 248u8, 232u8, 166u8, 80u8, 152u8, 223u8, 86u8, + 141u8, ], ) } - #[doc = "See [`Pallet::limited_teleport_assets`]."] + #[doc = "Teleport some assets from the local chain to some destination chain."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] + #[doc = "is needed than `weight_limit`, then the operation will fail and the sent assets may be"] + #[doc = "at risk."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` chain."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] pub fn limited_teleport_assets( &self, dest: types::limited_teleport_assets::Dest, @@ -40536,14 +46908,16 @@ pub mod api { weight_limit, }, [ - 156u8, 205u8, 105u8, 18u8, 120u8, 130u8, 144u8, 67u8, 152u8, 188u8, - 109u8, 121u8, 4u8, 240u8, 123u8, 112u8, 72u8, 153u8, 2u8, 111u8, 183u8, - 170u8, 199u8, 82u8, 33u8, 117u8, 43u8, 133u8, 208u8, 44u8, 118u8, - 107u8, + 70u8, 61u8, 32u8, 43u8, 101u8, 104u8, 251u8, 60u8, 212u8, 124u8, 113u8, + 243u8, 241u8, 183u8, 5u8, 231u8, 209u8, 231u8, 136u8, 3u8, 145u8, + 242u8, 179u8, 171u8, 185u8, 185u8, 7u8, 34u8, 5u8, 203u8, 21u8, 210u8, ], ) } - #[doc = "See [`Pallet::force_suspension`]."] + #[doc = "Set or unset the global suspension state of the XCM executor."] + #[doc = ""] + #[doc = "- `origin`: Must be an origin specified by AdminOrigin."] + #[doc = "- `suspended`: `true` to suspend, `false` to resume."] pub fn force_suspension( &self, suspended: types::force_suspension::Suspended, @@ -40560,6 +46934,232 @@ pub mod api { ], ) } + #[doc = "Transfer some assets from the local chain to the destination chain through their local,"] + #[doc = "destination or remote reserve, or through teleports."] + #[doc = ""] + #[doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] + #[doc = "index `fee_asset_item` (hence referred to as `fees`), up to enough to pay for"] + #[doc = "`weight_limit` of weight. If more weight is needed than `weight_limit`, then the"] + #[doc = "operation will fail and the sent assets may be at risk."] + #[doc = ""] + #[doc = "`assets` (excluding `fees`) must have same reserve location or otherwise be teleportable"] + #[doc = "to `dest`, no limitations imposed on `fees`."] + #[doc = " - for local reserve: transfer assets to sovereign account of destination chain and"] + #[doc = " forward a notification XCM to `dest` to mint and deposit reserve-based assets to"] + #[doc = " `beneficiary`."] + #[doc = " - for destination reserve: burn local assets and forward a notification to `dest` chain"] + #[doc = " to withdraw the reserve assets from this chain's sovereign account and deposit them"] + #[doc = " to `beneficiary`."] + #[doc = " - for remote reserve: burn local assets, forward XCM to reserve chain to move reserves"] + #[doc = " from this chain's SA to `dest` chain's SA, and forward another XCM to `dest` to mint"] + #[doc = " and deposit reserve-based assets to `beneficiary`."] + #[doc = " - for teleports: burn local assets and forward XCM to `dest` chain to mint/teleport"] + #[doc = " assets and deposit them to `beneficiary`."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent,"] + #[doc = " Parachain(..))` to send from parachain to parachain, or `X1(Parachain(..))` to send"] + #[doc = " from relay to parachain."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] + #[doc = " fees."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] + pub fn transfer_assets( + &self, + dest: types::transfer_assets::Dest, + beneficiary: types::transfer_assets::Beneficiary, + assets: types::transfer_assets::Assets, + fee_asset_item: types::transfer_assets::FeeAssetItem, + weight_limit: types::transfer_assets::WeightLimit, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "XcmPallet", + "transfer_assets", + types::TransferAssets { + dest: ::subxt::ext::subxt_core::alloc::boxed::Box::new(dest), + beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + beneficiary, + ), + assets: ::subxt::ext::subxt_core::alloc::boxed::Box::new(assets), + fee_asset_item, + weight_limit, + }, + [ + 44u8, 155u8, 182u8, 37u8, 123u8, 148u8, 150u8, 191u8, 117u8, 32u8, + 16u8, 238u8, 121u8, 188u8, 217u8, 110u8, 10u8, 236u8, 174u8, 91u8, + 100u8, 201u8, 109u8, 109u8, 60u8, 177u8, 233u8, 66u8, 181u8, 191u8, + 105u8, 37u8, + ], + ) + } + #[doc = "Claims assets trapped on this pallet because of leftover assets during XCM execution."] + #[doc = ""] + #[doc = "- `origin`: Anyone can call this extrinsic."] + #[doc = "- `assets`: The exact assets that were trapped. Use the version to specify what version"] + #[doc = "was the latest when they were trapped."] + #[doc = "- `beneficiary`: The location/account where the claimed assets will be deposited."] + pub fn claim_assets( + &self, + assets: types::claim_assets::Assets, + beneficiary: types::claim_assets::Beneficiary, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "XcmPallet", + "claim_assets", + types::ClaimAssets { + assets: ::subxt::ext::subxt_core::alloc::boxed::Box::new(assets), + beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + beneficiary, + ), + }, + [ + 155u8, 23u8, 166u8, 172u8, 251u8, 171u8, 136u8, 240u8, 253u8, 51u8, + 164u8, 43u8, 141u8, 23u8, 189u8, 177u8, 33u8, 32u8, 212u8, 56u8, 174u8, + 165u8, 129u8, 7u8, 49u8, 217u8, 213u8, 214u8, 250u8, 91u8, 200u8, + 195u8, + ], + ) + } + #[doc = "Execute an XCM from a local, signed, origin."] + #[doc = ""] + #[doc = "An event is deposited indicating whether the message could be executed completely"] + #[doc = "or only partially."] + #[doc = ""] + #[doc = "No more than `max_weight` will be used in its attempted execution. If this is less than"] + #[doc = "the maximum amount of weight that the message could take to be executed, then no"] + #[doc = "execution attempt will be made."] + #[doc = ""] + #[doc = "The message is passed in encoded. It needs to be decodable as a [`VersionedXcm`]."] + pub fn execute_blob( + &self, + encoded_message: types::execute_blob::EncodedMessage, + max_weight: types::execute_blob::MaxWeight, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "XcmPallet", + "execute_blob", + types::ExecuteBlob { + encoded_message, + max_weight, + }, + [ + 186u8, 47u8, 116u8, 116u8, 237u8, 238u8, 159u8, 254u8, 15u8, 213u8, + 224u8, 36u8, 171u8, 108u8, 158u8, 60u8, 171u8, 48u8, 129u8, 136u8, + 60u8, 67u8, 123u8, 254u8, 87u8, 175u8, 28u8, 25u8, 70u8, 191u8, 241u8, + 211u8, + ], + ) + } + #[doc = "Send an XCM from a local, signed, origin."] + #[doc = ""] + #[doc = "The destination, `dest`, will receive this message with a `DescendOrigin` instruction"] + #[doc = "that makes the origin of the message be the origin on this system."] + #[doc = ""] + #[doc = "The message is passed in encoded. It needs to be decodable as a [`VersionedXcm`]."] + pub fn send_blob( + &self, + dest: types::send_blob::Dest, + encoded_message: types::send_blob::EncodedMessage, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "XcmPallet", + "send_blob", + types::SendBlob { + dest: ::subxt::ext::subxt_core::alloc::boxed::Box::new(dest), + encoded_message, + }, + [ + 3u8, 31u8, 32u8, 202u8, 245u8, 152u8, 169u8, 214u8, 126u8, 92u8, 199u8, + 157u8, 94u8, 211u8, 139u8, 143u8, 5u8, 113u8, 144u8, 253u8, 42u8, + 217u8, 161u8, 237u8, 81u8, 152u8, 130u8, 9u8, 242u8, 111u8, 105u8, + 47u8, + ], + ) + } + #[doc = "Transfer assets from the local chain to the destination chain using explicit transfer"] + #[doc = "types for assets and fees."] + #[doc = ""] + #[doc = "`assets` must have same reserve location or may be teleportable to `dest`. Caller must"] + #[doc = "provide the `assets_transfer_type` to be used for `assets`:"] + #[doc = " - `TransferType::LocalReserve`: transfer assets to sovereign account of destination"] + #[doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] + #[doc = " assets to `beneficiary`."] + #[doc = " - `TransferType::DestinationReserve`: burn local assets and forward a notification to"] + #[doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] + #[doc = " deposit them to `beneficiary`."] + #[doc = " - `TransferType::RemoteReserve(reserve)`: burn local assets, forward XCM to `reserve`"] + #[doc = " chain to move reserves from this chain's SA to `dest` chain's SA, and forward another"] + #[doc = " XCM to `dest` to mint and deposit reserve-based assets to `beneficiary`. Typically"] + #[doc = " the remote `reserve` is Asset Hub."] + #[doc = " - `TransferType::Teleport`: burn local assets and forward XCM to `dest` chain to"] + #[doc = " mint/teleport assets and deposit them to `beneficiary`."] + #[doc = ""] + #[doc = "Fee payment on the source, destination and all intermediary hops, is specified through"] + #[doc = "`fees_id`, but make sure enough of the specified `fees_id` asset is included in the"] + #[doc = "given list of `assets`. `fees_id` should be enough to pay for `weight_limit`. If more"] + #[doc = "weight is needed than `weight_limit`, then the operation will fail and the sent assets"] + #[doc = "may be at risk."] + #[doc = ""] + #[doc = "`fees_id` may use different transfer type than rest of `assets` and can be specified"] + #[doc = "through `fees_transfer_type`."] + #[doc = ""] + #[doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] + #[doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] + #[doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] + #[doc = " relay to parachain, or `(parents: 2, (GlobalConsensus(..), ..))` to send from"] + #[doc = " parachain across a bridge to another ecosystem destination."] + #[doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] + #[doc = " generally be an `AccountId32` value."] + #[doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] + #[doc = " fee on the `dest` (and possibly reserve) chains."] + #[doc = "- `assets_transfer_type`: The XCM `TransferType` used to transfer the `assets`."] + #[doc = "- `fees_id`: One of the included `assets` to be be used to pay fees."] + #[doc = "- `fees_transfer_type`: The XCM `TransferType` used to transfer the `fees` assets."] + #[doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] + pub fn transfer_assets_using_type( + &self, + dest: types::transfer_assets_using_type::Dest, + beneficiary: types::transfer_assets_using_type::Beneficiary, + assets: types::transfer_assets_using_type::Assets, + assets_transfer_type: types::transfer_assets_using_type::AssetsTransferType, + fees_id: types::transfer_assets_using_type::FeesId, + fees_transfer_type: types::transfer_assets_using_type::FeesTransferType, + weight_limit: types::transfer_assets_using_type::WeightLimit, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload< + types::TransferAssetsUsingType, + > { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "XcmPallet", + "transfer_assets_using_type", + types::TransferAssetsUsingType { + dest: ::subxt::ext::subxt_core::alloc::boxed::Box::new(dest), + beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + beneficiary, + ), + assets: ::subxt::ext::subxt_core::alloc::boxed::Box::new(assets), + assets_transfer_type: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + assets_transfer_type, + ), + fees_id: ::subxt::ext::subxt_core::alloc::boxed::Box::new(fees_id), + fees_transfer_type: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + fees_transfer_type, + ), + weight_limit, + }, + [ + 101u8, 188u8, 111u8, 45u8, 129u8, 29u8, 27u8, 78u8, 44u8, 214u8, 180u8, + 191u8, 10u8, 14u8, 25u8, 219u8, 22u8, 60u8, 171u8, 190u8, 149u8, 43u8, + 89u8, 40u8, 72u8, 98u8, 193u8, 71u8, 52u8, 232u8, 109u8, 33u8, + ], + ) + } } } #[doc = "The `Event` enum of this pallet"] @@ -40582,7 +47182,7 @@ pub mod api { } pub mod attempted { use super::runtime_types; - pub type Outcome = runtime_types::xcm::v3::traits::Outcome; + pub type Outcome = runtime_types::staging_xcm::v4::traits::Outcome; } impl ::subxt::ext::subxt_core::events::StaticEvent for Attempted { const PALLET: &'static str = "XcmPallet"; @@ -40607,9 +47207,9 @@ pub mod api { } pub mod sent { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Message = runtime_types::xcm::v3::Xcm1; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; + pub type Destination = runtime_types::staging_xcm::v4::location::Location; + pub type Message = runtime_types::staging_xcm::v4::Xcm1; pub type MessageId = [::core::primitive::u8; 32usize]; } impl ::subxt::ext::subxt_core::events::StaticEvent for Sent { @@ -40635,7 +47235,7 @@ pub mod api { } pub mod unexpected_response { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; } impl ::subxt::ext::subxt_core::events::StaticEvent for UnexpectedResponse { @@ -40661,7 +47261,7 @@ pub mod api { pub mod response_ready { use super::runtime_types; pub type QueryId = ::core::primitive::u64; - pub type Response = runtime_types::xcm::v3::Response; + pub type Response = runtime_types::staging_xcm::v4::Response; } impl ::subxt::ext::subxt_core::events::StaticEvent for ResponseReady { const PALLET: &'static str = "XcmPallet"; @@ -40801,11 +47401,10 @@ pub mod api { } pub mod invalid_responder { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; - pub type ExpectedLocation = ::core::option::Option< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, - >; + pub type ExpectedLocation = + ::core::option::Option; } impl ::subxt::ext::subxt_core::events::StaticEvent for InvalidResponder { const PALLET: &'static str = "XcmPallet"; @@ -40834,7 +47433,7 @@ pub mod api { } pub mod invalid_responder_version { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; } impl ::subxt::ext::subxt_core::events::StaticEvent for InvalidResponderVersion { @@ -40882,8 +47481,8 @@ pub mod api { pub mod assets_trapped { use super::runtime_types; pub type Hash = ::subxt::ext::subxt_core::utils::H256; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; + pub type Assets = runtime_types::xcm::VersionedAssets; } impl ::subxt::ext::subxt_core::events::StaticEvent for AssetsTrapped { const PALLET: &'static str = "XcmPallet"; @@ -40910,9 +47509,9 @@ pub mod api { } pub mod version_change_notified { use super::runtime_types; - pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Destination = runtime_types::staging_xcm::v4::location::Location; pub type Result = ::core::primitive::u32; - pub type Cost = runtime_types::xcm::v3::multiasset::MultiAssets; + pub type Cost = runtime_types::staging_xcm::v4::asset::Assets; pub type MessageId = [::core::primitive::u8; 32usize]; } impl ::subxt::ext::subxt_core::events::StaticEvent for VersionChangeNotified { @@ -40937,7 +47536,7 @@ pub mod api { } pub mod supported_version_changed { use super::runtime_types; - pub type Location = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Location = runtime_types::staging_xcm::v4::location::Location; pub type Version = ::core::primitive::u32; } impl ::subxt::ext::subxt_core::events::StaticEvent for SupportedVersionChanged { @@ -40963,7 +47562,7 @@ pub mod api { } pub mod notify_target_send_fail { use super::runtime_types; - pub type Location = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Location = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; pub type Error = runtime_types::xcm::v3::traits::Error; } @@ -40989,7 +47588,7 @@ pub mod api { } pub mod notify_target_migration_fail { use super::runtime_types; - pub type Location = runtime_types::xcm::VersionedMultiLocation; + pub type Location = runtime_types::xcm::VersionedLocation; pub type QueryId = ::core::primitive::u64; } impl ::subxt::ext::subxt_core::events::StaticEvent for NotifyTargetMigrationFail { @@ -41019,7 +47618,7 @@ pub mod api { } pub mod invalid_querier_version { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; } impl ::subxt::ext::subxt_core::events::StaticEvent for InvalidQuerierVersion { @@ -41047,13 +47646,11 @@ pub mod api { } pub mod invalid_querier { use super::runtime_types; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; pub type QueryId = ::core::primitive::u64; - pub type ExpectedQuerier = - runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type MaybeActualQuerier = ::core::option::Option< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, - >; + pub type ExpectedQuerier = runtime_types::staging_xcm::v4::location::Location; + pub type MaybeActualQuerier = + ::core::option::Option; } impl ::subxt::ext::subxt_core::events::StaticEvent for InvalidQuerier { const PALLET: &'static str = "XcmPallet"; @@ -41078,8 +47675,8 @@ pub mod api { } pub mod version_notify_started { use super::runtime_types; - pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Cost = runtime_types::xcm::v3::multiasset::MultiAssets; + pub type Destination = runtime_types::staging_xcm::v4::location::Location; + pub type Cost = runtime_types::staging_xcm::v4::asset::Assets; pub type MessageId = [::core::primitive::u8; 32usize]; } impl ::subxt::ext::subxt_core::events::StaticEvent for VersionNotifyStarted { @@ -41104,8 +47701,8 @@ pub mod api { } pub mod version_notify_requested { use super::runtime_types; - pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Cost = runtime_types::xcm::v3::multiasset::MultiAssets; + pub type Destination = runtime_types::staging_xcm::v4::location::Location; + pub type Cost = runtime_types::staging_xcm::v4::asset::Assets; pub type MessageId = [::core::primitive::u8; 32usize]; } impl ::subxt::ext::subxt_core::events::StaticEvent for VersionNotifyRequested { @@ -41131,8 +47728,8 @@ pub mod api { } pub mod version_notify_unrequested { use super::runtime_types; - pub type Destination = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Cost = runtime_types::xcm::v3::multiasset::MultiAssets; + pub type Destination = runtime_types::staging_xcm::v4::location::Location; + pub type Cost = runtime_types::staging_xcm::v4::asset::Assets; pub type MessageId = [::core::primitive::u8; 32usize]; } impl ::subxt::ext::subxt_core::events::StaticEvent for VersionNotifyUnrequested { @@ -41156,8 +47753,8 @@ pub mod api { } pub mod fees_paid { use super::runtime_types; - pub type Paying = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Fees = runtime_types::xcm::v3::multiasset::MultiAssets; + pub type Paying = runtime_types::staging_xcm::v4::location::Location; + pub type Fees = runtime_types::staging_xcm::v4::asset::Assets; } impl ::subxt::ext::subxt_core::events::StaticEvent for FeesPaid { const PALLET: &'static str = "XcmPallet"; @@ -41182,13 +47779,35 @@ pub mod api { pub mod assets_claimed { use super::runtime_types; pub type Hash = ::subxt::ext::subxt_core::utils::H256; - pub type Origin = runtime_types::staging_xcm::v3::multilocation::MultiLocation; - pub type Assets = runtime_types::xcm::VersionedMultiAssets; + pub type Origin = runtime_types::staging_xcm::v4::location::Location; + pub type Assets = runtime_types::xcm::VersionedAssets; } impl ::subxt::ext::subxt_core::events::StaticEvent for AssetsClaimed { const PALLET: &'static str = "XcmPallet"; const EVENT: &'static str = "AssetsClaimed"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "A XCM version migration finished."] + pub struct VersionMigrationFinished { + pub version: version_migration_finished::Version, + } + pub mod version_migration_finished { + use super::runtime_types; + pub type Version = ::core::primitive::u32; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for VersionMigrationFinished { + const PALLET: &'static str = "XcmPallet"; + const EVENT: &'static str = "VersionMigrationFinished"; + } } pub mod storage { use super::runtime_types; @@ -41217,13 +47836,13 @@ pub mod api { use super::runtime_types; pub type SupportedVersion = ::core::primitive::u32; pub type Param0 = ::core::primitive::u32; - pub type Param1 = runtime_types::xcm::VersionedMultiLocation; + pub type Param1 = runtime_types::xcm::VersionedLocation; } pub mod version_notifiers { use super::runtime_types; pub type VersionNotifiers = ::core::primitive::u64; pub type Param0 = ::core::primitive::u32; - pub type Param1 = runtime_types::xcm::VersionedMultiLocation; + pub type Param1 = runtime_types::xcm::VersionedLocation; } pub mod version_notify_targets { use super::runtime_types; @@ -41233,13 +47852,13 @@ pub mod api { ::core::primitive::u32, ); pub type Param0 = ::core::primitive::u32; - pub type Param1 = runtime_types::xcm::VersionedMultiLocation; + pub type Param1 = runtime_types::xcm::VersionedLocation; } pub mod version_discovery_queue { use super::runtime_types; pub type VersionDiscoveryQueue = runtime_types::bounded_collections::bounded_vec::BoundedVec26<( - runtime_types::xcm::VersionedMultiLocation, + runtime_types::xcm::VersionedLocation, ::core::primitive::u32, )>; } @@ -41261,7 +47880,7 @@ pub mod api { pub type LockedFungibles = runtime_types::bounded_collections::bounded_vec::BoundedVec28<( ::core::primitive::u128, - runtime_types::xcm::VersionedMultiLocation, + runtime_types::xcm::VersionedLocation, )>; pub type Param0 = ::subxt::ext::subxt_core::utils::AccountId32; } @@ -41309,9 +47928,10 @@ pub mod api { "Queries", (), [ - 119u8, 5u8, 12u8, 91u8, 117u8, 240u8, 52u8, 192u8, 135u8, 139u8, 220u8, - 78u8, 207u8, 199u8, 71u8, 163u8, 100u8, 17u8, 6u8, 65u8, 200u8, 245u8, - 191u8, 82u8, 232u8, 128u8, 126u8, 70u8, 39u8, 63u8, 148u8, 219u8, + 246u8, 75u8, 240u8, 129u8, 106u8, 114u8, 99u8, 154u8, 176u8, 188u8, + 146u8, 125u8, 244u8, 103u8, 187u8, 171u8, 60u8, 119u8, 4u8, 90u8, 58u8, + 180u8, 48u8, 165u8, 145u8, 125u8, 227u8, 233u8, 11u8, 142u8, 122u8, + 3u8, ], ) } @@ -41335,15 +47955,16 @@ pub mod api { _0.borrow(), ), [ - 119u8, 5u8, 12u8, 91u8, 117u8, 240u8, 52u8, 192u8, 135u8, 139u8, 220u8, - 78u8, 207u8, 199u8, 71u8, 163u8, 100u8, 17u8, 6u8, 65u8, 200u8, 245u8, - 191u8, 82u8, 232u8, 128u8, 126u8, 70u8, 39u8, 63u8, 148u8, 219u8, + 246u8, 75u8, 240u8, 129u8, 106u8, 114u8, 99u8, 154u8, 176u8, 188u8, + 146u8, 125u8, 244u8, 103u8, 187u8, 171u8, 60u8, 119u8, 4u8, 90u8, 58u8, + 180u8, 48u8, 165u8, 145u8, 125u8, 227u8, 233u8, 11u8, 142u8, 122u8, + 3u8, ], ) } #[doc = " The existing asset traps."] #[doc = ""] - #[doc = " Key is the blake2 256 hash of (origin, versioned `MultiAssets`) pair. Value is the number of"] + #[doc = " Key is the blake2 256 hash of (origin, versioned `Assets`) pair. Value is the number of"] #[doc = " times this pair has been trapped (usually just 1 if it exists at all)."] pub fn asset_traps_iter( &self, @@ -41367,7 +47988,7 @@ pub mod api { } #[doc = " The existing asset traps."] #[doc = ""] - #[doc = " Key is the blake2 256 hash of (origin, versioned `MultiAssets`) pair. Value is the number of"] + #[doc = " Key is the blake2 256 hash of (origin, versioned `Assets`) pair. Value is the number of"] #[doc = " times this pair has been trapped (usually just 1 if it exists at all)."] pub fn asset_traps( &self, @@ -41432,9 +48053,10 @@ pub mod api { "SupportedVersion", (), [ - 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, - 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, - 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, + 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, + 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, + 133u8, 45u8, 156u8, 38u8, 61u8, 51u8, 153u8, 161u8, 147u8, 146u8, + 202u8, 24u8, ], ) } @@ -41458,9 +48080,10 @@ pub mod api { _0.borrow(), ), [ - 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, - 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, - 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, + 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, + 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, + 133u8, 45u8, 156u8, 38u8, 61u8, 51u8, 153u8, 161u8, 147u8, 146u8, + 202u8, 24u8, ], ) } @@ -41495,9 +48118,10 @@ pub mod api { ), ), [ - 144u8, 22u8, 91u8, 30u8, 139u8, 164u8, 95u8, 149u8, 97u8, 247u8, 12u8, - 212u8, 96u8, 16u8, 134u8, 236u8, 74u8, 57u8, 244u8, 169u8, 68u8, 63u8, - 111u8, 86u8, 65u8, 229u8, 104u8, 51u8, 44u8, 100u8, 47u8, 191u8, + 144u8, 218u8, 177u8, 254u8, 210u8, 8u8, 84u8, 149u8, 163u8, 162u8, + 238u8, 37u8, 157u8, 28u8, 140u8, 121u8, 201u8, 173u8, 204u8, 92u8, + 133u8, 45u8, 156u8, 38u8, 61u8, 51u8, 153u8, 161u8, 147u8, 146u8, + 202u8, 24u8, ], ) } @@ -41516,9 +48140,10 @@ pub mod api { "VersionNotifiers", (), [ - 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, - 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, - 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, + 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, + 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, + 237u8, 116u8, 195u8, 66u8, 209u8, 102u8, 42u8, 126u8, 222u8, 176u8, + 201u8, 49u8, ], ) } @@ -41542,9 +48167,10 @@ pub mod api { _0.borrow(), ), [ - 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, - 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, - 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, + 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, + 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, + 237u8, 116u8, 195u8, 66u8, 209u8, 102u8, 42u8, 126u8, 222u8, 176u8, + 201u8, 49u8, ], ) } @@ -41579,9 +48205,10 @@ pub mod api { ), ), [ - 49u8, 190u8, 73u8, 67u8, 91u8, 69u8, 121u8, 206u8, 25u8, 82u8, 29u8, - 170u8, 157u8, 201u8, 168u8, 93u8, 181u8, 55u8, 226u8, 142u8, 136u8, - 46u8, 117u8, 208u8, 130u8, 90u8, 129u8, 39u8, 151u8, 92u8, 118u8, 75u8, + 175u8, 206u8, 29u8, 14u8, 111u8, 123u8, 211u8, 109u8, 159u8, 131u8, + 80u8, 149u8, 216u8, 196u8, 181u8, 105u8, 117u8, 138u8, 80u8, 69u8, + 237u8, 116u8, 195u8, 66u8, 209u8, 102u8, 42u8, 126u8, 222u8, 176u8, + 201u8, 49u8, ], ) } @@ -41601,10 +48228,9 @@ pub mod api { "VersionNotifyTargets", (), [ - 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, - 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, - 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, - 173u8, + 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, + 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, + 174u8, 22u8, 207u8, 199u8, 57u8, 85u8, 53u8, 208u8, 146u8, 81u8, ], ) } @@ -41629,10 +48255,9 @@ pub mod api { _0.borrow(), ), [ - 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, - 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, - 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, - 173u8, + 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, + 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, + 174u8, 22u8, 207u8, 199u8, 57u8, 85u8, 53u8, 208u8, 146u8, 81u8, ], ) } @@ -41668,10 +48293,9 @@ pub mod api { ), ), [ - 1u8, 195u8, 40u8, 83u8, 216u8, 175u8, 241u8, 95u8, 42u8, 7u8, 85u8, - 253u8, 223u8, 241u8, 195u8, 41u8, 41u8, 21u8, 17u8, 171u8, 216u8, - 150u8, 39u8, 165u8, 215u8, 194u8, 201u8, 225u8, 179u8, 12u8, 52u8, - 173u8, + 113u8, 77u8, 150u8, 42u8, 82u8, 49u8, 195u8, 120u8, 96u8, 80u8, 152u8, + 67u8, 27u8, 142u8, 10u8, 74u8, 66u8, 134u8, 35u8, 202u8, 77u8, 187u8, + 174u8, 22u8, 207u8, 199u8, 57u8, 85u8, 53u8, 208u8, 146u8, 81u8, ], ) } @@ -41692,9 +48316,10 @@ pub mod api { "VersionDiscoveryQueue", (), [ - 110u8, 87u8, 102u8, 193u8, 125u8, 129u8, 0u8, 221u8, 218u8, 229u8, - 101u8, 94u8, 74u8, 229u8, 246u8, 180u8, 113u8, 11u8, 15u8, 159u8, 98u8, - 90u8, 30u8, 112u8, 164u8, 236u8, 151u8, 220u8, 19u8, 83u8, 67u8, 248u8, + 95u8, 74u8, 97u8, 94u8, 40u8, 140u8, 175u8, 176u8, 224u8, 222u8, 83u8, + 199u8, 170u8, 102u8, 3u8, 77u8, 127u8, 208u8, 155u8, 122u8, 176u8, + 51u8, 15u8, 253u8, 231u8, 245u8, 91u8, 192u8, 60u8, 144u8, 101u8, + 168u8, ], ) } @@ -41734,9 +48359,10 @@ pub mod api { "RemoteLockedFungibles", (), [ - 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, - 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, - 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, + 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, + 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, + 201u8, 150u8, ], ) } @@ -41760,9 +48386,10 @@ pub mod api { _0.borrow(), ), [ - 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, - 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, - 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, + 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, + 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, + 201u8, 150u8, ], ) } @@ -41797,9 +48424,10 @@ pub mod api { ), ), [ - 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, - 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, - 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, + 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, + 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, + 201u8, 150u8, ], ) } @@ -41841,9 +48469,10 @@ pub mod api { ), ), [ - 74u8, 249u8, 83u8, 245u8, 44u8, 230u8, 152u8, 82u8, 4u8, 163u8, 230u8, - 121u8, 87u8, 143u8, 184u8, 12u8, 117u8, 112u8, 131u8, 160u8, 232u8, - 62u8, 175u8, 15u8, 81u8, 198u8, 182u8, 255u8, 37u8, 81u8, 6u8, 57u8, + 247u8, 124u8, 77u8, 42u8, 208u8, 183u8, 99u8, 196u8, 50u8, 113u8, + 250u8, 221u8, 222u8, 170u8, 10u8, 60u8, 143u8, 172u8, 149u8, 198u8, + 125u8, 154u8, 196u8, 196u8, 145u8, 209u8, 68u8, 28u8, 241u8, 241u8, + 201u8, 150u8, ], ) } @@ -41862,10 +48491,9 @@ pub mod api { "LockedFungibles", (), [ - 110u8, 220u8, 127u8, 176u8, 219u8, 23u8, 132u8, 36u8, 224u8, 187u8, - 25u8, 103u8, 126u8, 99u8, 34u8, 105u8, 57u8, 182u8, 162u8, 69u8, 24u8, - 67u8, 221u8, 103u8, 79u8, 139u8, 187u8, 162u8, 113u8, 109u8, 163u8, - 35u8, + 254u8, 234u8, 1u8, 27u8, 27u8, 32u8, 217u8, 24u8, 47u8, 30u8, 62u8, + 80u8, 86u8, 125u8, 120u8, 24u8, 143u8, 229u8, 161u8, 153u8, 240u8, + 246u8, 80u8, 15u8, 49u8, 189u8, 20u8, 204u8, 239u8, 198u8, 97u8, 174u8, ], ) } @@ -41889,10 +48517,9 @@ pub mod api { _0.borrow(), ), [ - 110u8, 220u8, 127u8, 176u8, 219u8, 23u8, 132u8, 36u8, 224u8, 187u8, - 25u8, 103u8, 126u8, 99u8, 34u8, 105u8, 57u8, 182u8, 162u8, 69u8, 24u8, - 67u8, 221u8, 103u8, 79u8, 139u8, 187u8, 162u8, 113u8, 109u8, 163u8, - 35u8, + 254u8, 234u8, 1u8, 27u8, 27u8, 32u8, 217u8, 24u8, 47u8, 30u8, 62u8, + 80u8, 86u8, 125u8, 120u8, 24u8, 143u8, 229u8, 161u8, 153u8, 240u8, + 246u8, 80u8, 15u8, 49u8, 189u8, 20u8, 204u8, 239u8, 198u8, 97u8, 174u8, ], ) } @@ -41920,6 +48547,823 @@ pub mod api { } } } + pub mod beefy { + use super::root_mod; + use super::runtime_types; + #[doc = "The `Error` enum of this pallet."] + pub type Error = runtime_types::pallet_beefy::pallet::Error; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_beefy::pallet::Call; + pub mod calls { + use super::root_mod; + use super::runtime_types; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + pub struct ReportEquivocation { + pub equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< + report_equivocation::EquivocationProof, + >, + pub key_owner_proof: report_equivocation::KeyOwnerProof, + } + pub mod report_equivocation { + use super::runtime_types; + pub type EquivocationProof = + runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >; + pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ReportEquivocation { + const PALLET: &'static str = "Beefy"; + const CALL: &'static str = "report_equivocation"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + #[doc = ""] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] + pub struct ReportEquivocationUnsigned { + pub equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< + report_equivocation_unsigned::EquivocationProof, + >, + pub key_owner_proof: report_equivocation_unsigned::KeyOwnerProof, + } + pub mod report_equivocation_unsigned { + use super::runtime_types; + pub type EquivocationProof = + runtime_types::sp_consensus_beefy::EquivocationProof< + ::core::primitive::u32, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + runtime_types::sp_consensus_beefy::ecdsa_crypto::Signature, + >; + pub type KeyOwnerProof = runtime_types::sp_session::MembershipProof; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ReportEquivocationUnsigned { + const PALLET: &'static str = "Beefy"; + const CALL: &'static str = "report_equivocation_unsigned"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Reset BEEFY consensus by setting a new BEEFY genesis at `delay_in_blocks` blocks in the"] + #[doc = "future."] + #[doc = ""] + #[doc = "Note: `delay_in_blocks` has to be at least 1."] + pub struct SetNewGenesis { + pub delay_in_blocks: set_new_genesis::DelayInBlocks, + } + pub mod set_new_genesis { + use super::runtime_types; + pub type DelayInBlocks = ::core::primitive::u32; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for SetNewGenesis { + const PALLET: &'static str = "Beefy"; + const CALL: &'static str = "set_new_genesis"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + pub fn report_equivocation( + &self, + equivocation_proof: types::report_equivocation::EquivocationProof, + key_owner_proof: types::report_equivocation::KeyOwnerProof, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Beefy", + "report_equivocation", + types::ReportEquivocation { + equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + equivocation_proof, + ), + key_owner_proof, + }, + [ + 196u8, 92u8, 30u8, 54u8, 79u8, 96u8, 54u8, 238u8, 29u8, 255u8, 252u8, + 236u8, 8u8, 104u8, 107u8, 190u8, 115u8, 54u8, 232u8, 58u8, 145u8, + 191u8, 110u8, 12u8, 165u8, 154u8, 48u8, 216u8, 178u8, 99u8, 123u8, + 218u8, + ], + ) + } + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + #[doc = ""] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] + pub fn report_equivocation_unsigned( + &self, + equivocation_proof: types::report_equivocation_unsigned::EquivocationProof, + key_owner_proof: types::report_equivocation_unsigned::KeyOwnerProof, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload< + types::ReportEquivocationUnsigned, + > { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Beefy", + "report_equivocation_unsigned", + types::ReportEquivocationUnsigned { + equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box::new( + equivocation_proof, + ), + key_owner_proof, + }, + [ + 106u8, 120u8, 157u8, 177u8, 251u8, 12u8, 39u8, 235u8, 94u8, 241u8, + 75u8, 204u8, 100u8, 82u8, 246u8, 168u8, 238u8, 155u8, 163u8, 20u8, + 83u8, 81u8, 77u8, 206u8, 10u8, 159u8, 196u8, 223u8, 11u8, 98u8, 128u8, + 97u8, + ], + ) + } + #[doc = "Reset BEEFY consensus by setting a new BEEFY genesis at `delay_in_blocks` blocks in the"] + #[doc = "future."] + #[doc = ""] + #[doc = "Note: `delay_in_blocks` has to be at least 1."] + pub fn set_new_genesis( + &self, + delay_in_blocks: types::set_new_genesis::DelayInBlocks, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Beefy", + "set_new_genesis", + types::SetNewGenesis { delay_in_blocks }, + [ + 147u8, 6u8, 252u8, 43u8, 77u8, 91u8, 170u8, 45u8, 112u8, 155u8, 158u8, + 79u8, 1u8, 116u8, 162u8, 146u8, 181u8, 9u8, 171u8, 48u8, 198u8, 210u8, + 243u8, 64u8, 229u8, 35u8, 28u8, 177u8, 144u8, 22u8, 165u8, 163u8, + ], + ) + } + } + } + pub mod storage { + use super::runtime_types; + pub mod types { + use super::runtime_types; + pub mod authorities { + use super::runtime_types; + pub type Authorities = + runtime_types::bounded_collections::bounded_vec::BoundedVec29< + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + >; + } + pub mod validator_set_id { + use super::runtime_types; + pub type ValidatorSetId = ::core::primitive::u64; + } + pub mod next_authorities { + use super::runtime_types; + pub type NextAuthorities = + runtime_types::bounded_collections::bounded_vec::BoundedVec29< + runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, + >; + } + pub mod set_id_session { + use super::runtime_types; + pub type SetIdSession = ::core::primitive::u32; + pub type Param0 = ::core::primitive::u64; + } + pub mod genesis_block { + use super::runtime_types; + pub type GenesisBlock = ::core::option::Option<::core::primitive::u32>; + } + } + pub struct StorageApi; + impl StorageApi { + #[doc = " The current authorities set"] + pub fn authorities( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::authorities::Authorities, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Beefy", + "Authorities", + (), + [ + 135u8, 146u8, 24u8, 144u8, 245u8, 251u8, 253u8, 63u8, 44u8, 46u8, 72u8, + 115u8, 190u8, 93u8, 201u8, 244u8, 80u8, 80u8, 156u8, 171u8, 69u8, + 126u8, 67u8, 51u8, 196u8, 136u8, 93u8, 176u8, 111u8, 247u8, 19u8, + 161u8, + ], + ) + } + #[doc = " The current validator set id"] + pub fn validator_set_id( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::validator_set_id::ValidatorSetId, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Beefy", + "ValidatorSetId", + (), + [ + 168u8, 84u8, 23u8, 134u8, 153u8, 30u8, 183u8, 176u8, 206u8, 100u8, + 109u8, 86u8, 109u8, 126u8, 146u8, 175u8, 173u8, 1u8, 253u8, 42u8, + 122u8, 207u8, 71u8, 4u8, 145u8, 83u8, 148u8, 29u8, 243u8, 52u8, 29u8, + 78u8, + ], + ) + } + #[doc = " Authorities set scheduled to be used with the next session"] + pub fn next_authorities( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::next_authorities::NextAuthorities, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Beefy", + "NextAuthorities", + (), + [ + 183u8, 185u8, 111u8, 92u8, 70u8, 221u8, 225u8, 184u8, 218u8, 97u8, + 108u8, 66u8, 60u8, 148u8, 40u8, 73u8, 236u8, 28u8, 169u8, 32u8, 202u8, + 125u8, 238u8, 246u8, 210u8, 51u8, 25u8, 61u8, 220u8, 195u8, 156u8, + 217u8, + ], + ) + } + #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] + #[doc = " members were responsible."] + #[doc = ""] + #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] + #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] + #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] + #[doc = " was the owner of a given key on a given session, and what the active set ID was"] + #[doc = " during that session."] + #[doc = ""] + #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] + pub fn set_id_session_iter( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::set_id_session::SetIdSession, + (), + (), + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Beefy", + "SetIdSession", + (), + [ + 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, + 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, + 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, + ], + ) + } + #[doc = " A mapping from BEEFY set ID to the index of the *most recent* session for which its"] + #[doc = " members were responsible."] + #[doc = ""] + #[doc = " This is only used for validating equivocation proofs. An equivocation proof must"] + #[doc = " contains a key-ownership proof for a given session, therefore we need a way to tie"] + #[doc = " together sessions and BEEFY set ids, i.e. we need to validate that a validator"] + #[doc = " was the owner of a given key on a given session, and what the active set ID was"] + #[doc = " during that session."] + #[doc = ""] + #[doc = " TWOX-NOTE: `ValidatorSetId` is not under user control."] + pub fn set_id_session( + &self, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::set_id_session::Param0, + >, + types::set_id_session::SetIdSession, + ::subxt::ext::subxt_core::utils::Yes, + (), + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Beefy", + "SetIdSession", + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + [ + 47u8, 0u8, 239u8, 121u8, 187u8, 213u8, 254u8, 50u8, 238u8, 10u8, 162u8, + 65u8, 189u8, 166u8, 37u8, 74u8, 82u8, 81u8, 160u8, 20u8, 180u8, 253u8, + 238u8, 18u8, 209u8, 203u8, 38u8, 148u8, 16u8, 105u8, 72u8, 169u8, + ], + ) + } + #[doc = " Block number where BEEFY consensus is enabled/started."] + #[doc = " By changing this (through privileged `set_new_genesis()`), BEEFY consensus is effectively"] + #[doc = " restarted from the newly set block number."] + pub fn genesis_block( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::genesis_block::GenesisBlock, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Beefy", + "GenesisBlock", + (), + [ + 198u8, 155u8, 11u8, 240u8, 189u8, 245u8, 159u8, 127u8, 55u8, 33u8, + 48u8, 29u8, 209u8, 119u8, 163u8, 24u8, 28u8, 22u8, 163u8, 163u8, 124u8, + 88u8, 126u8, 4u8, 193u8, 158u8, 29u8, 243u8, 212u8, 4u8, 41u8, 22u8, + ], + ) + } + } + } + pub mod constants { + use super::runtime_types; + pub struct ConstantsApi; + impl ConstantsApi { + #[doc = " The maximum number of authorities that can be added."] + pub fn max_authorities( + &self, + ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< + ::core::primitive::u32, + > { + ::subxt::ext::subxt_core::constants::address::StaticAddress::new_static( + "Beefy", + "MaxAuthorities", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of nominators for each validator."] + pub fn max_nominators( + &self, + ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< + ::core::primitive::u32, + > { + ::subxt::ext::subxt_core::constants::address::StaticAddress::new_static( + "Beefy", + "MaxNominators", + [ + 98u8, 252u8, 116u8, 72u8, 26u8, 180u8, 225u8, 83u8, 200u8, 157u8, + 125u8, 151u8, 53u8, 76u8, 168u8, 26u8, 10u8, 9u8, 98u8, 68u8, 9u8, + 178u8, 197u8, 113u8, 31u8, 79u8, 200u8, 90u8, 203u8, 100u8, 41u8, + 145u8, + ], + ) + } + #[doc = " The maximum number of entries to keep in the set id to session index mapping."] + #[doc = ""] + #[doc = " Since the `SetIdSession` map is only used for validating equivocations this"] + #[doc = " value should relate to the bonding duration of whatever staking system is"] + #[doc = " being used (if any). If equivocation handling is not enabled then this value"] + #[doc = " can be zero."] + pub fn max_set_id_session_entries( + &self, + ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< + ::core::primitive::u64, + > { + ::subxt::ext::subxt_core::constants::address::StaticAddress::new_static( + "Beefy", + "MaxSetIdSessionEntries", + [ + 128u8, 214u8, 205u8, 242u8, 181u8, 142u8, 124u8, 231u8, 190u8, 146u8, + 59u8, 226u8, 157u8, 101u8, 103u8, 117u8, 249u8, 65u8, 18u8, 191u8, + 103u8, 119u8, 53u8, 85u8, 81u8, 96u8, 220u8, 42u8, 184u8, 239u8, 42u8, + 246u8, + ], + ) + } + } + } + } + pub mod mmr { + use super::root_mod; + use super::runtime_types; + pub mod storage { + use super::runtime_types; + pub mod types { + use super::runtime_types; + pub mod root_hash { + use super::runtime_types; + pub type RootHash = ::subxt::ext::subxt_core::utils::H256; + } + pub mod number_of_leaves { + use super::runtime_types; + pub type NumberOfLeaves = ::core::primitive::u64; + } + pub mod nodes { + use super::runtime_types; + pub type Nodes = ::subxt::ext::subxt_core::utils::H256; + pub type Param0 = ::core::primitive::u64; + } + } + pub struct StorageApi; + impl StorageApi { + #[doc = " Latest MMR Root hash."] + pub fn root_hash( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::root_hash::RootHash, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Mmr", + "RootHash", + (), + [ + 111u8, 206u8, 173u8, 92u8, 67u8, 49u8, 150u8, 113u8, 90u8, 245u8, 38u8, + 254u8, 76u8, 250u8, 167u8, 66u8, 130u8, 129u8, 251u8, 220u8, 172u8, + 229u8, 162u8, 251u8, 36u8, 227u8, 43u8, 189u8, 7u8, 106u8, 23u8, 13u8, + ], + ) + } + #[doc = " Current size of the MMR (number of leaves)."] + pub fn number_of_leaves( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::number_of_leaves::NumberOfLeaves, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Mmr", + "NumberOfLeaves", + (), + [ + 123u8, 58u8, 149u8, 174u8, 85u8, 45u8, 20u8, 115u8, 241u8, 0u8, 51u8, + 174u8, 234u8, 60u8, 230u8, 59u8, 237u8, 144u8, 170u8, 32u8, 4u8, 0u8, + 34u8, 163u8, 238u8, 205u8, 93u8, 208u8, 53u8, 38u8, 141u8, 195u8, + ], + ) + } + #[doc = " Hashes of the nodes in the MMR."] + #[doc = ""] + #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] + #[doc = " are pruned and only stored in the Offchain DB."] + pub fn nodes_iter( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::nodes::Nodes, + (), + (), + ::subxt::ext::subxt_core::utils::Yes, + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Mmr", + "Nodes", + (), + [ + 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, + 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, + 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, + ], + ) + } + #[doc = " Hashes of the nodes in the MMR."] + #[doc = ""] + #[doc = " Note this collection only contains MMR peaks, the inner nodes (and leaves)"] + #[doc = " are pruned and only stored in the Offchain DB."] + pub fn nodes( + &self, + _0: impl ::core::borrow::Borrow, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + ::subxt::ext::subxt_core::storage::address::StaticStorageKey< + types::nodes::Param0, + >, + types::nodes::Nodes, + ::subxt::ext::subxt_core::utils::Yes, + (), + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "Mmr", + "Nodes", + ::subxt::ext::subxt_core::storage::address::StaticStorageKey::new( + _0.borrow(), + ), + [ + 27u8, 84u8, 41u8, 195u8, 146u8, 81u8, 211u8, 189u8, 63u8, 125u8, 173u8, + 206u8, 69u8, 198u8, 202u8, 213u8, 89u8, 31u8, 89u8, 177u8, 76u8, 154u8, + 249u8, 197u8, 133u8, 78u8, 142u8, 71u8, 183u8, 3u8, 132u8, 25u8, + ], + ) + } + } + } + } + pub mod mmr_leaf { + use super::root_mod; + use super::runtime_types; + pub mod storage { + use super::runtime_types; + pub mod types { + use super::runtime_types; + pub mod beefy_authorities { + use super::runtime_types; + pub type BeefyAuthorities = + runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet< + ::subxt::ext::subxt_core::utils::H256, + >; + } + pub mod beefy_next_authorities { + use super::runtime_types; + pub type BeefyNextAuthorities = + runtime_types::sp_consensus_beefy::mmr::BeefyAuthoritySet< + ::subxt::ext::subxt_core::utils::H256, + >; + } + } + pub struct StorageApi; + impl StorageApi { + #[doc = " Details of current BEEFY authority set."] + pub fn beefy_authorities( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::beefy_authorities::BeefyAuthorities, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "MmrLeaf", + "BeefyAuthorities", + (), + [ + 128u8, 35u8, 176u8, 79u8, 224u8, 58u8, 214u8, 234u8, 231u8, 71u8, + 227u8, 153u8, 180u8, 189u8, 66u8, 44u8, 47u8, 174u8, 0u8, 83u8, 121u8, + 182u8, 226u8, 44u8, 224u8, 173u8, 237u8, 102u8, 231u8, 146u8, 110u8, + 7u8, + ], + ) + } + #[doc = " Details of next BEEFY authority set."] + #[doc = ""] + #[doc = " This storage entry is used as cache for calls to `update_beefy_next_authority_set`."] + pub fn beefy_next_authorities( + &self, + ) -> ::subxt::ext::subxt_core::storage::address::StaticAddress< + (), + types::beefy_next_authorities::BeefyNextAuthorities, + ::subxt::ext::subxt_core::utils::Yes, + ::subxt::ext::subxt_core::utils::Yes, + (), + > { + ::subxt::ext::subxt_core::storage::address::StaticAddress::new_static( + "MmrLeaf", + "BeefyNextAuthorities", + (), + [ + 97u8, 71u8, 52u8, 111u8, 120u8, 251u8, 183u8, 155u8, 177u8, 100u8, + 236u8, 142u8, 204u8, 117u8, 95u8, 40u8, 201u8, 36u8, 32u8, 82u8, 38u8, + 234u8, 135u8, 39u8, 224u8, 69u8, 94u8, 85u8, 12u8, 89u8, 97u8, 218u8, + ], + ) + } + } + } + } + pub mod identity_migrator { + use super::root_mod; + use super::runtime_types; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::polkadot_runtime_common::identity_migrator::pallet::Call; + pub mod calls { + use super::root_mod; + use super::runtime_types; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Reap the `IdentityInfo` of `who` from the Identity pallet of `T`, unreserving any"] + #[doc = "deposits held and removing storage items associated with `who`."] + pub struct ReapIdentity { + pub who: reap_identity::Who, + } + pub mod reap_identity { + use super::runtime_types; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for ReapIdentity { + const PALLET: &'static str = "IdentityMigrator"; + const CALL: &'static str = "reap_identity"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Update the deposit of `who`. Meant to be called by the system with an XCM `Transact`"] + #[doc = "Instruction."] + pub struct PokeDeposit { + pub who: poke_deposit::Who, + } + pub mod poke_deposit { + use super::runtime_types; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for PokeDeposit { + const PALLET: &'static str = "IdentityMigrator"; + const CALL: &'static str = "poke_deposit"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "Reap the `IdentityInfo` of `who` from the Identity pallet of `T`, unreserving any"] + #[doc = "deposits held and removing storage items associated with `who`."] + pub fn reap_identity( + &self, + who: types::reap_identity::Who, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "IdentityMigrator", + "reap_identity", + types::ReapIdentity { who }, + [ + 187u8, 110u8, 202u8, 220u8, 54u8, 240u8, 242u8, 171u8, 5u8, 83u8, + 129u8, 93u8, 213u8, 208u8, 21u8, 236u8, 121u8, 128u8, 127u8, 121u8, + 153u8, 118u8, 232u8, 44u8, 20u8, 124u8, 214u8, 185u8, 249u8, 182u8, + 136u8, 96u8, + ], + ) + } + #[doc = "Update the deposit of `who`. Meant to be called by the system with an XCM `Transact`"] + #[doc = "Instruction."] + pub fn poke_deposit( + &self, + who: types::poke_deposit::Who, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "IdentityMigrator", + "poke_deposit", + types::PokeDeposit { who }, + [ + 42u8, 67u8, 168u8, 124u8, 75u8, 32u8, 143u8, 173u8, 14u8, 28u8, 76u8, + 35u8, 196u8, 255u8, 250u8, 33u8, 128u8, 159u8, 132u8, 124u8, 51u8, + 243u8, 166u8, 55u8, 208u8, 101u8, 188u8, 133u8, 36u8, 18u8, 119u8, + 146u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::polkadot_runtime_common::identity_migrator::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "The identity and all sub accounts were reaped for `who`."] + pub struct IdentityReaped { + pub who: identity_reaped::Who, + } + pub mod identity_reaped { + use super::runtime_types; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for IdentityReaped { + const PALLET: &'static str = "IdentityMigrator"; + const EVENT: &'static str = "IdentityReaped"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "The deposits held for `who` were updated. `identity` is the new deposit held for"] + #[doc = "identity info, and `subs` is the new deposit held for the sub-accounts."] + pub struct DepositUpdated { + pub who: deposit_updated::Who, + pub identity: deposit_updated::Identity, + pub subs: deposit_updated::Subs, + } + pub mod deposit_updated { + use super::runtime_types; + pub type Who = ::subxt::ext::subxt_core::utils::AccountId32; + pub type Identity = ::core::primitive::u128; + pub type Subs = ::core::primitive::u128; + } + impl ::subxt::ext::subxt_core::events::StaticEvent for DepositUpdated { + const PALLET: &'static str = "IdentityMigrator"; + const EVENT: &'static str = "DepositUpdated"; + } + } + } pub mod paras_sudo_wrapper { use super::root_mod; use super::runtime_types; @@ -41947,7 +49391,11 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::sudo_schedule_para_initialize`]."] + #[doc = "Schedule a para to be initialized at the start of the next session."] + #[doc = ""] + #[doc = "This should only be used for TESTING and not on PRODUCTION chains. It automatically"] + #[doc = "assigns Coretime to the chain and increases the number of cores. Thus, there is no"] + #[doc = "running coretime chain required."] pub struct SudoScheduleParaInitialize { pub id: sudo_schedule_para_initialize::Id, pub genesis: sudo_schedule_para_initialize::Genesis, @@ -41976,7 +49424,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::sudo_schedule_para_cleanup`]."] + #[doc = "Schedule a para to be cleaned up at the start of the next session."] pub struct SudoScheduleParaCleanup { pub id: sudo_schedule_para_cleanup::Id, } @@ -42002,7 +49450,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::sudo_schedule_parathread_upgrade`]."] + #[doc = "Upgrade a parathread (on-demand parachain) to a lease holding parachain"] pub struct SudoScheduleParathreadUpgrade { pub id: sudo_schedule_parathread_upgrade::Id, } @@ -42028,7 +49476,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::sudo_schedule_parachain_downgrade`]."] + #[doc = "Downgrade a lease holding parachain to an on-demand parachain"] pub struct SudoScheduleParachainDowngrade { pub id: sudo_schedule_parachain_downgrade::Id, } @@ -42054,7 +49502,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::sudo_queue_downward_xcm`]."] + #[doc = "Send a downward XCM to the given para."] + #[doc = ""] + #[doc = "The given parachain should exist and the payload should not exceed the preconfigured"] + #[doc = "size `config.max_downward_message_size`."] pub struct SudoQueueDownwardXcm { pub id: sudo_queue_downward_xcm::Id, pub xcm: @@ -42083,7 +49534,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::sudo_establish_hrmp_channel`]."] + #[doc = "Forcefully establish a channel from the sender to the recipient."] + #[doc = ""] + #[doc = "This is equivalent to sending an `Hrmp::hrmp_init_open_channel` extrinsic followed by"] + #[doc = "`Hrmp::hrmp_accept_open_channel`."] pub struct SudoEstablishHrmpChannel { pub sender: sudo_establish_hrmp_channel::Sender, pub recipient: sudo_establish_hrmp_channel::Recipient, @@ -42105,7 +49559,11 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::sudo_schedule_para_initialize`]."] + #[doc = "Schedule a para to be initialized at the start of the next session."] + #[doc = ""] + #[doc = "This should only be used for TESTING and not on PRODUCTION chains. It automatically"] + #[doc = "assigns Coretime to the chain and increases the number of cores. Thus, there is no"] + #[doc = "running coretime chain required."] pub fn sudo_schedule_para_initialize( &self, id: types::sudo_schedule_para_initialize::Id, @@ -42124,7 +49582,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::sudo_schedule_para_cleanup`]."] + #[doc = "Schedule a para to be cleaned up at the start of the next session."] pub fn sudo_schedule_para_cleanup( &self, id: types::sudo_schedule_para_cleanup::Id, @@ -42142,7 +49600,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::sudo_schedule_parathread_upgrade`]."] + #[doc = "Upgrade a parathread (on-demand parachain) to a lease holding parachain"] pub fn sudo_schedule_parathread_upgrade( &self, id: types::sudo_schedule_parathread_upgrade::Id, @@ -42161,7 +49619,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::sudo_schedule_parachain_downgrade`]."] + #[doc = "Downgrade a lease holding parachain to an on-demand parachain"] pub fn sudo_schedule_parachain_downgrade( &self, id: types::sudo_schedule_parachain_downgrade::Id, @@ -42180,7 +49638,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::sudo_queue_downward_xcm`]."] + #[doc = "Send a downward XCM to the given para."] + #[doc = ""] + #[doc = "The given parachain should exist and the payload should not exceed the preconfigured"] + #[doc = "size `config.max_downward_message_size`."] pub fn sudo_queue_downward_xcm( &self, id: types::sudo_queue_downward_xcm::Id, @@ -42195,14 +49656,16 @@ pub mod api { xcm: ::subxt::ext::subxt_core::alloc::boxed::Box::new(xcm), }, [ - 144u8, 179u8, 113u8, 39u8, 46u8, 58u8, 218u8, 220u8, 98u8, 232u8, - 121u8, 119u8, 127u8, 99u8, 52u8, 189u8, 232u8, 28u8, 233u8, 54u8, - 122u8, 206u8, 155u8, 7u8, 88u8, 167u8, 203u8, 251u8, 96u8, 156u8, 23u8, - 54u8, + 35u8, 59u8, 126u8, 248u8, 211u8, 246u8, 239u8, 67u8, 252u8, 100u8, + 231u8, 46u8, 197u8, 83u8, 150u8, 54u8, 215u8, 188u8, 76u8, 193u8, 60u8, + 38u8, 251u8, 162u8, 19u8, 15u8, 214u8, 51u8, 24u8, 2u8, 9u8, 116u8, ], ) } - #[doc = "See [`Pallet::sudo_establish_hrmp_channel`]."] + #[doc = "Forcefully establish a channel from the sender to the recipient."] + #[doc = ""] + #[doc = "This is equivalent to sending an `Hrmp::hrmp_init_open_channel` extrinsic followed by"] + #[doc = "`Hrmp::hrmp_accept_open_channel`."] pub fn sudo_establish_hrmp_channel( &self, sender: types::sudo_establish_hrmp_channel::Sender, @@ -42258,7 +49721,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::assign_perm_parachain_slot`]."] + #[doc = "Assign a permanent parachain slot and immediately create a lease for it."] pub struct AssignPermParachainSlot { pub id: assign_perm_parachain_slot::Id, } @@ -42284,7 +49747,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::assign_temp_parachain_slot`]."] + #[doc = "Assign a temporary parachain slot. The function tries to create a lease for it"] + #[doc = "immediately if `SlotLeasePeriodStart::Current` is specified, and if the number"] + #[doc = "of currently active temporary slots is below `MaxTemporarySlotPerLeasePeriod`."] pub struct AssignTempParachainSlot { pub id: assign_temp_parachain_slot::Id, pub lease_period_start: assign_temp_parachain_slot::LeasePeriodStart, @@ -42312,7 +49777,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::unassign_parachain_slot`]."] + #[doc = "Unassign a permanent or temporary parachain slot"] pub struct UnassignParachainSlot { pub id: unassign_parachain_slot::Id, } @@ -42338,7 +49803,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_max_permanent_slots`]."] + #[doc = "Sets the storage value [`MaxPermanentSlots`]."] pub struct SetMaxPermanentSlots { pub slots: set_max_permanent_slots::Slots, } @@ -42364,7 +49829,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_max_temporary_slots`]."] + #[doc = "Sets the storage value [`MaxTemporarySlots`]."] pub struct SetMaxTemporarySlots { pub slots: set_max_temporary_slots::Slots, } @@ -42379,7 +49844,7 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::assign_perm_parachain_slot`]."] + #[doc = "Assign a permanent parachain slot and immediately create a lease for it."] pub fn assign_perm_parachain_slot( &self, id: types::assign_perm_parachain_slot::Id, @@ -42397,7 +49862,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::assign_temp_parachain_slot`]."] + #[doc = "Assign a temporary parachain slot. The function tries to create a lease for it"] + #[doc = "immediately if `SlotLeasePeriodStart::Current` is specified, and if the number"] + #[doc = "of currently active temporary slots is below `MaxTemporarySlotPerLeasePeriod`."] pub fn assign_temp_parachain_slot( &self, id: types::assign_temp_parachain_slot::Id, @@ -42420,7 +49887,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::unassign_parachain_slot`]."] + #[doc = "Unassign a permanent or temporary parachain slot"] pub fn unassign_parachain_slot( &self, id: types::unassign_parachain_slot::Id, @@ -42439,7 +49906,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_permanent_slots`]."] + #[doc = "Sets the storage value [`MaxPermanentSlots`]."] pub fn set_max_permanent_slots( &self, slots: types::set_max_permanent_slots::Slots, @@ -42456,7 +49923,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_max_temporary_slots`]."] + #[doc = "Sets the storage value [`MaxTemporarySlots`]."] pub fn set_max_temporary_slots( &self, slots: types::set_max_temporary_slots::Slots, @@ -42893,7 +50360,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::register_validators`]."] + #[doc = "Add new validators to the set."] + #[doc = ""] + #[doc = "The new validators will be active from current session + 2."] pub struct RegisterValidators { pub validators: register_validators::Validators, } @@ -42921,7 +50390,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::deregister_validators`]."] + #[doc = "Remove validators from the set."] + #[doc = ""] + #[doc = "The removed validators will be deactivated from current session + 2."] pub struct DeregisterValidators { pub validators: deregister_validators::Validators, } @@ -42938,7 +50409,9 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::register_validators`]."] + #[doc = "Add new validators to the set."] + #[doc = ""] + #[doc = "The new validators will be active from current session + 2."] pub fn register_validators( &self, validators: types::register_validators::Validators, @@ -42956,7 +50429,9 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::deregister_validators`]."] + #[doc = "Remove validators from the set."] + #[doc = ""] + #[doc = "The removed validators will be deactivated from current session + 2."] pub fn deregister_validators( &self, validators: types::deregister_validators::Validators, @@ -43117,7 +50592,9 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::control_auto_migration`]."] + #[doc = "Control the automatic migration."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be [`Config::ControlOrigin`]."] pub struct ControlAutoMigration { pub maybe_config: control_auto_migration::MaybeConfig, } @@ -43145,7 +50622,27 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::continue_migrate`]."] + #[doc = "Continue the migration for the given `limits`."] + #[doc = ""] + #[doc = "The dispatch origin of this call can be any signed account."] + #[doc = ""] + #[doc = "This transaction has NO MONETARY INCENTIVES. calling it will not reward anyone. Albeit,"] + #[doc = "Upon successful execution, the transaction fee is returned."] + #[doc = ""] + #[doc = "The (potentially over-estimated) of the byte length of all the data read must be"] + #[doc = "provided for up-front fee-payment and weighing. In essence, the caller is guaranteeing"] + #[doc = "that executing the current `MigrationTask` with the given `limits` will not exceed"] + #[doc = "`real_size_upper` bytes of read data."] + #[doc = ""] + #[doc = "The `witness_task` is merely a helper to prevent the caller from being slashed or"] + #[doc = "generally trigger a migration that they do not intend. This parameter is just a message"] + #[doc = "from caller, saying that they believed `witness_task` was the last state of the"] + #[doc = "migration, and they only wish for their transaction to do anything, if this assumption"] + #[doc = "holds. In case `witness_task` does not match, the transaction fails."] + #[doc = ""] + #[doc = "Based on the documentation of [`MigrationTask::migrate_until_exhaustion`], the"] + #[doc = "recommended way of doing this is to pass a `limit` that only bounds `count`, as the"] + #[doc = "`size` limit can always be overwritten."] pub struct ContinueMigrate { pub limits: continue_migrate::Limits, pub real_size_upper: continue_migrate::RealSizeUpper, @@ -43177,7 +50674,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::migrate_custom_top`]."] + #[doc = "Migrate the list of top keys by iterating each of them one by one."] + #[doc = ""] + #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] + #[doc = "should only be used in case any keys are leftover due to a bug."] pub struct MigrateCustomTop { pub keys: migrate_custom_top::Keys, pub witness_size: migrate_custom_top::WitnessSize, @@ -43207,7 +50707,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::migrate_custom_child`]."] + #[doc = "Migrate the list of child keys by iterating each of them one by one."] + #[doc = ""] + #[doc = "All of the given child keys must be present under one `child_root`."] + #[doc = ""] + #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] + #[doc = "should only be used in case any keys are leftover due to a bug."] pub struct MigrateCustomChild { pub root: migrate_custom_child::Root, pub child_keys: migrate_custom_child::ChildKeys, @@ -43240,7 +50745,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_signed_max_limits`]."] + #[doc = "Set the maximum limit of the signed migration."] pub struct SetSignedMaxLimits { pub limits: set_signed_max_limits::Limits, } @@ -43267,7 +50772,15 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::force_set_progress`]."] + #[doc = "Forcefully set the progress the running migration."] + #[doc = ""] + #[doc = "This is only useful in one case: the next key to migrate is too big to be migrated with"] + #[doc = "a signed account, in a parachain context, and we simply want to skip it. A reasonable"] + #[doc = "example of this would be `:code:`, which is both very expensive to migrate, and commonly"] + #[doc = "used, so probably it is already migrated."] + #[doc = ""] + #[doc = "In case you mess things up, you can also, in principle, use this to reset the migration"] + #[doc = "process."] pub struct ForceSetProgress { pub progress_top: force_set_progress::ProgressTop, pub progress_child: force_set_progress::ProgressChild, @@ -43286,7 +50799,9 @@ pub mod api { } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::control_auto_migration`]."] + #[doc = "Control the automatic migration."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be [`Config::ControlOrigin`]."] pub fn control_auto_migration( &self, maybe_config: types::control_auto_migration::MaybeConfig, @@ -43303,7 +50818,27 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::continue_migrate`]."] + #[doc = "Continue the migration for the given `limits`."] + #[doc = ""] + #[doc = "The dispatch origin of this call can be any signed account."] + #[doc = ""] + #[doc = "This transaction has NO MONETARY INCENTIVES. calling it will not reward anyone. Albeit,"] + #[doc = "Upon successful execution, the transaction fee is returned."] + #[doc = ""] + #[doc = "The (potentially over-estimated) of the byte length of all the data read must be"] + #[doc = "provided for up-front fee-payment and weighing. In essence, the caller is guaranteeing"] + #[doc = "that executing the current `MigrationTask` with the given `limits` will not exceed"] + #[doc = "`real_size_upper` bytes of read data."] + #[doc = ""] + #[doc = "The `witness_task` is merely a helper to prevent the caller from being slashed or"] + #[doc = "generally trigger a migration that they do not intend. This parameter is just a message"] + #[doc = "from caller, saying that they believed `witness_task` was the last state of the"] + #[doc = "migration, and they only wish for their transaction to do anything, if this assumption"] + #[doc = "holds. In case `witness_task` does not match, the transaction fails."] + #[doc = ""] + #[doc = "Based on the documentation of [`MigrationTask::migrate_until_exhaustion`], the"] + #[doc = "recommended way of doing this is to pass a `limit` that only bounds `count`, as the"] + #[doc = "`size` limit can always be overwritten."] pub fn continue_migrate( &self, limits: types::continue_migrate::Limits, @@ -43327,7 +50862,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::migrate_custom_top`]."] + #[doc = "Migrate the list of top keys by iterating each of them one by one."] + #[doc = ""] + #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] + #[doc = "should only be used in case any keys are leftover due to a bug."] pub fn migrate_custom_top( &self, keys: types::migrate_custom_top::Keys, @@ -43345,7 +50883,12 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::migrate_custom_child`]."] + #[doc = "Migrate the list of child keys by iterating each of them one by one."] + #[doc = ""] + #[doc = "All of the given child keys must be present under one `child_root`."] + #[doc = ""] + #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] + #[doc = "should only be used in case any keys are leftover due to a bug."] pub fn migrate_custom_child( &self, root: types::migrate_custom_child::Root, @@ -43368,7 +50911,7 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::set_signed_max_limits`]."] + #[doc = "Set the maximum limit of the signed migration."] pub fn set_signed_max_limits( &self, limits: types::set_signed_max_limits::Limits, @@ -43385,7 +50928,15 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::force_set_progress`]."] + #[doc = "Forcefully set the progress the running migration."] + #[doc = ""] + #[doc = "This is only useful in one case: the next key to migrate is too big to be migrated with"] + #[doc = "a signed account, in a parachain context, and we simply want to skip it. A reasonable"] + #[doc = "example of this would be `:code:`, which is both very expensive to migrate, and commonly"] + #[doc = "used, so probably it is already migrated."] + #[doc = ""] + #[doc = "In case you mess things up, you can also, in principle, use this to reset the migration"] + #[doc = "process."] pub fn force_set_progress( &self, progress_top: types::force_set_progress::ProgressTop, @@ -43624,7 +51175,7 @@ pub mod api { #[doc = " - [`frame_support::storage::StorageDoubleMap`]: 96 byte"] #[doc = ""] #[doc = " For more info see"] - #[doc = " "] + #[doc = " "] pub fn max_key_len( &self, ) -> ::subxt::ext::subxt_core::constants::address::StaticAddress< @@ -43644,10 +51195,126 @@ pub mod api { } } } + pub mod root_testing { + use super::root_mod; + use super::runtime_types; + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub type Call = runtime_types::pallet_root_testing::pallet::Call; + pub mod calls { + use super::root_mod; + use super::runtime_types; + type DispatchError = runtime_types::sp_runtime::DispatchError; + pub mod types { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "A dispatch that will fill the block weight up to the given ratio."] + pub struct FillBlock { + pub ratio: fill_block::Ratio, + } + pub mod fill_block { + use super::runtime_types; + pub type Ratio = runtime_types::sp_arithmetic::per_things::Perbill; + } + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for FillBlock { + const PALLET: &'static str = "RootTesting"; + const CALL: &'static str = "fill_block"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct TriggerDefensive; + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for TriggerDefensive { + const PALLET: &'static str = "RootTesting"; + const CALL: &'static str = "trigger_defensive"; + } + } + pub struct TransactionApi; + impl TransactionApi { + #[doc = "A dispatch that will fill the block weight up to the given ratio."] + pub fn fill_block( + &self, + ratio: types::fill_block::Ratio, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "RootTesting", + "fill_block", + types::FillBlock { ratio }, + [ + 164u8, 37u8, 43u8, 91u8, 125u8, 34u8, 208u8, 126u8, 67u8, 94u8, 184u8, + 240u8, 68u8, 208u8, 41u8, 206u8, 172u8, 95u8, 111u8, 115u8, 9u8, 250u8, + 163u8, 66u8, 240u8, 0u8, 237u8, 140u8, 87u8, 57u8, 162u8, 117u8, + ], + ) + } + pub fn trigger_defensive( + &self, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "RootTesting", + "trigger_defensive", + types::TriggerDefensive {}, + [ + 170u8, 234u8, 12u8, 158u8, 10u8, 171u8, 161u8, 144u8, 101u8, 67u8, + 150u8, 128u8, 105u8, 234u8, 223u8, 60u8, 241u8, 245u8, 112u8, 21u8, + 80u8, 216u8, 72u8, 147u8, 22u8, 125u8, 19u8, 200u8, 171u8, 153u8, 88u8, + 194u8, + ], + ) + } + } + } + #[doc = "The `Event` enum of this pallet"] + pub type Event = runtime_types::pallet_root_testing::pallet::Event; + pub mod events { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "Event dispatched when the trigger_defensive extrinsic is called."] + pub struct DefensiveTestCall; + impl ::subxt::ext::subxt_core::events::StaticEvent for DefensiveTestCall { + const PALLET: &'static str = "RootTesting"; + const EVENT: &'static str = "DefensiveTestCall"; + } + } + } pub mod sudo { use super::root_mod; use super::runtime_types; - #[doc = "Error for the Sudo pallet"] + #[doc = "Error for the Sudo pallet."] pub type Error = runtime_types::pallet_sudo::pallet::Error; #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub type Call = runtime_types::pallet_sudo::pallet::Call; @@ -43671,7 +51338,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::sudo`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] pub struct Sudo { pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, } @@ -43697,7 +51364,11 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::sudo_unchecked_weight`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] + #[doc = "This function does not check the weight of the call, and instead allows the"] + #[doc = "Sudo user to specify the weight of the call."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] pub struct SudoUncheckedWeight { pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, @@ -43726,7 +51397,8 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::set_key`]."] + #[doc = "Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo"] + #[doc = "key."] pub struct SetKey { pub new: set_key::New, } @@ -43755,7 +51427,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "See [`Pallet::sudo_as`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Signed` origin from"] + #[doc = "a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] pub struct SudoAs { pub who: sudo_as::Who, pub call: ::subxt::ext::subxt_core::alloc::boxed::Box, @@ -43772,10 +51447,32 @@ pub mod api { const PALLET: &'static str = "Sudo"; const CALL: &'static str = "sudo_as"; } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Permanently removes the sudo key."] + #[doc = ""] + #[doc = "**This cannot be un-done.**"] + pub struct RemoveKey; + impl ::subxt::ext::subxt_core::blocks::StaticExtrinsic for RemoveKey { + const PALLET: &'static str = "Sudo"; + const CALL: &'static str = "remove_key"; + } } pub struct TransactionApi; impl TransactionApi { - #[doc = "See [`Pallet::sudo`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] pub fn sudo( &self, call: types::sudo::Call, @@ -43788,13 +51485,18 @@ pub mod api { call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 56u8, 148u8, 134u8, 0u8, 111u8, 126u8, 24u8, 154u8, 223u8, 48u8, 246u8, - 206u8, 238u8, 120u8, 128u8, 149u8, 172u8, 101u8, 130u8, 156u8, 150u8, - 30u8, 8u8, 160u8, 241u8, 58u8, 220u8, 53u8, 75u8, 115u8, 77u8, 222u8, + 114u8, 115u8, 196u8, 108u8, 0u8, 144u8, 131u8, 144u8, 3u8, 89u8, 189u8, + 219u8, 127u8, 146u8, 157u8, 158u8, 75u8, 29u8, 19u8, 158u8, 102u8, + 251u8, 255u8, 113u8, 11u8, 153u8, 159u8, 224u8, 64u8, 138u8, 214u8, + 147u8, ], ) } - #[doc = "See [`Pallet::sudo_unchecked_weight`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] + #[doc = "This function does not check the weight of the call, and instead allows the"] + #[doc = "Sudo user to specify the weight of the call."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] pub fn sudo_unchecked_weight( &self, call: types::sudo_unchecked_weight::Call, @@ -43809,14 +51511,15 @@ pub mod api { weight, }, [ - 125u8, 67u8, 243u8, 4u8, 12u8, 40u8, 182u8, 28u8, 143u8, 31u8, 201u8, - 50u8, 55u8, 136u8, 117u8, 189u8, 112u8, 186u8, 22u8, 25u8, 127u8, - 223u8, 255u8, 50u8, 111u8, 207u8, 85u8, 125u8, 59u8, 179u8, 239u8, - 212u8, + 45u8, 253u8, 178u8, 137u8, 108u8, 121u8, 138u8, 135u8, 141u8, 80u8, + 144u8, 178u8, 159u8, 207u8, 199u8, 174u8, 104u8, 28u8, 211u8, 231u8, + 5u8, 162u8, 163u8, 134u8, 35u8, 166u8, 229u8, 138u8, 132u8, 60u8, + 237u8, 100u8, ], ) } - #[doc = "See [`Pallet::set_key`]."] + #[doc = "Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo"] + #[doc = "key."] pub fn set_key( &self, new: types::set_key::New, @@ -43833,7 +51536,10 @@ pub mod api { ], ) } - #[doc = "See [`Pallet::sudo_as`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Signed` origin from"] + #[doc = "a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] pub fn sudo_as( &self, who: types::sudo_as::Who, @@ -43848,10 +51554,28 @@ pub mod api { call: ::subxt::ext::subxt_core::alloc::boxed::Box::new(call), }, [ - 149u8, 84u8, 143u8, 109u8, 44u8, 175u8, 20u8, 56u8, 122u8, 248u8, - 185u8, 163u8, 218u8, 12u8, 170u8, 231u8, 118u8, 189u8, 252u8, 27u8, - 35u8, 172u8, 2u8, 108u8, 63u8, 210u8, 245u8, 96u8, 162u8, 100u8, 15u8, - 39u8, + 31u8, 174u8, 240u8, 35u8, 205u8, 91u8, 226u8, 123u8, 198u8, 58u8, 50u8, + 2u8, 199u8, 189u8, 107u8, 241u8, 110u8, 91u8, 70u8, 140u8, 195u8, + 242u8, 23u8, 62u8, 224u8, 24u8, 251u8, 226u8, 23u8, 151u8, 88u8, 111u8, + ], + ) + } + #[doc = "Permanently removes the sudo key."] + #[doc = ""] + #[doc = "**This cannot be un-done.**"] + pub fn remove_key( + &self, + ) -> ::subxt::ext::subxt_core::tx::payload::StaticPayload + { + ::subxt::ext::subxt_core::tx::payload::StaticPayload::new_static( + "Sudo", + "remove_key", + types::RemoveKey {}, + [ + 133u8, 253u8, 54u8, 175u8, 202u8, 239u8, 5u8, 198u8, 180u8, 138u8, + 25u8, 28u8, 109u8, 40u8, 30u8, 56u8, 126u8, 100u8, 52u8, 205u8, 250u8, + 191u8, 61u8, 195u8, 172u8, 142u8, 184u8, 239u8, 247u8, 10u8, 211u8, + 79u8, ], ) } @@ -43896,12 +51620,13 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "The sudo key has been updated."] pub struct KeyChanged { - pub old_sudoer: key_changed::OldSudoer, + pub old: key_changed::Old, + pub new: key_changed::New, } pub mod key_changed { use super::runtime_types; - pub type OldSudoer = - ::core::option::Option<::subxt::ext::subxt_core::utils::AccountId32>; + pub type Old = ::core::option::Option<::subxt::ext::subxt_core::utils::AccountId32>; + pub type New = ::subxt::ext::subxt_core::utils::AccountId32; } impl ::subxt::ext::subxt_core::events::StaticEvent for KeyChanged { const PALLET: &'static str = "Sudo"; @@ -43917,6 +51642,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + #[doc = "The key was permanently removed."] + pub struct KeyRemoved; + impl ::subxt::ext::subxt_core::events::StaticEvent for KeyRemoved { + const PALLET: &'static str = "Sudo"; + const EVENT: &'static str = "KeyRemoved"; + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] #[doc = "A [sudo_as](Pallet::sudo_as) call just took place."] pub struct SudoAsDone { pub sudo_result: sudo_as_done::SudoResult, @@ -44301,6 +52042,21 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] + pub struct BoundedVec29<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct BoundedVec3<_0>(pub ::subxt::ext::subxt_core::alloc::vec::Vec<_0>); #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -44715,7 +52471,7 @@ pub mod api { }, #[codec(index = 1)] Inline( - runtime_types::bounded_collections::bounded_vec::BoundedVec5< + runtime_types::bounded_collections::bounded_vec::BoundedVec2< ::core::primitive::u8, >, ), @@ -45024,25 +52780,30 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::remark`]."] + #[doc = "Make some on-chain remark."] + #[doc = ""] + #[doc = "Can be executed by every `origin`."] remark { remark: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::set_heap_pages`]."] + #[doc = "Set the number of pages in the WebAssembly environment's heap."] set_heap_pages { pages: ::core::primitive::u64 }, #[codec(index = 2)] - #[doc = "See [`Pallet::set_code`]."] + #[doc = "Set the new runtime code."] set_code { code: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 3)] - #[doc = "See [`Pallet::set_code_without_checks`]."] + #[doc = "Set the new runtime code without doing any checks of the given `code`."] + #[doc = ""] + #[doc = "Note that runtime upgrades will not run if this is called with a not-increasing spec"] + #[doc = "version!"] set_code_without_checks { code: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 4)] - #[doc = "See [`Pallet::set_storage`]."] + #[doc = "Set some items of storage."] set_storage { items: ::subxt::ext::subxt_core::alloc::vec::Vec<( ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, @@ -45050,23 +52811,59 @@ pub mod api { )>, }, #[codec(index = 5)] - #[doc = "See [`Pallet::kill_storage`]."] + #[doc = "Kill some items from storage."] kill_storage { keys: ::subxt::ext::subxt_core::alloc::vec::Vec< ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, >, }, #[codec(index = 6)] - #[doc = "See [`Pallet::kill_prefix`]."] + #[doc = "Kill all storage items with a key that starts with the given prefix."] + #[doc = ""] + #[doc = "**NOTE:** We rely on the Root origin to provide us the number of subkeys under"] + #[doc = "the prefix we are removing to accurately calculate the weight of this function."] kill_prefix { prefix: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, subkeys: ::core::primitive::u32, }, #[codec(index = 7)] - #[doc = "See [`Pallet::remark_with_event`]."] + #[doc = "Make some on-chain remark and emit event."] remark_with_event { remark: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, + #[codec(index = 9)] + #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] + #[doc = "later."] + #[doc = ""] + #[doc = "This call requires Root origin."] + authorize_upgrade { + code_hash: ::subxt::ext::subxt_core::utils::H256, + }, + #[codec(index = 10)] + #[doc = "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied"] + #[doc = "later."] + #[doc = ""] + #[doc = "WARNING: This authorizes an upgrade that will take place without any safety checks, for"] + #[doc = "example that the spec name remains the same and that the version number increases. Not"] + #[doc = "recommended for normal use. Use `authorize_upgrade` instead."] + #[doc = ""] + #[doc = "This call requires Root origin."] + authorize_upgrade_without_checks { + code_hash: ::subxt::ext::subxt_core::utils::H256, + }, + #[codec(index = 11)] + #[doc = "Provide the preimage (runtime binary) `code` for an upgrade that has been authorized."] + #[doc = ""] + #[doc = "If the authorization required a version check, this call will ensure the spec name"] + #[doc = "remains unchanged and that the spec version has increased."] + #[doc = ""] + #[doc = "Depending on the runtime's `OnSetCode` configuration, this function may directly apply"] + #[doc = "the new `code` in the same block or attempt to schedule the upgrade."] + #[doc = ""] + #[doc = "All origins are allowed."] + apply_authorized_upgrade { + code: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + }, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -45106,6 +52903,15 @@ pub mod api { #[codec(index = 5)] #[doc = "The origin filter prevent the call to be dispatched."] CallFiltered, + #[codec(index = 6)] + #[doc = "A multi-block migration is ongoing and prevents the current code from being replaced."] + MultiBlockMigrationsOngoing, + #[codec(index = 7)] + #[doc = "No upgrade authorized."] + NothingAuthorized, + #[codec(index = 8)] + #[doc = "The submitted code is not authorized."] + Unauthorized, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -45153,6 +52959,12 @@ pub mod api { sender: ::subxt::ext::subxt_core::utils::AccountId32, hash: ::subxt::ext::subxt_core::utils::H256, }, + #[codec(index = 6)] + #[doc = "An upgrade was authorized."] + UpgradeAuthorized { + code_hash: ::subxt::ext::subxt_core::utils::H256, + check_version: ::core::primitive::bool, + }, } } #[derive( @@ -45182,6 +52994,20 @@ pub mod api { # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub struct CodeUpgradeAuthorization { + pub code_hash: ::subxt::ext::subxt_core::utils::H256, + pub check_version: ::core::primitive::bool, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct EventRecord<_0, _1> { pub phase: runtime_types::frame_system::Phase, pub event: _0, @@ -45242,7 +53068,10 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::create`]."] + #[doc = "Initialize a conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] create { asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, @@ -45250,7 +53079,10 @@ pub mod api { rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, }, #[codec(index = 1)] - #[doc = "See [`Pallet::update`]."] + #[doc = "Update the conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] update { asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, @@ -45258,7 +53090,10 @@ pub mod api { rate: runtime_types::sp_arithmetic::fixed_point::FixedU128, }, #[codec(index = 2)] - #[doc = "See [`Pallet::remove`]."] + #[doc = "Remove an existing conversion rate to native balance for the given asset."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)"] remove { asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, @@ -45287,6 +53122,9 @@ pub mod api { #[codec(index = 1)] #[doc = "The given asset ID already has an assigned conversion rate and cannot be re-created."] AlreadyExists, + #[codec(index = 2)] + #[doc = "Overflow ocurred when calculating the inverse rate."] + Overflow, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -45346,7 +53184,10 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report authority equivocation/misbehavior. This method will verify"] + #[doc = "the equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence will"] + #[doc = "be reported."] report_equivocation { equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::sp_consensus_slots::EquivocationProof< @@ -45359,7 +53200,14 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 1)] - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report authority equivocation/misbehavior. This method will verify"] + #[doc = "the equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence will"] + #[doc = "be reported."] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] report_equivocation_unsigned { equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::sp_consensus_slots::EquivocationProof< @@ -45372,7 +53220,10 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 2)] - #[doc = "See [`Pallet::plan_config_change`]."] + #[doc = "Plan an epoch config change. The epoch config change is recorded and will be enacted on"] + #[doc = "the next call to `enact_epoch_change`. The config will be activated one epoch after."] + #[doc = "Multiple calls to this method will replace any existing planned config change that had"] + #[doc = "not been enacted yet."] plan_config_change { config: runtime_types::sp_consensus_babe::digests::NextConfigDescriptor, }, @@ -45429,7 +53280,13 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::transfer_allow_death`]."] + #[doc = "Transfer some liquid free balance to another account."] + #[doc = ""] + #[doc = "`transfer_allow_death` will set the `FreeBalance` of the sender and receiver."] + #[doc = "If the sender's account is below the existential deposit as a result"] + #[doc = "of the transfer, the account will be reaped."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `Signed` by the transactor."] transfer_allow_death { dest: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -45439,7 +53296,8 @@ pub mod api { value: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Exactly as `transfer_allow_death`, except the origin must be root and the source account"] + #[doc = "may be specified."] force_transfer { source: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -45453,7 +53311,12 @@ pub mod api { value: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "See [`Pallet::transfer_keep_alive`]."] + #[doc = "Same as the [`transfer_allow_death`] call, but with a check that the transfer will not"] + #[doc = "kill the origin account."] + #[doc = ""] + #[doc = "99% of the time you want [`transfer_allow_death`] instead."] + #[doc = ""] + #[doc = "[`transfer_allow_death`]: struct.Pallet.html#method.transfer"] transfer_keep_alive { dest: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -45463,7 +53326,21 @@ pub mod api { value: ::core::primitive::u128, }, #[codec(index = 4)] - #[doc = "See [`Pallet::transfer_all`]."] + #[doc = "Transfer the entire transferable balance from the caller account."] + #[doc = ""] + #[doc = "NOTE: This function only attempts to transfer _transferable_ balances. This means that"] + #[doc = "any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be"] + #[doc = "transferred by this function. To ensure that this function results in a killed account,"] + #[doc = "you might need to prepare the account by removing any reference counters, storage"] + #[doc = "deposits, etc..."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be Signed."] + #[doc = ""] + #[doc = "- `dest`: The recipient of the transfer."] + #[doc = "- `keep_alive`: A boolean to determine if the `transfer_all` operation should send all"] + #[doc = " of the funds the account has, causing the sender account to be killed (false), or"] + #[doc = " transfer everything except at least the existential deposit, which will guarantee to"] + #[doc = " keep the sender account alive (true)."] transfer_all { dest: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -45472,7 +53349,9 @@ pub mod api { keep_alive: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "See [`Pallet::force_unreserve`]."] + #[doc = "Unreserve some balance from a user by force."] + #[doc = ""] + #[doc = "Can only be called by ROOT."] force_unreserve { who: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -45481,14 +53360,23 @@ pub mod api { amount: ::core::primitive::u128, }, #[codec(index = 6)] - #[doc = "See [`Pallet::upgrade_accounts`]."] + #[doc = "Upgrade a specified account."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed`."] + #[doc = "- `who`: The account to be upgraded."] + #[doc = ""] + #[doc = "This will waive the transaction fee if at least all but 10% of the accounts needed to"] + #[doc = "be upgraded. (We let some not have to be upgraded just in order to allow for the"] + #[doc = "possibility of churn)."] upgrade_accounts { who: ::subxt::ext::subxt_core::alloc::vec::Vec< ::subxt::ext::subxt_core::utils::AccountId32, >, }, #[codec(index = 8)] - #[doc = "See [`Pallet::force_set_balance`]."] + #[doc = "Set the regular balance of a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call is `root`."] force_set_balance { who: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -45497,6 +53385,17 @@ pub mod api { #[codec(compact)] new_free: ::core::primitive::u128, }, + #[codec(index = 9)] + #[doc = "Adjust the total issuance in a saturating way."] + #[doc = ""] + #[doc = "Can only be called by root and always needs a positive `delta`."] + #[doc = ""] + #[doc = "# Example"] + force_adjust_total_issuance { + direction: runtime_types::pallet_balances::types::AdjustmentDirection, + #[codec(compact)] + delta: ::core::primitive::u128, + }, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -45539,11 +53438,17 @@ pub mod api { #[doc = "Number of named reserves exceed `MaxReserves`."] TooManyReserves, #[codec(index = 8)] - #[doc = "Number of holds exceed `MaxHolds`."] + #[doc = "Number of holds exceed `VariantCountOf`."] TooManyHolds, #[codec(index = 9)] #[doc = "Number of freezes exceed `MaxFreezes`."] TooManyFreezes, + #[codec(index = 10)] + #[doc = "The issuance cannot be modified since it is already deactivated."] + IssuanceDeactivated, + #[codec(index = 11)] + #[doc = "The delta cannot be zero."] + DeltaZero, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -45686,6 +53591,12 @@ pub mod api { who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, }, + #[codec(index = 21)] + #[doc = "The `TotalIssuance` was forcefully changed."] + TotalIssuanceForced { + old: ::core::primitive::u128, + new: ::core::primitive::u128, + }, } } pub mod types { @@ -45724,6 +53635,26 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] + pub enum AdjustmentDirection { + #[codec(index = 0)] + Increase, + #[codec(index = 1)] + Decrease, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub struct BalanceLock<_0> { pub id: [::core::primitive::u8; 8usize], pub amount: _0, @@ -45826,7 +53757,10 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] report_equivocation { equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::sp_consensus_beefy::EquivocationProof< @@ -45838,7 +53772,15 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 1)] - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + #[doc = ""] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] report_equivocation_unsigned { equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::sp_consensus_beefy::EquivocationProof< @@ -45850,7 +53792,10 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 2)] - #[doc = "See [`Pallet::set_new_genesis`]."] + #[doc = "Reset BEEFY consensus by setting a new BEEFY genesis at `delay_in_blocks` blocks in the"] + #[doc = "future."] + #[doc = ""] + #[doc = "Note: `delay_in_blocks` has to be at least 1."] set_new_genesis { delay_in_blocks: ::core::primitive::u32, }, @@ -45907,7 +53852,18 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::propose_bounty`]."] + #[doc = "Propose a new bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Payment: `TipReportDepositBase` will be reserved from the origin account, as well as"] + #[doc = "`DataDepositPerByte` for each byte in `reason`. It will be unreserved upon approval,"] + #[doc = "or slashed when rejected."] + #[doc = ""] + #[doc = "- `curator`: The curator account whom will manage this bounty."] + #[doc = "- `fee`: The curator fee."] + #[doc = "- `value`: The total payment amount of this bounty, curator fee included."] + #[doc = "- `description`: The description of this bounty."] propose_bounty { #[codec(compact)] value: ::core::primitive::u128, @@ -45915,13 +53871,24 @@ pub mod api { ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::approve_bounty`]."] + #[doc = "Approve a bounty proposal. At a later time, the bounty will be funded and become active"] + #[doc = "and the original deposit will be returned."] + #[doc = ""] + #[doc = "May only be called from `T::SpendOrigin`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] approve_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::propose_curator`]."] + #[doc = "Propose a curator to a funded bounty."] + #[doc = ""] + #[doc = "May only be called from `T::SpendOrigin`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] propose_curator { #[codec(compact)] bounty_id: ::core::primitive::u32, @@ -45933,19 +53900,50 @@ pub mod api { fee: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "See [`Pallet::unassign_curator`]."] + #[doc = "Unassign curator from a bounty."] + #[doc = ""] + #[doc = "This function can only be called by the `RejectOrigin` a signed origin."] + #[doc = ""] + #[doc = "If this function is called by the `RejectOrigin`, we assume that the curator is"] + #[doc = "malicious or inactive. As a result, we will slash the curator when possible."] + #[doc = ""] + #[doc = "If the origin is the curator, we take this as a sign they are unable to do their job and"] + #[doc = "they willingly give up. We could slash them, but for now we allow them to recover their"] + #[doc = "deposit and exit without issue. (We may want to change this if it is abused.)"] + #[doc = ""] + #[doc = "Finally, the origin can be anyone if and only if the curator is \"inactive\". This allows"] + #[doc = "anyone in the community to call out that a curator is not doing their due diligence, and"] + #[doc = "we should pick a new curator. In this case the curator should also be slashed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] unassign_curator { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 4)] - #[doc = "See [`Pallet::accept_curator`]."] + #[doc = "Accept the curator role for a bounty."] + #[doc = "A deposit will be reserved from curator and refund upon successful payout."] + #[doc = ""] + #[doc = "May only be called from the curator."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] accept_curator { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "See [`Pallet::award_bounty`]."] + #[doc = "Award bounty to a beneficiary account. The beneficiary will be able to claim the funds"] + #[doc = "after a delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to award."] + #[doc = "- `beneficiary`: The beneficiary account whom will receive the payout."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] award_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, @@ -45955,19 +53953,42 @@ pub mod api { >, }, #[codec(index = 6)] - #[doc = "See [`Pallet::claim_bounty`]."] + #[doc = "Claim the payout from an awarded bounty after payout delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the beneficiary of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to claim."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] claim_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 7)] - #[doc = "See [`Pallet::close_bounty`]."] + #[doc = "Cancel a proposed or active bounty. All the funds will be sent to treasury and"] + #[doc = "the curator deposit will be unreserved if possible."] + #[doc = ""] + #[doc = "Only `T::RejectOrigin` is able to cancel a bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to cancel."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] close_bounty { #[codec(compact)] bounty_id: ::core::primitive::u32, }, #[codec(index = 8)] - #[doc = "See [`Pallet::extend_bounty_expiry`]."] + #[doc = "Extend the expiry time of an active bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this bounty."] + #[doc = ""] + #[doc = "- `bounty_id`: Bounty ID to extend."] + #[doc = "- `remark`: additional information."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] extend_bounty_expiry { #[codec(compact)] bounty_id: ::core::primitive::u32, @@ -46139,6 +54160,34 @@ pub mod api { }, } } + pub mod pallet_broker { + use super::runtime_types; + pub mod coretime_interface { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum CoreAssignment { + #[codec(index = 0)] + Idle, + #[codec(index = 1)] + Pool, + #[codec(index = 2)] + Task(::core::primitive::u32), + } + } + } pub mod pallet_child_bounties { use super::runtime_types; pub mod pallet { @@ -46160,7 +54209,25 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::add_child_bounty`]."] + #[doc = "Add a new child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of parent"] + #[doc = "bounty and the parent bounty must be in \"active\" state."] + #[doc = ""] + #[doc = "Child-bounty gets added successfully & fund gets transferred from"] + #[doc = "parent bounty to child-bounty account, if parent bounty has enough"] + #[doc = "funds, else the call fails."] + #[doc = ""] + #[doc = "Upper bound to maximum number of active child bounties that can be"] + #[doc = "added are managed via runtime trait config"] + #[doc = "[`Config::MaxActiveChildBountyCount`]."] + #[doc = ""] + #[doc = "If the call is success, the status of child-bounty is updated to"] + #[doc = "\"Added\"."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty for which child-bounty is being added."] + #[doc = "- `value`: Value for executing the proposal."] + #[doc = "- `description`: Text description for the child-bounty."] add_child_bounty { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -46170,7 +54237,21 @@ pub mod api { ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::propose_curator`]."] + #[doc = "Propose curator for funded child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be curator of parent bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in \"Added\" state, for processing the call. And"] + #[doc = "state of child-bounty is moved to \"CuratorProposed\" on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "- `curator`: Address of child-bounty curator."] + #[doc = "- `fee`: payment fee to child-bounty curator for execution."] propose_curator { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -46184,7 +54265,25 @@ pub mod api { fee: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "See [`Pallet::accept_curator`]."] + #[doc = "Accept the curator role for the child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the curator of this"] + #[doc = "child-bounty."] + #[doc = ""] + #[doc = "A deposit will be reserved from the curator and refund upon"] + #[doc = "successful payout or cancellation."] + #[doc = ""] + #[doc = "Fee for curator is deducted from curator fee of parent bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in \"CuratorProposed\" state, for processing the"] + #[doc = "call. And state of child-bounty is moved to \"Active\" on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] accept_curator { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -46192,7 +54291,40 @@ pub mod api { child_bounty_id: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "See [`Pallet::unassign_curator`]."] + #[doc = "Unassign curator from a child-bounty."] + #[doc = ""] + #[doc = "The dispatch origin for this call can be either `RejectOrigin`, or"] + #[doc = "the curator of the parent bounty, or any signed origin."] + #[doc = ""] + #[doc = "For the origin other than T::RejectOrigin and the child-bounty"] + #[doc = "curator, parent bounty must be in active state, for this call to"] + #[doc = "work. We allow child-bounty curator and T::RejectOrigin to execute"] + #[doc = "this call irrespective of the parent bounty state."] + #[doc = ""] + #[doc = "If this function is called by the `RejectOrigin` or the"] + #[doc = "parent bounty curator, we assume that the child-bounty curator is"] + #[doc = "malicious or inactive. As a result, child-bounty curator deposit is"] + #[doc = "slashed."] + #[doc = ""] + #[doc = "If the origin is the child-bounty curator, we take this as a sign"] + #[doc = "that they are unable to do their job, and are willingly giving up."] + #[doc = "We could slash the deposit, but for now we allow them to unreserve"] + #[doc = "their deposit and exit without issue. (We may want to change this if"] + #[doc = "it is abused.)"] + #[doc = ""] + #[doc = "Finally, the origin can be anyone iff the child-bounty curator is"] + #[doc = "\"inactive\". Expiry update due of parent bounty is used to estimate"] + #[doc = "inactive state of child-bounty curator."] + #[doc = ""] + #[doc = "This allows anyone in the community to call out that a child-bounty"] + #[doc = "curator is not doing their due diligence, and we should pick a new"] + #[doc = "one. In this case the child-bounty curator deposit is slashed."] + #[doc = ""] + #[doc = "State of child-bounty is moved to Added state on successful call"] + #[doc = "completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] unassign_curator { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -46200,7 +54332,23 @@ pub mod api { child_bounty_id: ::core::primitive::u32, }, #[codec(index = 4)] - #[doc = "See [`Pallet::award_child_bounty`]."] + #[doc = "Award child-bounty to a beneficiary."] + #[doc = ""] + #[doc = "The beneficiary will be able to claim the funds after a delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be the parent curator or"] + #[doc = "curator of this child-bounty."] + #[doc = ""] + #[doc = "Parent bounty must be in active state, for this child-bounty call to"] + #[doc = "work."] + #[doc = ""] + #[doc = "Child-bounty must be in active state, for processing the call. And"] + #[doc = "state of child-bounty is moved to \"PendingPayout\" on successful call"] + #[doc = "completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] + #[doc = "- `beneficiary`: Beneficiary account."] award_child_bounty { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -46212,7 +54360,22 @@ pub mod api { >, }, #[codec(index = 5)] - #[doc = "See [`Pallet::claim_child_bounty`]."] + #[doc = "Claim the payout from an awarded child-bounty after payout delay."] + #[doc = ""] + #[doc = "The dispatch origin for this call may be any signed origin."] + #[doc = ""] + #[doc = "Call works independent of parent bounty state, No need for parent"] + #[doc = "bounty to be in active state."] + #[doc = ""] + #[doc = "The Beneficiary is paid out with agreed bounty value. Curator fee is"] + #[doc = "paid & curator deposit is unreserved."] + #[doc = ""] + #[doc = "Child-bounty must be in \"PendingPayout\" state, for processing the"] + #[doc = "call. And instance of child-bounty is removed from the state on"] + #[doc = "successful call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] claim_child_bounty { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -46220,7 +54383,28 @@ pub mod api { child_bounty_id: ::core::primitive::u32, }, #[codec(index = 6)] - #[doc = "See [`Pallet::close_child_bounty`]."] + #[doc = "Cancel a proposed or active child-bounty. Child-bounty account funds"] + #[doc = "are transferred to parent bounty account. The child-bounty curator"] + #[doc = "deposit may be unreserved if possible."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be either parent curator or"] + #[doc = "`T::RejectOrigin`."] + #[doc = ""] + #[doc = "If the state of child-bounty is `Active`, curator deposit is"] + #[doc = "unreserved."] + #[doc = ""] + #[doc = "If the state of child-bounty is `PendingPayout`, call fails &"] + #[doc = "returns `PendingPayout` error."] + #[doc = ""] + #[doc = "For the origin other than T::RejectOrigin, parent bounty must be in"] + #[doc = "active state, for this child-bounty call to work. For origin"] + #[doc = "T::RejectOrigin execution is forced."] + #[doc = ""] + #[doc = "Instance of child-bounty is removed from the state on successful"] + #[doc = "call completion."] + #[doc = ""] + #[doc = "- `parent_bounty_id`: Index of parent bounty."] + #[doc = "- `child_bounty_id`: Index of child bounty."] close_child_bounty { #[codec(compact)] parent_bounty_id: ::core::primitive::u32, @@ -46395,7 +54579,15 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::vote`]."] + #[doc = "Vote in a poll. If `vote.is_aye()`, the vote is to enact the proposal;"] + #[doc = "otherwise it is a vote to keep the status quo."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `poll_index`: The index of the poll to vote for."] + #[doc = "- `vote`: The vote configuration."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter has voted on."] vote { #[codec(compact)] poll_index: ::core::primitive::u32, @@ -46404,7 +54596,29 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::delegate`]."] + #[doc = "Delegate the voting power (with some given conviction) of the sending account for a"] + #[doc = "particular class of polls."] + #[doc = ""] + #[doc = "The balance delegated is locked for as long as it's delegated, and thereafter for the"] + #[doc = "time appropriate for the conviction's lock period."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_, and the signing account must either:"] + #[doc = " - be delegating already; or"] + #[doc = " - have no voting activity (if there is, then it will need to be removed through"] + #[doc = " `remove_vote`)."] + #[doc = ""] + #[doc = "- `to`: The account whose voting the `target` account's voting power will follow."] + #[doc = "- `class`: The class of polls to delegate. To delegate multiple classes, multiple calls"] + #[doc = " to this function are required."] + #[doc = "- `conviction`: The conviction that will be attached to the delegated votes. When the"] + #[doc = " account is undelegated, the funds will be locked for the corresponding period."] + #[doc = "- `balance`: The amount of the account's balance to be used in delegating. This must not"] + #[doc = " be more than the account's current balance."] + #[doc = ""] + #[doc = "Emits `Delegated`."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] + #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] delegate { class: ::core::primitive::u16, to: ::subxt::ext::subxt_core::utils::MultiAddress< @@ -46415,10 +54629,31 @@ pub mod api { balance: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "See [`Pallet::undelegate`]."] + #[doc = "Undelegate the voting power of the sending account for a particular class of polls."] + #[doc = ""] + #[doc = "Tokens may be unlocked following once an amount of time consistent with the lock period"] + #[doc = "of the conviction with which the delegation was issued has passed."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_ and the signing account must be"] + #[doc = "currently delegating."] + #[doc = ""] + #[doc = "- `class`: The class of polls to remove the delegation from."] + #[doc = ""] + #[doc = "Emits `Undelegated`."] + #[doc = ""] + #[doc = "Weight: `O(R)` where R is the number of polls the voter delegating to has"] + #[doc = " voted on. Weight is initially charged as if maximum votes, but is refunded later."] undelegate { class: ::core::primitive::u16 }, #[codec(index = 3)] - #[doc = "See [`Pallet::unlock`]."] + #[doc = "Remove the lock caused by prior voting/delegating which has expired within a particular"] + #[doc = "class."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `class`: The class of polls to unlock."] + #[doc = "- `target`: The account to remove the lock on."] + #[doc = ""] + #[doc = "Weight: `O(R)` with R number of vote of target."] unlock { class: ::core::primitive::u16, target: ::subxt::ext::subxt_core::utils::MultiAddress< @@ -46427,13 +54662,56 @@ pub mod api { >, }, #[codec(index = 4)] - #[doc = "See [`Pallet::remove_vote`]."] + #[doc = "Remove a vote for a poll."] + #[doc = ""] + #[doc = "If:"] + #[doc = "- the poll was cancelled, or"] + #[doc = "- the poll is ongoing, or"] + #[doc = "- the poll has ended such that"] + #[doc = " - the vote of the account was in opposition to the result; or"] + #[doc = " - there was no conviction to the account's vote; or"] + #[doc = " - the account made a split vote"] + #[doc = "...then the vote is removed cleanly and a following call to `unlock` may result in more"] + #[doc = "funds being available."] + #[doc = ""] + #[doc = "If, however, the poll has ended and:"] + #[doc = "- it finished corresponding to the vote of the account, and"] + #[doc = "- the account made a standard vote with conviction, and"] + #[doc = "- the lock period of the conviction is not over"] + #[doc = "...then the lock will be aggregated into the overall account's lock, which may involve"] + #[doc = "*overlocking* (where the two locks are combined into a single lock that is the maximum"] + #[doc = "of both the amount locked and the time is it locked for)."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_, and the signer must have a vote"] + #[doc = "registered for poll `index`."] + #[doc = ""] + #[doc = "- `index`: The index of poll of the vote to be removed."] + #[doc = "- `class`: Optional parameter, if given it indicates the class of the poll. For polls"] + #[doc = " which have finished or are cancelled, this must be `Some`."] + #[doc = ""] + #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] + #[doc = " Weight is calculated for the maximum number of vote."] remove_vote { class: ::core::option::Option<::core::primitive::u16>, index: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "See [`Pallet::remove_other_vote`]."] + #[doc = "Remove a vote for a poll."] + #[doc = ""] + #[doc = "If the `target` is equal to the signer, then this function is exactly equivalent to"] + #[doc = "`remove_vote`. If not equal to the signer, then the vote must have expired,"] + #[doc = "either because the poll was cancelled, because the voter lost the poll or"] + #[doc = "because the conviction period is over."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account of the vote to be removed; this account must have voted for poll"] + #[doc = " `index`."] + #[doc = "- `index`: The index of poll of the vote to be removed."] + #[doc = "- `class`: The class of the poll."] + #[doc = ""] + #[doc = "Weight: `O(R + log R)` where R is the number of polls that `target` has voted on."] + #[doc = " Weight is calculated for the maximum number of vote."] remove_other_vote { target: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -46476,7 +54754,7 @@ pub mod api { AlreadyDelegating, #[codec(index = 5)] #[doc = "The account currently has votes attached to it and the operation cannot succeed until"] - #[doc = "these are removed, either through `unvote` or `reap_vote`."] + #[doc = "these are removed through `remove_vote`."] AlreadyVoting, #[codec(index = 6)] #[doc = "Too high a balance was provided that the account cannot afford."] @@ -46715,7 +54993,10 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::report_equivocation`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] report_equivocation { equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::sp_consensus_grandpa::EquivocationProof< @@ -46726,7 +55007,15 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 1)] - #[doc = "See [`Pallet::report_equivocation_unsigned`]."] + #[doc = "Report voter equivocation/misbehavior. This method will verify the"] + #[doc = "equivocation proof and validate the given key ownership proof"] + #[doc = "against the extracted offender. If both are valid, the offence"] + #[doc = "will be reported."] + #[doc = ""] + #[doc = "This extrinsic must be called unsigned and it is expected that only"] + #[doc = "block authors will call it (validated in `ValidateUnsigned`), as such"] + #[doc = "if the block author is defined it will be defined as the equivocation"] + #[doc = "reporter."] report_equivocation_unsigned { equivocation_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::sp_consensus_grandpa::EquivocationProof< @@ -46737,7 +55026,18 @@ pub mod api { key_owner_proof: runtime_types::sp_session::MembershipProof, }, #[codec(index = 2)] - #[doc = "See [`Pallet::note_stalled`]."] + #[doc = "Note that the current authority set of the GRANDPA finality gadget has stalled."] + #[doc = ""] + #[doc = "This will trigger a forced authority set change at the beginning of the next session, to"] + #[doc = "be enacted `delay` blocks after that. The `delay` should be high enough to safely assume"] + #[doc = "that the block signalling the forced change will not be re-orged e.g. 1000 blocks."] + #[doc = "The block production rate (which may be slowed down because of finality lagging) should"] + #[doc = "be taken into account when choosing the `delay`. The GRANDPA voters based on the new"] + #[doc = "authority will start voting on top of `best_finalized_block_number` for new finalized"] + #[doc = "blocks. `best_finalized_block_number` should be the highest of the latest finalized"] + #[doc = "block of all validators of the new authority set."] + #[doc = ""] + #[doc = "Only callable by root."] note_stalled { delay: ::core::primitive::u32, best_finalized_block_number: ::core::primitive::u32, @@ -46858,6 +55158,37 @@ pub mod api { } pub mod pallet_identity { use super::runtime_types; + pub mod legacy { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct IdentityInfo { + pub additional: runtime_types::bounded_collections::bounded_vec::BoundedVec1<( + runtime_types::pallet_identity::types::Data, + runtime_types::pallet_identity::types::Data, + )>, + pub display: runtime_types::pallet_identity::types::Data, + pub legal: runtime_types::pallet_identity::types::Data, + pub web: runtime_types::pallet_identity::types::Data, + pub riot: runtime_types::pallet_identity::types::Data, + pub email: runtime_types::pallet_identity::types::Data, + pub pgp_fingerprint: ::core::option::Option<[::core::primitive::u8; 20usize]>, + pub image: runtime_types::pallet_identity::types::Data, + pub twitter: runtime_types::pallet_identity::types::Data, + } + } pub mod pallet { use super::runtime_types; #[derive( @@ -46877,7 +55208,13 @@ pub mod api { #[doc = "Identity pallet declaration."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::add_registrar`]."] + #[doc = "Add a registrar to the system."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be `T::RegistrarOrigin`."] + #[doc = ""] + #[doc = "- `account`: the account of the registrar."] + #[doc = ""] + #[doc = "Emits `RegistrarAdded` if successful."] add_registrar { account: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -46885,14 +55222,31 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::set_identity`]."] + #[doc = "Set an account's identity information and reserve the appropriate deposit."] + #[doc = ""] + #[doc = "If the account already has identity information, the deposit is taken as part payment"] + #[doc = "for the new deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `info`: The identity information."] + #[doc = ""] + #[doc = "Emits `IdentitySet` if successful."] set_identity { info: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::pallet_identity::types::IdentityInfo, + runtime_types::pallet_identity::legacy::IdentityInfo, >, }, #[codec(index = 2)] - #[doc = "See [`Pallet::set_subs`]."] + #[doc = "Set the sub-accounts of the sender."] + #[doc = ""] + #[doc = "Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned"] + #[doc = "and an amount `SubAccountDeposit` will be reserved for each item in `subs`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "identity."] + #[doc = ""] + #[doc = "- `subs`: The identity's (new) sub-accounts."] set_subs { subs: ::subxt::ext::subxt_core::alloc::vec::Vec<( ::subxt::ext::subxt_core::utils::AccountId32, @@ -46900,10 +55254,32 @@ pub mod api { )>, }, #[codec(index = 3)] - #[doc = "See [`Pallet::clear_identity`]."] + #[doc = "Clear an account's identity info and all sub-accounts and return all deposits."] + #[doc = ""] + #[doc = "Payment: All reserved balances on the account are returned."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "identity."] + #[doc = ""] + #[doc = "Emits `IdentityCleared` if successful."] clear_identity, #[codec(index = 4)] - #[doc = "See [`Pallet::request_judgement`]."] + #[doc = "Request a judgement from a registrar."] + #[doc = ""] + #[doc = "Payment: At most `max_fee` will be reserved for payment to the registrar if judgement"] + #[doc = "given."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] + #[doc = "registered identity."] + #[doc = ""] + #[doc = "- `reg_index`: The index of the registrar whose judgement is requested."] + #[doc = "- `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:"] + #[doc = ""] + #[doc = "```nocompile"] + #[doc = "Self::registrars().get(reg_index).unwrap().fee"] + #[doc = "```"] + #[doc = ""] + #[doc = "Emits `JudgementRequested` if successful."] request_judgement { #[codec(compact)] reg_index: ::core::primitive::u32, @@ -46911,10 +55287,25 @@ pub mod api { max_fee: ::core::primitive::u128, }, #[codec(index = 5)] - #[doc = "See [`Pallet::cancel_request`]."] + #[doc = "Cancel a previous request."] + #[doc = ""] + #[doc = "Payment: A previously reserved deposit is returned on success."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a"] + #[doc = "registered identity."] + #[doc = ""] + #[doc = "- `reg_index`: The index of the registrar whose judgement is no longer requested."] + #[doc = ""] + #[doc = "Emits `JudgementUnrequested` if successful."] cancel_request { reg_index: ::core::primitive::u32 }, #[codec(index = 6)] - #[doc = "See [`Pallet::set_fee`]."] + #[doc = "Set the fee required for a judgement to be requested from a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `fee`: the new fee."] set_fee { #[codec(compact)] index: ::core::primitive::u32, @@ -46922,7 +55313,13 @@ pub mod api { fee: ::core::primitive::u128, }, #[codec(index = 7)] - #[doc = "See [`Pallet::set_account_id`]."] + #[doc = "Change the account associated with a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `new`: the new account ID."] set_account_id { #[codec(compact)] index: ::core::primitive::u32, @@ -46932,16 +55329,34 @@ pub mod api { >, }, #[codec(index = 8)] - #[doc = "See [`Pallet::set_fields`]."] + #[doc = "Set the field information for a registrar."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `index`."] + #[doc = ""] + #[doc = "- `index`: the index of the registrar whose fee is to be set."] + #[doc = "- `fields`: the fields that the registrar concerns themselves with."] set_fields { #[codec(compact)] index: ::core::primitive::u32, - fields: runtime_types::pallet_identity::types::BitFlags< - runtime_types::pallet_identity::types::IdentityField, - >, + fields: ::core::primitive::u64, }, #[codec(index = 9)] - #[doc = "See [`Pallet::provide_judgement`]."] + #[doc = "Provide a judgement for an account's identity."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must be the account"] + #[doc = "of the registrar whose index is `reg_index`."] + #[doc = ""] + #[doc = "- `reg_index`: the index of the registrar whose judgement is being made."] + #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] + #[doc = " with a registered identity."] + #[doc = "- `judgement`: the judgement of the registrar of index `reg_index` about `target`."] + #[doc = "- `identity`: The hash of the [`IdentityInformationProvider`] for that the judgement is"] + #[doc = " provided."] + #[doc = ""] + #[doc = "Note: Judgements do not apply to a username."] + #[doc = ""] + #[doc = "Emits `JudgementGiven` if successful."] provide_judgement { #[codec(compact)] reg_index: ::core::primitive::u32, @@ -46955,7 +55370,18 @@ pub mod api { identity: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 10)] - #[doc = "See [`Pallet::kill_identity`]."] + #[doc = "Remove an account's identity and sub-account information and slash the deposits."] + #[doc = ""] + #[doc = "Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by"] + #[doc = "`Slash`. Verification request deposits are not returned; they should be cancelled"] + #[doc = "manually using `cancel_request`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] + #[doc = ""] + #[doc = "- `target`: the account whose identity the judgement is upon. This must be an account"] + #[doc = " with a registered identity."] + #[doc = ""] + #[doc = "Emits `IdentityKilled` if successful."] kill_identity { target: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -46963,7 +55389,13 @@ pub mod api { >, }, #[codec(index = 11)] - #[doc = "See [`Pallet::add_sub`]."] + #[doc = "Add the given account to the sender's subs."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] add_sub { sub: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -46972,7 +55404,10 @@ pub mod api { data: runtime_types::pallet_identity::types::Data, }, #[codec(index = 12)] - #[doc = "See [`Pallet::rename_sub`]."] + #[doc = "Alter the associated name of the given sub-account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] rename_sub { sub: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -46981,7 +55416,13 @@ pub mod api { data: runtime_types::pallet_identity::types::Data, }, #[codec(index = 13)] - #[doc = "See [`Pallet::remove_sub`]."] + #[doc = "Remove the given account from the sender's subs."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "sub identity of `sub`."] remove_sub { sub: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -46989,8 +55430,89 @@ pub mod api { >, }, #[codec(index = 14)] - #[doc = "See [`Pallet::quit_sub`]."] + #[doc = "Remove the sender as a sub-account."] + #[doc = ""] + #[doc = "Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated"] + #[doc = "to the sender (*not* the original depositor)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have a registered"] + #[doc = "super-identity."] + #[doc = ""] + #[doc = "NOTE: This should not normally be used, but is provided in the case that the non-"] + #[doc = "controller of an account is maliciously registered as a sub-account."] quit_sub, + #[codec(index = 15)] + #[doc = "Add an `AccountId` with permission to grant usernames with a given `suffix` appended."] + #[doc = ""] + #[doc = "The authority can grant up to `allocation` usernames. To top up their allocation, they"] + #[doc = "should just issue (or request via governance) a new `add_username_authority` call."] + add_username_authority { + authority: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, + suffix: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + allocation: ::core::primitive::u32, + }, + #[codec(index = 16)] + #[doc = "Remove `authority` from the username authorities."] + remove_username_authority { + authority: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, + }, + #[codec(index = 17)] + #[doc = "Set the username for `who`. Must be called by a username authority."] + #[doc = ""] + #[doc = "The authority must have an `allocation`. Users can either pre-sign their usernames or"] + #[doc = "accept them later."] + #[doc = ""] + #[doc = "Usernames must:"] + #[doc = " - Only contain lowercase ASCII characters or digits."] + #[doc = " - When combined with the suffix of the issuing authority be _less than_ the"] + #[doc = " `MaxUsernameLength`."] + set_username_for { + who: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, + username: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + signature: + ::core::option::Option, + }, + #[codec(index = 18)] + #[doc = "Accept a given username that an `authority` granted. The call must include the full"] + #[doc = "username, as in `username.suffix`."] + accept_username { + username: runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >, + }, + #[codec(index = 19)] + #[doc = "Remove an expired username approval. The username was approved by an authority but never"] + #[doc = "accepted by the user and must now be beyond its expiration. The call must include the"] + #[doc = "full username, as in `username.suffix`."] + remove_expired_approval { + username: runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >, + }, + #[codec(index = 20)] + #[doc = "Set a given username as the primary. The username should include the suffix."] + set_primary_username { + username: runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >, + }, + #[codec(index = 21)] + #[doc = "Remove a username that corresponds to an account with no identity. Exists when a user"] + #[doc = "gets a username but then calls `clear_identity`."] + remove_dangling_username { + username: runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >, + }, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -47042,26 +55564,50 @@ pub mod api { #[doc = "The target is invalid."] InvalidTarget, #[codec(index = 11)] - #[doc = "Too many additional fields."] - TooManyFields, - #[codec(index = 12)] #[doc = "Maximum amount of registrars reached. Cannot add any more."] TooManyRegistrars, - #[codec(index = 13)] + #[codec(index = 12)] #[doc = "Account ID is already named."] AlreadyClaimed, - #[codec(index = 14)] + #[codec(index = 13)] #[doc = "Sender is not a sub-account."] NotSub, - #[codec(index = 15)] + #[codec(index = 14)] #[doc = "Sub-account isn't owned by sender."] NotOwned, - #[codec(index = 16)] + #[codec(index = 15)] #[doc = "The provided judgement was for a different identity."] JudgementForDifferentIdentity, - #[codec(index = 17)] + #[codec(index = 16)] #[doc = "Error that occurs when there is an issue paying for judgement."] JudgementPaymentFailed, + #[codec(index = 17)] + #[doc = "The provided suffix is too long."] + InvalidSuffix, + #[codec(index = 18)] + #[doc = "The sender does not have permission to issue a username."] + NotUsernameAuthority, + #[codec(index = 19)] + #[doc = "The authority cannot allocate any more usernames."] + NoAllocation, + #[codec(index = 20)] + #[doc = "The signature on a username was not valid."] + InvalidSignature, + #[codec(index = 21)] + #[doc = "Setting this username requires a signature, but none was provided."] + RequiresSignature, + #[codec(index = 22)] + #[doc = "The username does not meet the requirements."] + InvalidUsername, + #[codec(index = 23)] + #[doc = "The username is already taken."] + UsernameTaken, + #[codec(index = 24)] + #[doc = "The requested username does not exist."] + NoUsername, + #[codec(index = 25)] + #[doc = "The username cannot be forcefully removed because it can still be accepted."] + NotExpired, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -47141,12 +55687,60 @@ pub mod api { main: ::subxt::ext::subxt_core::utils::AccountId32, deposit: ::core::primitive::u128, }, + #[codec(index = 10)] + #[doc = "A username authority was added."] + AuthorityAdded { + authority: ::subxt::ext::subxt_core::utils::AccountId32, + }, + #[codec(index = 11)] + #[doc = "A username authority was removed."] + AuthorityRemoved { + authority: ::subxt::ext::subxt_core::utils::AccountId32, + }, + #[codec(index = 12)] + #[doc = "A username was set for `who`."] + UsernameSet { + who: ::subxt::ext::subxt_core::utils::AccountId32, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >, + }, + #[codec(index = 13)] + #[doc = "A username was queued, but `who` must accept it prior to `expiration`."] + UsernameQueued { + who: ::subxt::ext::subxt_core::utils::AccountId32, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >, + expiration: ::core::primitive::u32, + }, + #[codec(index = 14)] + #[doc = "A queued username passed its expiration without being claimed and was removed."] + PreapprovalExpired { + whose: ::subxt::ext::subxt_core::utils::AccountId32, + }, + #[codec(index = 15)] + #[doc = "A username was set as a primary and can be looked up from `who`."] + PrimaryUsernameSet { + who: ::subxt::ext::subxt_core::utils::AccountId32, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >, + }, + #[codec(index = 16)] + #[doc = "A dangling username (as in, a username corresponding to an account that has removed its"] + #[doc = "identity) has been removed."] + DanglingUsernameRemoved { + who: ::subxt::ext::subxt_core::utils::AccountId32, + username: runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >, + }, } } pub mod types { use super::runtime_types; #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, @@ -47160,10 +55754,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct BitFlags<_0>( - pub ::core::primitive::u64, - #[codec(skip)] pub ::core::marker::PhantomData<_0>, - ); + pub struct AuthorityProperties<_0> { + pub suffix: _0, + pub allocation: ::core::primitive::u32, + } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, @@ -47270,66 +55864,6 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub enum IdentityField { - #[codec(index = 1)] - Display, - #[codec(index = 2)] - Legal, - #[codec(index = 4)] - Web, - #[codec(index = 8)] - Riot, - #[codec(index = 16)] - Email, - #[codec(index = 32)] - PgpFingerprint, - #[codec(index = 64)] - Image, - #[codec(index = 128)] - Twitter, - } - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - pub struct IdentityInfo { - pub additional: runtime_types::bounded_collections::bounded_vec::BoundedVec1<( - runtime_types::pallet_identity::types::Data, - runtime_types::pallet_identity::types::Data, - )>, - pub display: runtime_types::pallet_identity::types::Data, - pub legal: runtime_types::pallet_identity::types::Data, - pub web: runtime_types::pallet_identity::types::Data, - pub riot: runtime_types::pallet_identity::types::Data, - pub email: runtime_types::pallet_identity::types::Data, - pub pgp_fingerprint: ::core::option::Option<[::core::primitive::u8; 20usize]>, - pub image: runtime_types::pallet_identity::types::Data, - pub twitter: runtime_types::pallet_identity::types::Data, - } - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] pub enum Judgement<_0> { #[codec(index = 0)] Unknown, @@ -47360,12 +55894,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct RegistrarInfo<_0, _1> { + pub struct RegistrarInfo<_0, _1, _2> { pub account: _1, pub fee: _0, - pub fields: runtime_types::pallet_identity::types::BitFlags< - runtime_types::pallet_identity::types::IdentityField, - >, + pub fields: _2, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -47381,155 +55913,17 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct Registration<_0> { + pub struct Registration<_0, _2> { pub judgements: runtime_types::bounded_collections::bounded_vec::BoundedVec17<( ::core::primitive::u32, runtime_types::pallet_identity::types::Judgement<_0>, )>, pub deposit: _0, - pub info: runtime_types::pallet_identity::types::IdentityInfo, + pub info: _2, } } } - pub mod pallet_im_online { - use super::runtime_types; - pub mod pallet { - use super::runtime_types; - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] - pub enum Call { - #[codec(index = 0)] - #[doc = "See [`Pallet::heartbeat`]."] - heartbeat { - heartbeat: - runtime_types::pallet_im_online::Heartbeat<::core::primitive::u32>, - signature: runtime_types::pallet_im_online::sr25519::app_sr25519::Signature, - }, - } - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - #[doc = "The `Error` enum of this pallet."] - pub enum Error { - #[codec(index = 0)] - #[doc = "Non existent public key."] - InvalidKey, - #[codec(index = 1)] - #[doc = "Duplicated heartbeat."] - DuplicatedHeartbeat, - } - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - #[doc = "The `Event` enum of this pallet"] - pub enum Event { - #[codec(index = 0)] - #[doc = "A new heartbeat was received from `AuthorityId`."] - HeartbeatReceived { - authority_id: runtime_types::pallet_im_online::sr25519::app_sr25519::Public, - }, - #[codec(index = 1)] - #[doc = "At the end of the session, no offence was committed."] - AllGood, - #[codec(index = 2)] - #[doc = "At the end of the session, at least one validator was found to be offline."] - SomeOffline { - offline: ::subxt::ext::subxt_core::alloc::vec::Vec<( - ::subxt::ext::subxt_core::utils::AccountId32, - (), - )>, - }, - } - } - pub mod sr25519 { - use super::runtime_types; - pub mod app_sr25519 { - use super::runtime_types; - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - pub struct Public(pub runtime_types::sp_core::sr25519::Public); - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - pub struct Signature(pub runtime_types::sp_core::sr25519::Signature); - } - } - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] - #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] - pub struct Heartbeat<_0> { - pub block_number: _0, - pub session_index: ::core::primitive::u32, - pub authority_index: ::core::primitive::u32, - pub validators_len: ::core::primitive::u32, - } - } pub mod pallet_indices { use super::runtime_types; pub mod pallet { @@ -47551,10 +55945,32 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::claim`]."] + #[doc = "Assign an previously unassigned index."] + #[doc = ""] + #[doc = "Payment: `Deposit` is reserved from the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `index`: the index to be claimed. This must not be in use."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] claim { index: ::core::primitive::u32 }, #[codec(index = 1)] - #[doc = "See [`Pallet::transfer`]."] + #[doc = "Assign an index already owned by the sender to another account. The balance reservation"] + #[doc = "is effectively transferred to the new account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `index`: the index to be re-assigned. This must be owned by the sender."] + #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] transfer { new: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -47563,10 +55979,33 @@ pub mod api { index: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::free`]."] + #[doc = "Free up an index owned by the sender."] + #[doc = ""] + #[doc = "Payment: Any previous deposit placed for the index is unreserved in the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must own the index."] + #[doc = ""] + #[doc = "- `index`: the index to be freed. This must be owned by the sender."] + #[doc = ""] + #[doc = "Emits `IndexFreed` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] free { index: ::core::primitive::u32 }, #[codec(index = 3)] - #[doc = "See [`Pallet::force_transfer`]."] + #[doc = "Force an index to an account. This doesn't require a deposit. If the index is already"] + #[doc = "held, then any deposit is reimbursed to its current owner."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `index`: the index to be (re-)assigned."] + #[doc = "- `new`: the new owner of the index. This function is a no-op if it is equal to sender."] + #[doc = "- `freeze`: if set to `true`, will freeze the index so it cannot be transferred."] + #[doc = ""] + #[doc = "Emits `IndexAssigned` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] force_transfer { new: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -47576,7 +56015,18 @@ pub mod api { freeze: ::core::primitive::bool, }, #[codec(index = 4)] - #[doc = "See [`Pallet::freeze`]."] + #[doc = "Freeze an index so it will always point to the sender account. This consumes the"] + #[doc = "deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the signing account must have a"] + #[doc = "non-frozen account `index`."] + #[doc = ""] + #[doc = "- `index`: the index to be frozen in place."] + #[doc = ""] + #[doc = "Emits `IndexFrozen` if successful."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] freeze { index: ::core::primitive::u32 }, } #[derive( @@ -47665,7 +56115,7 @@ pub mod api { )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::reap_page`]."] reap_page { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::execute_overweight`]."] execute_overweight { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page : :: core :: primitive :: u32 , index : :: core :: primitive :: u32 , weight_limit : runtime_types :: sp_weights :: weight_v2 :: Weight , } , } + # [codec (index = 0)] # [doc = "Remove a page which has no more messages remaining to be processed or is stale."] reap_page { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "Execute an overweight message."] # [doc = ""] # [doc = "Temporary processing errors will be propagated whereas permanent errors are treated"] # [doc = "as success condition."] # [doc = ""] # [doc = "- `origin`: Must be `Signed`."] # [doc = "- `message_origin`: The origin from which the message to be executed arrived."] # [doc = "- `page`: The page in the queue in which the message to be executed is sitting."] # [doc = "- `index`: The index into the queue of the message to be executed."] # [doc = "- `weight_limit`: The maximum amount of weight allowed to be consumed in the execution"] # [doc = " of the message."] # [doc = ""] # [doc = "Benchmark complexity considerations: O(index + weight_limit)."] execute_overweight { message_origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page : :: core :: primitive :: u32 , index : :: core :: primitive :: u32 , weight_limit : runtime_types :: sp_weights :: weight_v2 :: Weight , } , } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, @@ -47712,6 +56162,9 @@ pub mod api { #[doc = ""] #[doc = "This can change at any time and may resolve in the future by re-trying."] QueuePaused, + #[codec(index = 8)] + #[doc = "Another call is in progress and needs to finish before this call can happen."] + RecursiveDisallowed, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -47729,7 +56182,7 @@ pub mod api { )] #[doc = "The `Event` enum of this pallet"] pub enum Event { - # [codec (index = 0)] # [doc = "Message discarded due to an error in the `MessageProcessor` (usually a format error)."] ProcessingFailed { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , error : runtime_types :: frame_support :: traits :: messages :: ProcessMessageError , } , # [codec (index = 1)] # [doc = "Message is processed."] Processed { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , weight_used : runtime_types :: sp_weights :: weight_v2 :: Weight , success : :: core :: primitive :: bool , } , # [codec (index = 2)] # [doc = "Message placed in overweight queue."] OverweightEnqueued { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , message_index : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "This page was reaped."] PageReaped { origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , index : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "Message discarded due to an error in the `MessageProcessor` (usually a format error)."] ProcessingFailed { id : :: subxt :: ext :: subxt_core :: utils :: H256 , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , error : runtime_types :: frame_support :: traits :: messages :: ProcessMessageError , } , # [codec (index = 1)] # [doc = "Message is processed."] Processed { id : :: subxt :: ext :: subxt_core :: utils :: H256 , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , weight_used : runtime_types :: sp_weights :: weight_v2 :: Weight , success : :: core :: primitive :: bool , } , # [codec (index = 2)] # [doc = "Message placed in overweight queue."] OverweightEnqueued { id : [:: core :: primitive :: u8 ; 32usize] , origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , page_index : :: core :: primitive :: u32 , message_index : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "This page was reaped."] PageReaped { origin : runtime_types :: polkadot_runtime_parachains :: inclusion :: AggregateMessageOrigin , index : :: core :: primitive :: u32 , } , } } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -47780,7 +56233,7 @@ pub mod api { pub first_index: _0, pub first: _0, pub last: _0, - pub heap: runtime_types::bounded_collections::bounded_vec::BoundedVec5< + pub heap: runtime_types::bounded_collections::bounded_vec::BoundedVec2< ::core::primitive::u8, >, } @@ -47806,7 +56259,18 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::as_multi_threshold_1`]."] + #[doc = "Immediately dispatch a multi-signature call using a single approval from the caller."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `other_signatories`: The accounts (other than the sender) who are part of the"] + #[doc = "multi-signature, but do not participate in the approval process."] + #[doc = "- `call`: The call to be executed."] + #[doc = ""] + #[doc = "Result is equivalent to the dispatched result."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "O(Z + C) where Z is the length of the call and C its execution weight."] as_multi_threshold_1 { other_signatories: ::subxt::ext::subxt_core::alloc::vec::Vec< ::subxt::ext::subxt_core::utils::AccountId32, @@ -47816,7 +56280,45 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::as_multi`]."] + #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] + #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] + #[doc = ""] + #[doc = "If there are enough, then dispatch the call."] + #[doc = ""] + #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] + #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] + #[doc = "is cancelled."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] + #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] + #[doc = "transaction index) of the first approval transaction."] + #[doc = "- `call`: The call to be executed."] + #[doc = ""] + #[doc = "NOTE: Unless this is the final approval, you will generally want to use"] + #[doc = "`approve_as_multi` instead, since it only requires a hash of the call."] + #[doc = ""] + #[doc = "Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise"] + #[doc = "on success, result is `Ok` and the result from the interior call, if it was executed,"] + #[doc = "may be found in the deposited `MultisigExecuted` event."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S + Z + Call)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] + #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] + #[doc = "- One event."] + #[doc = "- The weight of the `call`."] + #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] + #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] as_multi { threshold: ::core::primitive::u16, other_signatories: ::subxt::ext::subxt_core::alloc::vec::Vec< @@ -47831,7 +56333,36 @@ pub mod api { max_weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 2)] - #[doc = "See [`Pallet::approve_as_multi`]."] + #[doc = "Register approval for a dispatch to be made from a deterministic composite account if"] + #[doc = "approved by a total of `threshold - 1` of `other_signatories`."] + #[doc = ""] + #[doc = "Payment: `DepositBase` will be reserved if this is the first approval, plus"] + #[doc = "`threshold` times `DepositFactor`. It is returned once this dispatch happens or"] + #[doc = "is cancelled."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is"] + #[doc = "not the first approval, then it must be `Some`, with the timepoint (block number and"] + #[doc = "transaction index) of the first approval transaction."] + #[doc = "- `call_hash`: The hash of the call to be executed."] + #[doc = ""] + #[doc = "NOTE: If this is the final approval, you will want to use `as_multi` instead."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- Up to one binary search and insert (`O(logS + S)`)."] + #[doc = "- I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove."] + #[doc = "- One event."] + #[doc = "- Storage: inserts one item, value size bounded by `MaxSignatories`, with a deposit"] + #[doc = " taken for its lifetime of `DepositBase + threshold * DepositFactor`."] approve_as_multi { threshold: ::core::primitive::u16, other_signatories: ::subxt::ext::subxt_core::alloc::vec::Vec< @@ -47844,7 +56375,27 @@ pub mod api { max_weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 3)] - #[doc = "See [`Pallet::cancel_as_multi`]."] + #[doc = "Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously"] + #[doc = "for this operation will be unreserved on success."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `threshold`: The total number of approvals for this dispatch before it is executed."] + #[doc = "- `other_signatories`: The accounts (other than the sender) who can approve this"] + #[doc = "dispatch. May not be empty."] + #[doc = "- `timepoint`: The timepoint (block number and transaction index) of the first approval"] + #[doc = "transaction for this dispatch."] + #[doc = "- `call_hash`: The hash of the call to be executed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(S)`."] + #[doc = "- Up to one balance-reserve or unreserve operation."] + #[doc = "- One passthrough operation, one insert, both `O(S)` where `S` is the number of"] + #[doc = " signatories. `S` is capped by `MaxSignatories`, with weight being proportional."] + #[doc = "- One encode & hash, both of complexity `O(S)`."] + #[doc = "- One event."] + #[doc = "- I/O: 1 read `O(S)`, one remove."] + #[doc = "- Storage: removes one item."] cancel_as_multi { threshold: ::core::primitive::u16, other_signatories: ::subxt::ext::subxt_core::alloc::vec::Vec< @@ -48038,24 +56589,49 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::place_bid`]."] + #[doc = "Place a bid."] + #[doc = ""] + #[doc = "Origin must be Signed, and account must have at least `amount` in free balance."] + #[doc = ""] + #[doc = "- `amount`: The amount of the bid; these funds will be reserved, and if/when"] + #[doc = " consolidated, removed. Must be at least `MinBid`."] + #[doc = "- `duration`: The number of periods before which the newly consolidated bid may be"] + #[doc = " thawed. Must be greater than 1 and no more than `QueueCount`."] + #[doc = ""] + #[doc = "Complexities:"] + #[doc = "- `Queues[duration].len()` (just take max)."] place_bid { #[codec(compact)] amount: ::core::primitive::u128, duration: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "See [`Pallet::retract_bid`]."] + #[doc = "Retract a previously placed bid."] + #[doc = ""] + #[doc = "Origin must be Signed, and the account should have previously issued a still-active bid"] + #[doc = "of `amount` for `duration`."] + #[doc = ""] + #[doc = "- `amount`: The amount of the previous bid."] + #[doc = "- `duration`: The duration of the previous bid."] retract_bid { #[codec(compact)] amount: ::core::primitive::u128, duration: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::fund_deficit`]."] + #[doc = "Ensure we have sufficient funding for all potential payouts."] + #[doc = ""] + #[doc = "- `origin`: Must be accepted by `FundOrigin`."] fund_deficit, #[codec(index = 3)] - #[doc = "See [`Pallet::thaw_private`]."] + #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] + #[doc = "the account of the owner."] + #[doc = ""] + #[doc = "- `origin`: Must be Signed and the account must be the owner of the receipt `index` as"] + #[doc = " well as any fungible counterpart."] + #[doc = "- `index`: The index of the receipt."] + #[doc = "- `portion`: If `Some`, then only the given portion of the receipt should be thawed. If"] + #[doc = " `None`, then all of it should be."] thaw_private { #[codec(compact)] index: ::core::primitive::u32, @@ -48064,19 +56640,24 @@ pub mod api { >, }, #[codec(index = 4)] - #[doc = "See [`Pallet::thaw_communal`]."] + #[doc = "Reduce or remove an outstanding receipt, placing the according proportion of funds into"] + #[doc = "the account of the owner."] + #[doc = ""] + #[doc = "- `origin`: Must be Signed and the account must be the owner of the fungible counterpart"] + #[doc = " for receipt `index`."] + #[doc = "- `index`: The index of the receipt."] thaw_communal { #[codec(compact)] index: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "See [`Pallet::communify`]."] + #[doc = "Make a private receipt communal and create fungible counterparts for its owner."] communify { #[codec(compact)] index: ::core::primitive::u32, }, #[codec(index = 6)] - #[doc = "See [`Pallet::privatize`]."] + #[doc = "Make a communal receipt private and burn fungible counterparts from its owner."] privatize { #[codec(compact)] index: ::core::primitive::u32, @@ -48136,7 +56717,7 @@ pub mod api { #[doc = "The thaw throttle has been reached for this period."] Throttled, #[codec(index = 12)] - #[doc = "The operation would result in a receipt worth an insignficant value."] + #[doc = "The operation would result in a receipt worth an insignificant value."] MakesDust, #[codec(index = 13)] #[doc = "The receipt is already communal."] @@ -48204,7 +56785,7 @@ pub mod api { #[doc = "An automatic funding of the deficit was made."] Funded { deficit: ::core::primitive::u128 }, #[codec(index = 6)] - #[doc = "A receipt was transfered."] + #[doc = "A receipt was transferred."] Transferred { from: ::subxt::ext::subxt_core::utils::AccountId32, to: ::subxt::ext::subxt_core::utils::AccountId32, @@ -48302,6 +56883,67 @@ pub mod api { } } } + pub mod pallet_parameters { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "Set the value of a parameter."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be `AdminOrigin` for the given `key`. Values be"] + #[doc = "deleted by setting them to `None`."] + set_parameter { + key_value: runtime_types::rococo_runtime::RuntimeParameters, + }, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "A Parameter was set."] + #[doc = ""] + #[doc = "Is also emitted when the value was not changed."] + Updated { + key: runtime_types::rococo_runtime::RuntimeParametersKey, + old_value: ::core::option::Option< + runtime_types::rococo_runtime::RuntimeParametersValue, + >, + new_value: ::core::option::Option< + runtime_types::rococo_runtime::RuntimeParametersValue, + >, + }, + } + } + } pub mod pallet_preimage { use super::runtime_types; pub mod pallet { @@ -48323,27 +56965,42 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::note_preimage`]."] + #[doc = "Register a preimage on-chain."] + #[doc = ""] + #[doc = "If the preimage was previously requested, no fees or deposits are taken for providing"] + #[doc = "the preimage. Otherwise, a deposit is taken proportional to the size of the preimage."] note_preimage { bytes: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::unnote_preimage`]."] + #[doc = "Clear an unrequested preimage from the runtime storage."] + #[doc = ""] + #[doc = "If `len` is provided, then it will be a much cheaper operation."] + #[doc = ""] + #[doc = "- `hash`: The hash of the preimage to be removed from the store."] + #[doc = "- `len`: The length of the preimage of `hash`."] unnote_preimage { hash: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 2)] - #[doc = "See [`Pallet::request_preimage`]."] + #[doc = "Request a preimage be uploaded to the chain without paying any fees or deposits."] + #[doc = ""] + #[doc = "If the preimage requests has already been provided on-chain, we unreserve any deposit"] + #[doc = "a user may have paid, and take the control of the preimage out of their hands."] request_preimage { hash: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 3)] - #[doc = "See [`Pallet::unrequest_preimage`]."] + #[doc = "Clear a previously made request for a preimage."] + #[doc = ""] + #[doc = "NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`."] unrequest_preimage { hash: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 4)] - #[doc = "See [`Pallet::ensure_updated`]."] + #[doc = "Ensure that the a bulk of pre-images is upgraded."] + #[doc = ""] + #[doc = "The caller pays no fee if at least 90% of pre-images were successfully updated."] ensure_updated { hashes: ::subxt::ext::subxt_core::alloc::vec::Vec< ::subxt::ext::subxt_core::utils::H256, @@ -48510,7 +57167,15 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::proxy`]."] + #[doc = "Dispatch the given `call` from an account that the sender is authorised for through"] + #[doc = "`add_proxy`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] + #[doc = "- `call`: The call to be made by the `real` account."] proxy { real: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -48523,7 +57188,15 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::add_proxy`]."] + #[doc = "Register a proxy account for the sender that is able to make calls on its behalf."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `proxy`: The account that the `caller` would like to make a proxy."] + #[doc = "- `proxy_type`: The permissions allowed for this proxy account."] + #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] + #[doc = "zero."] add_proxy { delegate: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -48533,7 +57206,13 @@ pub mod api { delay: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::remove_proxy`]."] + #[doc = "Unregister a proxy account for the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `proxy`: The account that the `caller` would like to remove as a proxy."] + #[doc = "- `proxy_type`: The permissions currently enabled for the removed proxy account."] remove_proxy { delegate: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -48543,17 +57222,54 @@ pub mod api { delay: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "See [`Pallet::remove_proxies`]."] + #[doc = "Unregister all proxy accounts for the sender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "WARNING: This may be called on accounts created by `pure`, however if done, then"] + #[doc = "the unreserved fees will be inaccessible. **All access to this account will be lost.**"] remove_proxies, #[codec(index = 4)] - #[doc = "See [`Pallet::create_pure`]."] + #[doc = "Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and"] + #[doc = "initialize it with a proxy of `proxy_type` for `origin` sender."] + #[doc = ""] + #[doc = "Requires a `Signed` origin."] + #[doc = ""] + #[doc = "- `proxy_type`: The type of the proxy that the sender will be registered as over the"] + #[doc = "new account. This will almost always be the most permissive `ProxyType` possible to"] + #[doc = "allow for maximum flexibility."] + #[doc = "- `index`: A disambiguation index, in case this is called multiple times in the same"] + #[doc = "transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just"] + #[doc = "want to use `0`."] + #[doc = "- `delay`: The announcement period required of the initial proxy. Will generally be"] + #[doc = "zero."] + #[doc = ""] + #[doc = "Fails with `Duplicate` if this has already been called in this transaction, from the"] + #[doc = "same sender, with the same parameters."] + #[doc = ""] + #[doc = "Fails if there are insufficient funds to pay for deposit."] create_pure { proxy_type: runtime_types::rococo_runtime::ProxyType, delay: ::core::primitive::u32, index: ::core::primitive::u16, }, #[codec(index = 5)] - #[doc = "See [`Pallet::kill_pure`]."] + #[doc = "Removes a previously spawned pure proxy."] + #[doc = ""] + #[doc = "WARNING: **All access to this account will be lost.** Any funds held in it will be"] + #[doc = "inaccessible."] + #[doc = ""] + #[doc = "Requires a `Signed` origin, and the sender account must have been created by a call to"] + #[doc = "`pure` with corresponding parameters."] + #[doc = ""] + #[doc = "- `spawner`: The account that originally called `pure` to create this account."] + #[doc = "- `index`: The disambiguation index originally passed to `pure`. Probably `0`."] + #[doc = "- `proxy_type`: The proxy type originally passed to `pure`."] + #[doc = "- `height`: The height of the chain when the call to `pure` was processed."] + #[doc = "- `ext_index`: The extrinsic index in which the call to `pure` was processed."] + #[doc = ""] + #[doc = "Fails with `NoPermission` in case the caller is not a previously created pure"] + #[doc = "account whose `pure` call has corresponding parameters."] kill_pure { spawner: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -48567,7 +57283,21 @@ pub mod api { ext_index: ::core::primitive::u32, }, #[codec(index = 6)] - #[doc = "See [`Pallet::announce`]."] + #[doc = "Publish the hash of a proxy-call that will be made in the future."] + #[doc = ""] + #[doc = "This must be called some number of blocks before the corresponding `proxy` is attempted"] + #[doc = "if the delay associated with the proxy relationship is greater than zero."] + #[doc = ""] + #[doc = "No more than `MaxPending` announcements may be made at any one time."] + #[doc = ""] + #[doc = "This will take a deposit of `AnnouncementDepositFactor` as well as"] + #[doc = "`AnnouncementDepositBase` if there are no other pending announcements."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a proxy of `real`."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] announce { real: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -48576,7 +57306,16 @@ pub mod api { call_hash: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 7)] - #[doc = "See [`Pallet::remove_announcement`]."] + #[doc = "Remove a given announcement."] + #[doc = ""] + #[doc = "May be called by a proxy account to remove a call they previously announced and return"] + #[doc = "the deposit."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `call_hash`: The hash of the call to be made by the `real` account."] remove_announcement { real: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -48585,7 +57324,16 @@ pub mod api { call_hash: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 8)] - #[doc = "See [`Pallet::reject_announcement`]."] + #[doc = "Remove the given announcement of a delegate."] + #[doc = ""] + #[doc = "May be called by a target (proxied) account to remove a call that one of their delegates"] + #[doc = "(`delegate`) has announced they want to execute. The deposit is returned."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `delegate`: The account that previously announced the call."] + #[doc = "- `call_hash`: The hash of the call to be made."] reject_announcement { delegate: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -48594,7 +57342,17 @@ pub mod api { call_hash: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 9)] - #[doc = "See [`Pallet::proxy_announced`]."] + #[doc = "Dispatch the given `call` from an account that the sender is authorized for through"] + #[doc = "`add_proxy`."] + #[doc = ""] + #[doc = "Removes any corresponding announcement(s)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `real`: The account that the proxy will make a call on behalf of."] + #[doc = "- `force_proxy_type`: Specify the exact proxy type to be used and checked for this call."] + #[doc = "- `call`: The call to be made by the `real` account."] proxy_announced { delegate: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -48760,7 +57518,12 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::add_member`]."] + #[doc = "Introduce a new member."] + #[doc = ""] + #[doc = "- `origin`: Must be the `AddOrigin`."] + #[doc = "- `who`: Account of non-member which will become a member."] + #[doc = ""] + #[doc = "Weight: `O(1)`"] add_member { who: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -48768,7 +57531,12 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::promote_member`]."] + #[doc = "Increment the rank of an existing member by one."] + #[doc = ""] + #[doc = "- `origin`: Must be the `PromoteOrigin`."] + #[doc = "- `who`: Account of existing member."] + #[doc = ""] + #[doc = "Weight: `O(1)`"] promote_member { who: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -48776,7 +57544,13 @@ pub mod api { >, }, #[codec(index = 2)] - #[doc = "See [`Pallet::demote_member`]."] + #[doc = "Decrement the rank of an existing member by one. If the member is already at rank zero,"] + #[doc = "then they are removed entirely."] + #[doc = ""] + #[doc = "- `origin`: Must be the `DemoteOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero."] + #[doc = ""] + #[doc = "Weight: `O(1)`, less if the member's index is highest in its rank."] demote_member { who: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -48784,7 +57558,13 @@ pub mod api { >, }, #[codec(index = 3)] - #[doc = "See [`Pallet::remove_member`]."] + #[doc = "Remove the member entirely."] + #[doc = ""] + #[doc = "- `origin`: Must be the `RemoveOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero."] + #[doc = "- `min_rank`: The rank of the member or greater."] + #[doc = ""] + #[doc = "Weight: `O(min_rank)`."] remove_member { who: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -48793,17 +57573,52 @@ pub mod api { min_rank: ::core::primitive::u16, }, #[codec(index = 4)] - #[doc = "See [`Pallet::vote`]."] + #[doc = "Add an aye or nay vote for the sender to the given proposal."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed` by a member account."] + #[doc = "- `poll`: Index of a poll which is ongoing."] + #[doc = "- `aye`: `true` if the vote is to approve the proposal, `false` otherwise."] + #[doc = ""] + #[doc = "Transaction fees are be waived if the member is voting on any particular proposal"] + #[doc = "for the first time and the call is successful. Subsequent vote changes will charge a"] + #[doc = "fee."] + #[doc = ""] + #[doc = "Weight: `O(1)`, less if there was no previous vote on the poll by the member."] vote { poll: ::core::primitive::u32, aye: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "See [`Pallet::cleanup_poll`]."] + #[doc = "Remove votes from the given poll. It must have ended."] + #[doc = ""] + #[doc = "- `origin`: Must be `Signed` by any account."] + #[doc = "- `poll_index`: Index of a poll which is completed and for which votes continue to"] + #[doc = " exist."] + #[doc = "- `max`: Maximum number of vote items from remove in this call."] + #[doc = ""] + #[doc = "Transaction fees are waived if the operation is successful."] + #[doc = ""] + #[doc = "Weight `O(max)` (less if there are fewer items to remove than `max`)."] cleanup_poll { poll_index: ::core::primitive::u32, max: ::core::primitive::u32, }, + #[codec(index = 6)] + #[doc = "Exchanges a member with a new account and the same existing rank."] + #[doc = ""] + #[doc = "- `origin`: Must be the `ExchangeOrigin`."] + #[doc = "- `who`: Account of existing member of rank greater than zero to be exchanged."] + #[doc = "- `new_who`: New Account of existing member of rank greater than zero to exchanged to."] + exchange_member { + who: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, + new_who: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, + }, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -48848,6 +57663,9 @@ pub mod api { #[codec(index = 8)] #[doc = "The origin is not sufficiently privileged to do the operation."] NoPermission, + #[codec(index = 9)] + #[doc = "The new member to exchange is the same as the old member"] + SameMember, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -48891,6 +57709,12 @@ pub mod api { vote: runtime_types::pallet_ranked_collective::VoteRecord, tally: runtime_types::pallet_ranked_collective::Tally, }, + #[codec(index = 4)] + #[doc = "The member `who` had their `AccountId` changed to `new_who`."] + MemberExchanged { + who: ::subxt::ext::subxt_core::utils::AccountId32, + new_who: ::subxt::ext::subxt_core::utils::AccountId32, + }, } } #[derive( @@ -48960,7 +57784,14 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::as_recovered`]."] + #[doc = "Send a call through a recovered account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] + #[doc = "be able to make calls on behalf of the recovered account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The recovered account you want to make a call on-behalf-of."] + #[doc = "- `call`: The call you want to make with the recovered account."] as_recovered { account: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -48971,7 +57802,14 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::set_recovered`]."] + #[doc = "Allow ROOT to bypass the recovery process and set an a rescuer account"] + #[doc = "for a lost account directly."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _ROOT_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `lost`: The \"lost account\" to be recovered."] + #[doc = "- `rescuer`: The \"rescuer account\" which can call as the lost account."] set_recovered { lost: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -48983,7 +57821,22 @@ pub mod api { >, }, #[codec(index = 2)] - #[doc = "See [`Pallet::create_recovery`]."] + #[doc = "Create a recovery configuration for your account. This makes your account recoverable."] + #[doc = ""] + #[doc = "Payment: `ConfigDepositBase` + `FriendDepositFactor` * #_of_friends balance"] + #[doc = "will be reserved for storing the recovery configuration. This deposit is returned"] + #[doc = "in full when the user calls `remove_recovery`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `friends`: A list of friends you trust to vouch for recovery attempts. Should be"] + #[doc = " ordered and contain no duplicate values."] + #[doc = "- `threshold`: The number of friends that must vouch for a recovery attempt before the"] + #[doc = " account can be recovered. Should be less than or equal to the length of the list of"] + #[doc = " friends."] + #[doc = "- `delay_period`: The number of blocks after a recovery attempt is initialized that"] + #[doc = " needs to pass before the account can be recovered."] create_recovery { friends: ::subxt::ext::subxt_core::alloc::vec::Vec< ::subxt::ext::subxt_core::utils::AccountId32, @@ -48992,7 +57845,17 @@ pub mod api { delay_period: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "See [`Pallet::initiate_recovery`]."] + #[doc = "Initiate the process for recovering a recoverable account."] + #[doc = ""] + #[doc = "Payment: `RecoveryDeposit` balance will be reserved for initiating the"] + #[doc = "recovery process. This deposit will always be repatriated to the account"] + #[doc = "trying to be recovered. See `close_recovery`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The lost account that you want to recover. This account needs to be"] + #[doc = " recoverable (i.e. have a recovery configuration)."] initiate_recovery { account: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -49000,7 +57863,18 @@ pub mod api { >, }, #[codec(index = 4)] - #[doc = "See [`Pallet::vouch_recovery`]."] + #[doc = "Allow a \"friend\" of a recoverable account to vouch for an active recovery"] + #[doc = "process for that account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"friend\""] + #[doc = "for the recoverable account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `lost`: The lost account that you want to recover."] + #[doc = "- `rescuer`: The account trying to rescue the lost account that you want to vouch for."] + #[doc = ""] + #[doc = "The combination of these two parameters must point to an active recovery"] + #[doc = "process."] vouch_recovery { lost: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -49012,7 +57886,15 @@ pub mod api { >, }, #[codec(index = 5)] - #[doc = "See [`Pallet::claim_recovery`]."] + #[doc = "Allow a successful rescuer to claim their recovered account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a \"rescuer\""] + #[doc = "who has successfully completed the account recovery process: collected"] + #[doc = "`threshold` or more vouches, waited `delay_period` blocks since initiation."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The lost account that you want to claim has been successfully recovered by"] + #[doc = " you."] claim_recovery { account: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -49020,7 +57902,17 @@ pub mod api { >, }, #[codec(index = 6)] - #[doc = "See [`Pallet::close_recovery`]."] + #[doc = "As the controller of a recoverable account, close an active recovery"] + #[doc = "process for your account."] + #[doc = ""] + #[doc = "Payment: By calling this function, the recoverable account will receive"] + #[doc = "the recovery deposit `RecoveryDeposit` placed by the rescuer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] + #[doc = "recoverable account with an active recovery process for it."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `rescuer`: The account trying to rescue this recoverable account."] close_recovery { rescuer: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -49028,10 +57920,26 @@ pub mod api { >, }, #[codec(index = 7)] - #[doc = "See [`Pallet::remove_recovery`]."] + #[doc = "Remove the recovery process for your account. Recovered accounts are still accessible."] + #[doc = ""] + #[doc = "NOTE: The user must make sure to call `close_recovery` on all active"] + #[doc = "recovery attempts before calling this function else it will fail."] + #[doc = ""] + #[doc = "Payment: By calling this function the recoverable account will unreserve"] + #[doc = "their recovery configuration deposit."] + #[doc = "(`ConfigDepositBase` + `FriendDepositFactor` * #_of_friends)"] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and must be a"] + #[doc = "recoverable account (i.e. has a recovery configuration)."] remove_recovery, #[codec(index = 8)] - #[doc = "See [`Pallet::cancel_recovered`]."] + #[doc = "Cancel the ability to use `as_recovered` for `account`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and registered to"] + #[doc = "be able to make calls on behalf of the recovered account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `account`: The recovered account you are able to call on-behalf-of."] cancel_recovered { account: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -49210,7 +58118,15 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::submit`]."] + #[doc = "Propose a referendum on a privileged action."] + #[doc = ""] + #[doc = "- `origin`: must be `SubmitOrigin` and the account must have `SubmissionDeposit` funds"] + #[doc = " available."] + #[doc = "- `proposal_origin`: The origin from which the proposal should be executed."] + #[doc = "- `proposal`: The proposal."] + #[doc = "- `enactment_moment`: The moment that the proposal should be enacted."] + #[doc = ""] + #[doc = "Emits `Submitted`."] submit { proposal_origin: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::rococo_runtime::OriginCaller, @@ -49225,28 +58141,74 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::place_decision_deposit`]."] + #[doc = "Post the Decision Deposit for a referendum."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` and the account must have funds available for the"] + #[doc = " referendum's track's Decision Deposit."] + #[doc = "- `index`: The index of the submitted referendum whose Decision Deposit is yet to be"] + #[doc = " posted."] + #[doc = ""] + #[doc = "Emits `DecisionDepositPlaced`."] place_decision_deposit { index: ::core::primitive::u32 }, #[codec(index = 2)] - #[doc = "See [`Pallet::refund_decision_deposit`]."] + #[doc = "Refund the Decision Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Decision Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `DecisionDepositRefunded`."] refund_decision_deposit { index: ::core::primitive::u32 }, #[codec(index = 3)] - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an ongoing referendum."] + #[doc = ""] + #[doc = "- `origin`: must be the `CancelOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Cancelled`."] cancel { index: ::core::primitive::u32 }, #[codec(index = 4)] - #[doc = "See [`Pallet::kill`]."] + #[doc = "Cancel an ongoing referendum and slash the deposits."] + #[doc = ""] + #[doc = "- `origin`: must be the `KillOrigin`."] + #[doc = "- `index`: The index of the referendum to be cancelled."] + #[doc = ""] + #[doc = "Emits `Killed` and `DepositSlashed`."] kill { index: ::core::primitive::u32 }, #[codec(index = 5)] - #[doc = "See [`Pallet::nudge_referendum`]."] + #[doc = "Advance a referendum onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `index`: the referendum to be advanced."] nudge_referendum { index: ::core::primitive::u32 }, #[codec(index = 6)] - #[doc = "See [`Pallet::one_fewer_deciding`]."] + #[doc = "Advance a track onto its next logical state. Only used internally."] + #[doc = ""] + #[doc = "- `origin`: must be `Root`."] + #[doc = "- `track`: the track to be advanced."] + #[doc = ""] + #[doc = "Action item for when there is now one fewer referendum in the deciding phase and the"] + #[doc = "`DecidingCount` is not yet updated. This means that we should either:"] + #[doc = "- begin deciding another referendum (and leave `DecidingCount` alone); or"] + #[doc = "- decrement `DecidingCount`."] one_fewer_deciding { track: ::core::primitive::u16 }, #[codec(index = 7)] - #[doc = "See [`Pallet::refund_submission_deposit`]."] + #[doc = "Refund the Submission Deposit for a closed referendum back to the depositor."] + #[doc = ""] + #[doc = "- `origin`: must be `Signed` or `Root`."] + #[doc = "- `index`: The index of a closed referendum whose Submission Deposit has not yet been"] + #[doc = " refunded."] + #[doc = ""] + #[doc = "Emits `SubmissionDepositRefunded`."] refund_submission_deposit { index: ::core::primitive::u32 }, #[codec(index = 8)] - #[doc = "See [`Pallet::set_metadata`]."] + #[doc = "Set or clear metadata of a referendum."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: Must be `Signed` by a creator of a referendum or by anyone to clear a"] + #[doc = " metadata of a finished referendum."] + #[doc = "- `index`: The index of a referendum to set or clear metadata for."] + #[doc = "- `maybe_hash`: The hash of an on-chain stored preimage. `None` to clear a metadata."] set_metadata { index: ::core::primitive::u32, maybe_hash: ::core::option::Option<::subxt::ext::subxt_core::utils::H256>, @@ -49307,6 +58269,9 @@ pub mod api { #[codec(index = 12)] #[doc = "The preimage does not exist."] PreimageNotExist, + #[codec(index = 13)] + #[doc = "The preimage is stored with a different length than the one provided."] + PreimageStoredWithDifferentLength, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -49349,7 +58314,7 @@ pub mod api { amount: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "A deposit has been slashaed."] + #[doc = "A deposit has been slashed."] DepositSlashed { who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, @@ -49475,7 +58440,7 @@ pub mod api { amount: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "A deposit has been slashaed."] + #[doc = "A deposit has been slashed."] DepositSlashed { who: ::subxt::ext::subxt_core::utils::AccountId32, amount: ::core::primitive::u128, @@ -49822,6 +58787,56 @@ pub mod api { } } } + pub mod pallet_root_testing { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "A dispatch that will fill the block weight up to the given ratio."] + fill_block { + ratio: runtime_types::sp_arithmetic::per_things::Perbill, + }, + #[codec(index = 1)] + trigger_defensive, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "Event dispatched when the trigger_defensive extrinsic is called."] + DefensiveTestCall, + } + } + } pub mod pallet_scheduler { use super::runtime_types; pub mod pallet { @@ -49843,7 +58858,7 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::schedule`]."] + #[doc = "Anonymously schedule a task."] schedule { when: ::core::primitive::u32, maybe_periodic: ::core::option::Option<( @@ -49856,13 +58871,13 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::cancel`]."] + #[doc = "Cancel an anonymously scheduled task."] cancel { when: ::core::primitive::u32, index: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::schedule_named`]."] + #[doc = "Schedule a named task."] schedule_named { id: [::core::primitive::u8; 32usize], when: ::core::primitive::u32, @@ -49876,12 +58891,12 @@ pub mod api { >, }, #[codec(index = 3)] - #[doc = "See [`Pallet::cancel_named`]."] + #[doc = "Cancel a named scheduled task."] cancel_named { id: [::core::primitive::u8; 32usize], }, #[codec(index = 4)] - #[doc = "See [`Pallet::schedule_after`]."] + #[doc = "Anonymously schedule a task after a delay."] schedule_after { after: ::core::primitive::u32, maybe_periodic: ::core::option::Option<( @@ -49894,7 +58909,7 @@ pub mod api { >, }, #[codec(index = 5)] - #[doc = "See [`Pallet::schedule_named_after`]."] + #[doc = "Schedule a named task after a delay."] schedule_named_after { id: [::core::primitive::u8; 32usize], after: ::core::primitive::u32, @@ -49907,6 +58922,52 @@ pub mod api { runtime_types::rococo_runtime::RuntimeCall, >, }, + #[codec(index = 6)] + #[doc = "Set a retry configuration for a task so that, in case its scheduled run fails, it will"] + #[doc = "be retried after `period` blocks, for a total amount of `retries` retries or until it"] + #[doc = "succeeds."] + #[doc = ""] + #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] + #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] + #[doc = "normally while the task is retrying."] + #[doc = ""] + #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] + #[doc = "clones of the original task. Their retry configuration will be derived from the"] + #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] + #[doc = "original `total_retries`."] + set_retry { + task: (::core::primitive::u32, ::core::primitive::u32), + retries: ::core::primitive::u8, + period: ::core::primitive::u32, + }, + #[codec(index = 7)] + #[doc = "Set a retry configuration for a named task so that, in case its scheduled run fails, it"] + #[doc = "will be retried after `period` blocks, for a total amount of `retries` retries or until"] + #[doc = "it succeeds."] + #[doc = ""] + #[doc = "Tasks which need to be scheduled for a retry are still subject to weight metering and"] + #[doc = "agenda space, same as a regular task. If a periodic task fails, it will be scheduled"] + #[doc = "normally while the task is retrying."] + #[doc = ""] + #[doc = "Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic"] + #[doc = "clones of the original task. Their retry configuration will be derived from the"] + #[doc = "original task's configuration, but will have a lower value for `remaining` than the"] + #[doc = "original `total_retries`."] + set_retry_named { + id: [::core::primitive::u8; 32usize], + retries: ::core::primitive::u8, + period: ::core::primitive::u32, + }, + #[codec(index = 8)] + #[doc = "Removes the retry configuration of a task."] + cancel_retry { + task: (::core::primitive::u32, ::core::primitive::u32), + }, + #[codec(index = 9)] + #[doc = "Cancel the retry configuration of a named task."] + cancel_retry_named { + id: [::core::primitive::u8; 32usize], + }, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -49977,18 +59038,39 @@ pub mod api { ::core::result::Result<(), runtime_types::sp_runtime::DispatchError>, }, #[codec(index = 3)] + #[doc = "Set a retry configuration for some task."] + RetrySet { + task: (::core::primitive::u32, ::core::primitive::u32), + id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + period: ::core::primitive::u32, + retries: ::core::primitive::u8, + }, + #[codec(index = 4)] + #[doc = "Cancel a retry configuration for some task."] + RetryCancelled { + task: (::core::primitive::u32, ::core::primitive::u32), + id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + }, + #[codec(index = 5)] #[doc = "The call for the provided hash was not found so the task has been aborted."] CallUnavailable { task: (::core::primitive::u32, ::core::primitive::u32), id: ::core::option::Option<[::core::primitive::u8; 32usize]>, }, - #[codec(index = 4)] + #[codec(index = 6)] #[doc = "The given task was unable to be renewed since the agenda is full at that block."] PeriodicFailed { task: (::core::primitive::u32, ::core::primitive::u32), id: ::core::option::Option<[::core::primitive::u8; 32usize]>, }, - #[codec(index = 5)] + #[codec(index = 7)] + #[doc = "The given task was unable to be retried since the agenda is full at that block or there"] + #[doc = "was not enough weight to reschedule it."] + RetryFailed { + task: (::core::primitive::u32, ::core::primitive::u32), + id: ::core::option::Option<[::core::primitive::u8; 32usize]>, + }, + #[codec(index = 8)] #[doc = "The given task can never be executed since it is overweight."] PermanentlyOverweight { task: (::core::primitive::u32, ::core::primitive::u32), @@ -50006,6 +59088,21 @@ pub mod api { # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub struct RetryConfig<_0> { + pub total_retries: ::core::primitive::u8, + pub remaining: ::core::primitive::u8, + pub period: _0, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct Scheduled<_0, _1, _2, _3, _4> { pub maybe_id: ::core::option::Option<_0>, pub priority: ::core::primitive::u8, @@ -50037,13 +59134,32 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::set_keys`]."] + #[doc = "Sets the session key(s) of the function caller to `keys`."] + #[doc = "Allows an account to set its session key prior to becoming a validator."] + #[doc = "This doesn't take effect until the next session."] + #[doc = ""] + #[doc = "The dispatch origin of this function must be signed."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`. Actual cost depends on the number of length of `T::Keys::key_ids()` which is"] + #[doc = " fixed."] set_keys { keys: runtime_types::rococo_runtime::SessionKeys, proof: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 1)] - #[doc = "See [`Pallet::purge_keys`]."] + #[doc = "Removes any session key(s) of the function caller."] + #[doc = ""] + #[doc = "This doesn't take effect until the next session."] + #[doc = ""] + #[doc = "The dispatch origin of this function must be Signed and the account must be either be"] + #[doc = "convertible to a validator ID using the chain's typical addressing system (this usually"] + #[doc = "means being a controller account) or directly convertible into a validator ID (which"] + #[doc = "usually means being a stash account)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)` in number of key types. Actual cost depends on the number of length of"] + #[doc = " `T::Keys::key_ids()` which is fixed."] purge_keys, } #[derive( @@ -50124,13 +59240,43 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::bid`]."] + #[doc = "A user outside of the society can make a bid for entry."] + #[doc = ""] + #[doc = "Payment: The group's Candidate Deposit will be reserved for making a bid. It is returned"] + #[doc = "when the bid becomes a member, or if the bid calls `unbid`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `value`: A one time payment the bid would like to receive when joining the society."] bid { value: ::core::primitive::u128 }, #[codec(index = 1)] - #[doc = "See [`Pallet::unbid`]."] + #[doc = "A bidder can remove their bid for entry into society."] + #[doc = "By doing so, they will have their candidate deposit returned or"] + #[doc = "they will unvouch their voucher."] + #[doc = ""] + #[doc = "Payment: The bid deposit is unreserved if the user made a bid."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a bidder."] unbid, #[codec(index = 2)] - #[doc = "See [`Pallet::vouch`]."] + #[doc = "As a member, vouch for someone to join society by placing a bid on their behalf."] + #[doc = ""] + #[doc = "There is no deposit required to vouch for a new bid, but a member can only vouch for"] + #[doc = "one bid at a time. If the bid becomes a suspended candidate and ultimately rejected by"] + #[doc = "the suspension judgement origin, the member will be banned from vouching again."] + #[doc = ""] + #[doc = "As a vouching member, you can claim a tip if the candidate is accepted. This tip will"] + #[doc = "be paid as a portion of the reward the member will receive for joining the society."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who`: The user who you would like to vouch for."] + #[doc = "- `value`: The total reward to be paid between you and the candidate if they become"] + #[doc = "a member in the society."] + #[doc = "- `tip`: Your cut of the total `value` payout when the candidate is inducted into"] + #[doc = "the society. Tips larger than `value` will be saturated upon payout."] vouch { who: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -50140,10 +59286,23 @@ pub mod api { tip: ::core::primitive::u128, }, #[codec(index = 3)] - #[doc = "See [`Pallet::unvouch`]."] + #[doc = "As a vouching member, unvouch a bid. This only works while vouched user is"] + #[doc = "only a bidder (and not a candidate)."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a vouching member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `pos`: Position in the `Bids` vector of the bid who should be unvouched."] unvouch, #[codec(index = 4)] - #[doc = "See [`Pallet::vote`]."] + #[doc = "As a member, vote on a candidate."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `candidate`: The candidate that the member would like to bid on."] + #[doc = "- `approve`: A boolean which says if the candidate should be approved (`true`) or"] + #[doc = " rejected (`false`)."] vote { candidate: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -50152,16 +59311,48 @@ pub mod api { approve: ::core::primitive::bool, }, #[codec(index = 5)] - #[doc = "See [`Pallet::defender_vote`]."] + #[doc = "As a member, vote on the defender."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `approve`: A boolean which says if the candidate should be"] + #[doc = "approved (`true`) or rejected (`false`)."] defender_vote { approve: ::core::primitive::bool }, #[codec(index = 6)] - #[doc = "See [`Pallet::payout`]."] + #[doc = "Transfer the first matured payout for the sender and remove it from the records."] + #[doc = ""] + #[doc = "NOTE: This extrinsic needs to be called multiple times to claim multiple matured"] + #[doc = "payouts."] + #[doc = ""] + #[doc = "Payment: The member will receive a payment equal to their first matured"] + #[doc = "payout to their free balance."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and a member with"] + #[doc = "payouts remaining."] payout, #[codec(index = 7)] - #[doc = "See [`Pallet::waive_repay`]."] + #[doc = "Repay the payment previously given to the member with the signed origin, remove any"] + #[doc = "pending payments, and elevate them from rank 0 to rank 1."] waive_repay { amount: ::core::primitive::u128 }, #[codec(index = 8)] - #[doc = "See [`Pallet::found_society`]."] + #[doc = "Found the society."] + #[doc = ""] + #[doc = "This is done as a discrete action in order to allow for the"] + #[doc = "pallet to be included into a running chain and can only be done once."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be from the _FounderSetOrigin_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `founder` - The first member and head of the newly founded society."] + #[doc = "- `max_members` - The initial max number of members for the society."] + #[doc = "- `max_intake` - The maximum number of candidates per intake period."] + #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] + #[doc = " suspended and may only be reinstated by the founder."] + #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] + #[doc = "- `rules` - The rules of this society concerning membership."] + #[doc = ""] + #[doc = "Complexity: O(1)"] found_society { founder: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -50174,10 +59365,27 @@ pub mod api { rules: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 9)] - #[doc = "See [`Pallet::dissolve`]."] + #[doc = "Dissolve the society and remove all members."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed, and the signing account must be both"] + #[doc = "the `Founder` and the `Head`. This implies that it may only be done when there is one"] + #[doc = "member."] dissolve, #[codec(index = 10)] - #[doc = "See [`Pallet::judge_suspended_member`]."] + #[doc = "Allow suspension judgement origin to make judgement on a suspended member."] + #[doc = ""] + #[doc = "If a suspended member is forgiven, we simply add them back as a member, not affecting"] + #[doc = "any of the existing storage items for that member."] + #[doc = ""] + #[doc = "If a suspended member is rejected, remove all associated storage items, including"] + #[doc = "their payouts, and remove any vouched bids they currently have."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed from the Founder."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who` - The suspended member to be judged."] + #[doc = "- `forgive` - A boolean representing whether the suspension judgement origin forgives"] + #[doc = " (`true`) or rejects (`false`) a suspended member."] judge_suspended_member { who: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -50186,7 +59394,18 @@ pub mod api { forgive: ::core::primitive::bool, }, #[codec(index = 11)] - #[doc = "See [`Pallet::set_parameters`]."] + #[doc = "Change the maximum number of members in society and the maximum number of new candidates"] + #[doc = "in a single intake period."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be Signed by the Founder."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `max_members` - The maximum number of members for the society. This must be no less"] + #[doc = " than the current number of members."] + #[doc = "- `max_intake` - The maximum number of candidates per intake period."] + #[doc = "- `max_strikes`: The maximum number of strikes a member may get before they become"] + #[doc = " suspended and may only be reinstated by the founder."] + #[doc = "- `candidate_deposit`: The deposit required to make a bid for membership of the group."] set_parameters { max_members: ::core::primitive::u32, max_intake: ::core::primitive::u32, @@ -50194,37 +59413,55 @@ pub mod api { candidate_deposit: ::core::primitive::u128, }, #[codec(index = 12)] - #[doc = "See [`Pallet::punish_skeptic`]."] + #[doc = "Punish the skeptic with a strike if they did not vote on a candidate. Callable by the"] + #[doc = "candidate."] punish_skeptic, #[codec(index = 13)] - #[doc = "See [`Pallet::claim_membership`]."] + #[doc = "Transform an approved candidate into a member. Callable only by the"] + #[doc = "the candidate, and only after the period for voting has ended."] claim_membership, #[codec(index = 14)] - #[doc = "See [`Pallet::bestow_membership`]."] + #[doc = "Transform an approved candidate into a member. Callable only by the Signed origin of the"] + #[doc = "Founder, only after the period for voting has ended and only when the candidate is not"] + #[doc = "clearly rejected."] bestow_membership { candidate: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 15)] - #[doc = "See [`Pallet::kick_candidate`]."] + #[doc = "Remove the candidate's application from the society. Callable only by the Signed origin"] + #[doc = "of the Founder, only after the period for voting has ended, and only when they do not"] + #[doc = "have a clear approval."] + #[doc = ""] + #[doc = "Any bid deposit is lost and voucher is banned."] kick_candidate { candidate: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 16)] - #[doc = "See [`Pallet::resign_candidacy`]."] + #[doc = "Remove the candidate's application from the society. Callable only by the candidate."] + #[doc = ""] + #[doc = "Any bid deposit is lost and voucher is banned."] resign_candidacy, #[codec(index = 17)] - #[doc = "See [`Pallet::drop_candidate`]."] + #[doc = "Remove a `candidate`'s failed application from the society. Callable by any"] + #[doc = "signed origin but only at the end of the subsequent round and only for"] + #[doc = "a candidate with more rejections than approvals."] + #[doc = ""] + #[doc = "The bid deposit is lost and the voucher is banned."] drop_candidate { candidate: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 18)] - #[doc = "See [`Pallet::cleanup_candidacy`]."] + #[doc = "Remove up to `max` stale votes for the given `candidate`."] + #[doc = ""] + #[doc = "May be called by any Signed origin, but only after the candidate's candidacy is ended."] cleanup_candidacy { candidate: ::subxt::ext::subxt_core::utils::AccountId32, max: ::core::primitive::u32, }, #[codec(index = 19)] - #[doc = "See [`Pallet::cleanup_challenge`]."] + #[doc = "Remove up to `max` stale votes for the defender in the given `challenge_round`."] + #[doc = ""] + #[doc = "May be called by any Signed origin, but only after the challenge round is ended."] cleanup_challenge { challenge_round: ::core::primitive::u32, max: ::core::primitive::u32, @@ -50633,14 +59870,36 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::control_auto_migration`]."] + #[doc = "Control the automatic migration."] + #[doc = ""] + #[doc = "The dispatch origin of this call must be [`Config::ControlOrigin`]."] control_auto_migration { maybe_config: ::core::option::Option< runtime_types::pallet_state_trie_migration::pallet::MigrationLimits, >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::continue_migrate`]."] + #[doc = "Continue the migration for the given `limits`."] + #[doc = ""] + #[doc = "The dispatch origin of this call can be any signed account."] + #[doc = ""] + #[doc = "This transaction has NO MONETARY INCENTIVES. calling it will not reward anyone. Albeit,"] + #[doc = "Upon successful execution, the transaction fee is returned."] + #[doc = ""] + #[doc = "The (potentially over-estimated) of the byte length of all the data read must be"] + #[doc = "provided for up-front fee-payment and weighing. In essence, the caller is guaranteeing"] + #[doc = "that executing the current `MigrationTask` with the given `limits` will not exceed"] + #[doc = "`real_size_upper` bytes of read data."] + #[doc = ""] + #[doc = "The `witness_task` is merely a helper to prevent the caller from being slashed or"] + #[doc = "generally trigger a migration that they do not intend. This parameter is just a message"] + #[doc = "from caller, saying that they believed `witness_task` was the last state of the"] + #[doc = "migration, and they only wish for their transaction to do anything, if this assumption"] + #[doc = "holds. In case `witness_task` does not match, the transaction fails."] + #[doc = ""] + #[doc = "Based on the documentation of [`MigrationTask::migrate_until_exhaustion`], the"] + #[doc = "recommended way of doing this is to pass a `limit` that only bounds `count`, as the"] + #[doc = "`size` limit can always be overwritten."] continue_migrate { limits: runtime_types::pallet_state_trie_migration::pallet::MigrationLimits, real_size_upper: ::core::primitive::u32, @@ -50648,7 +59907,10 @@ pub mod api { runtime_types::pallet_state_trie_migration::pallet::MigrationTask, }, #[codec(index = 2)] - #[doc = "See [`Pallet::migrate_custom_top`]."] + #[doc = "Migrate the list of top keys by iterating each of them one by one."] + #[doc = ""] + #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] + #[doc = "should only be used in case any keys are leftover due to a bug."] migrate_custom_top { keys: ::subxt::ext::subxt_core::alloc::vec::Vec< ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, @@ -50656,7 +59918,12 @@ pub mod api { witness_size: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "See [`Pallet::migrate_custom_child`]."] + #[doc = "Migrate the list of child keys by iterating each of them one by one."] + #[doc = ""] + #[doc = "All of the given child keys must be present under one `child_root`."] + #[doc = ""] + #[doc = "This does not affect the global migration process tracker ([`MigrationProcess`]), and"] + #[doc = "should only be used in case any keys are leftover due to a bug."] migrate_custom_child { root: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, child_keys: ::subxt::ext::subxt_core::alloc::vec::Vec< @@ -50665,12 +59932,20 @@ pub mod api { total_size: ::core::primitive::u32, }, #[codec(index = 4)] - #[doc = "See [`Pallet::set_signed_max_limits`]."] + #[doc = "Set the maximum limit of the signed migration."] set_signed_max_limits { limits: runtime_types::pallet_state_trie_migration::pallet::MigrationLimits, }, #[codec(index = 5)] - #[doc = "See [`Pallet::force_set_progress`]."] + #[doc = "Forcefully set the progress the running migration."] + #[doc = ""] + #[doc = "This is only useful in one case: the next key to migrate is too big to be migrated with"] + #[doc = "a signed account, in a parachain context, and we simply want to skip it. A reasonable"] + #[doc = "example of this would be `:code:`, which is both very expensive to migrate, and commonly"] + #[doc = "used, so probably it is already migrated."] + #[doc = ""] + #[doc = "In case you mess things up, you can also, in principle, use this to reset the migration"] + #[doc = "process."] force_set_progress { progress_top: runtime_types::pallet_state_trie_migration::pallet::Progress, progress_child: @@ -50772,6 +60047,24 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] + pub enum HoldReason { + #[codec(index = 0)] + SlashForMigrate, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] pub enum MigrationCompute { #[codec(index = 0)] Signed, @@ -50837,7 +60130,7 @@ pub mod api { ToStart, #[codec(index = 1)] LastKey( - runtime_types::bounded_collections::bounded_vec::BoundedVec5< + runtime_types::bounded_collections::bounded_vec::BoundedVec2< ::core::primitive::u8, >, ), @@ -50867,14 +60160,18 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::sudo`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] sudo { call: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::rococo_runtime::RuntimeCall, >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::sudo_unchecked_weight`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Root` origin."] + #[doc = "This function does not check the weight of the call, and instead allows the"] + #[doc = "Sudo user to specify the weight of the call."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] sudo_unchecked_weight { call: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::rococo_runtime::RuntimeCall, @@ -50882,7 +60179,8 @@ pub mod api { weight: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 2)] - #[doc = "See [`Pallet::set_key`]."] + #[doc = "Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo"] + #[doc = "key."] set_key { new: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -50890,7 +60188,10 @@ pub mod api { >, }, #[codec(index = 3)] - #[doc = "See [`Pallet::sudo_as`]."] + #[doc = "Authenticates the sudo key and dispatches a function call with `Signed` origin from"] + #[doc = "a given account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] sudo_as { who: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -50900,6 +60201,11 @@ pub mod api { runtime_types::rococo_runtime::RuntimeCall, >, }, + #[codec(index = 4)] + #[doc = "Permanently removes the sudo key."] + #[doc = ""] + #[doc = "**This cannot be un-done.**"] + remove_key, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -50915,10 +60221,10 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - #[doc = "Error for the Sudo pallet"] + #[doc = "Error for the Sudo pallet."] pub enum Error { #[codec(index = 0)] - #[doc = "Sender must be the Sudo account"] + #[doc = "Sender must be the Sudo account."] RequireSudo, } #[derive( @@ -50946,10 +60252,13 @@ pub mod api { #[codec(index = 1)] #[doc = "The sudo key has been updated."] KeyChanged { - old_sudoer: - ::core::option::Option<::subxt::ext::subxt_core::utils::AccountId32>, + old: ::core::option::Option<::subxt::ext::subxt_core::utils::AccountId32>, + new: ::subxt::ext::subxt_core::utils::AccountId32, }, #[codec(index = 2)] + #[doc = "The key was permanently removed."] + KeyRemoved, + #[codec(index = 3)] #[doc = "A [sudo_as](Pallet::sudo_as) call just took place."] SudoAsDone { sudo_result: @@ -50979,7 +60288,25 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::set`]."] + #[doc = "Set the current time."] + #[doc = ""] + #[doc = "This call should be invoked exactly once per block. It will panic at the finalization"] + #[doc = "phase, if this call hasn't been invoked by that time."] + #[doc = ""] + #[doc = "The timestamp should be greater than the previous one by the amount specified by"] + #[doc = "[`Config::MinimumPeriod`]."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "This dispatch class is _Mandatory_ to ensure it gets executed in the block. Be aware"] + #[doc = "that changing the complexity of this call could result exhausting the resources in a"] + #[doc = "block to execute any other calls."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`)"] + #[doc = "- 1 storage read and 1 storage mutation (codec `O(1)` because of `DidUpdate::take` in"] + #[doc = " `on_finalize`)"] + #[doc = "- 1 event handler `on_timestamp_set`. Must be `O(1)`."] set { #[codec(compact)] now: ::core::primitive::u64, @@ -51127,7 +60454,22 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::propose_spend`]."] + #[doc = "Put forward a suggestion for spending."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = "A deposit proportional to the value is reserved and slashed if the proposal is rejected."] + #[doc = "It is returned once the proposal is awarded."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(1)"] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Proposed`] if successful."] propose_spend { #[codec(compact)] value: ::core::primitive::u128, @@ -51137,19 +60479,65 @@ pub mod api { >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::reject_proposal`]."] + #[doc = "Reject a proposed spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = "The original deposit will be slashed."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(1)"] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Rejected`] if successful."] reject_proposal { #[codec(compact)] proposal_id: ::core::primitive::u32, }, #[codec(index = 2)] - #[doc = "See [`Pallet::approve_proposal`]."] + #[doc = "Approve a proposal."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::ApproveOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "At a later time, the proposal will be allocated to the beneficiary and the original"] + #[doc = "deposit will be returned."] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = " - O(1)."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "No events are emitted from this dispatch."] approve_proposal { #[codec(compact)] proposal_id: ::core::primitive::u32, }, #[codec(index = 3)] - #[doc = "See [`Pallet::spend_local`]."] + #[doc = "Propose and approve a spend of treasury funds."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least `amount`."] + #[doc = ""] + #[doc = "### Details"] + #[doc = "NOTE: For record-keeping purposes, the proposer is deemed to be equivalent to the"] + #[doc = "beneficiary."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] + #[doc = "- `beneficiary`: The destination account for the transfer."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::SpendApproved`] if successful."] spend_local { #[codec(compact)] amount: ::core::primitive::u128, @@ -51159,13 +60547,58 @@ pub mod api { >, }, #[codec(index = 4)] - #[doc = "See [`Pallet::remove_approval`]."] + #[doc = "Force a previously approved proposal to be removed from the approval queue."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "The original deposit will no longer be returned."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `proposal_id`: The index of a proposal"] + #[doc = ""] + #[doc = "### Complexity"] + #[doc = "- O(A) where `A` is the number of approvals"] + #[doc = ""] + #[doc = "### Errors"] + #[doc = "- [`Error::ProposalNotApproved`]: The `proposal_id` supplied was not found in the"] + #[doc = " approval queue, i.e., the proposal has not been approved. This could also mean the"] + #[doc = " proposal does not exist altogether, thus there is no way it would have been approved"] + #[doc = " in the first place."] remove_approval { #[codec(compact)] proposal_id: ::core::primitive::u32, }, #[codec(index = 5)] - #[doc = "See [`Pallet::spend`]."] + #[doc = "Propose and approve a spend of treasury funds."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::SpendOrigin`] with the `Success` value being at least"] + #[doc = "`amount` of `asset_kind` in the native asset. The amount of `asset_kind` is converted"] + #[doc = "for assertion using the [`Config::BalanceConverter`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "Create an approved spend for transferring a specific `amount` of `asset_kind` to a"] + #[doc = "designated beneficiary. The spend must be claimed using the `payout` dispatchable within"] + #[doc = "the [`Config::PayoutPeriod`]."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `asset_kind`: An indicator of the specific asset class to be spent."] + #[doc = "- `amount`: The amount to be transferred from the treasury to the `beneficiary`."] + #[doc = "- `beneficiary`: The beneficiary of the spend."] + #[doc = "- `valid_from`: The block number from which the spend can be claimed. It can refer to"] + #[doc = " the past if the resulting spend has not yet expired according to the"] + #[doc = " [`Config::PayoutPeriod`]. If `None`, the spend can be claimed immediately after"] + #[doc = " approval."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::AssetSpendApproved`] if successful."] spend { asset_kind: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, @@ -51173,18 +60606,69 @@ pub mod api { #[codec(compact)] amount: ::core::primitive::u128, beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedMultiLocation, + runtime_types::xcm::VersionedLocation, >, valid_from: ::core::option::Option<::core::primitive::u32>, }, #[codec(index = 6)] - #[doc = "See [`Pallet::payout`]."] + #[doc = "Claim a spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "Spends must be claimed within some temporal bounds. A spend may be claimed within one"] + #[doc = "[`Config::PayoutPeriod`] from the `valid_from` block."] + #[doc = "In case of a payout failure, the spend status must be updated with the `check_status`"] + #[doc = "dispatchable before retrying with the current function."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::Paid`] if successful."] payout { index: ::core::primitive::u32 }, #[codec(index = 7)] - #[doc = "See [`Pallet::check_status`]."] + #[doc = "Check the status of the spend and remove it from the storage if processed."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be signed."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "The status check is a prerequisite for retrying a failed payout."] + #[doc = "If a spend has either succeeded or expired, it is removed from the storage by this"] + #[doc = "function. In such instances, transaction fees are refunded."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::PaymentFailed`] if the spend payout has failed."] + #[doc = "Emits [`Event::SpendProcessed`] if the spend payout has succeed."] check_status { index: ::core::primitive::u32 }, #[codec(index = 8)] - #[doc = "See [`Pallet::void_spend`]."] + #[doc = "Void previously approved spend."] + #[doc = ""] + #[doc = "## Dispatch Origin"] + #[doc = ""] + #[doc = "Must be [`Config::RejectOrigin`]."] + #[doc = ""] + #[doc = "## Details"] + #[doc = ""] + #[doc = "A spend void is only possible if the payout has not been attempted yet."] + #[doc = ""] + #[doc = "### Parameters"] + #[doc = "- `index`: The spend index."] + #[doc = ""] + #[doc = "## Events"] + #[doc = ""] + #[doc = "Emits [`Event::AssetSpendVoided`] if successful."] void_spend { index: ::core::primitive::u32 }, } #[derive( @@ -51313,7 +60797,7 @@ pub mod api { asset_kind: runtime_types::polkadot_runtime_common::impls::VersionedLocatableAsset, amount: ::core::primitive::u128, - beneficiary: runtime_types::xcm::VersionedMultiLocation, + beneficiary: runtime_types::xcm::VersionedLocation, valid_from: ::core::primitive::u32, expire_at: ::core::primitive::u32, }, @@ -51412,14 +60896,43 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::batch`]."] + #[doc = "Send a batch of dispatch calls."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] + #[doc = ""] + #[doc = "This will return `Ok` in all circumstances. To determine the success of the batch, an"] + #[doc = "event is deposited. If a call failed and the batch was interrupted, then the"] + #[doc = "`BatchInterrupted` event is deposited, along with the number of successful calls made"] + #[doc = "and the error of the failed call. If all were successful, then the `BatchCompleted`"] + #[doc = "event is deposited."] batch { calls: ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::rococo_runtime::RuntimeCall, >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::as_derivative`]."] + #[doc = "Send a call through an indexed pseudonym of the sender."] + #[doc = ""] + #[doc = "Filter from origin are passed along. The call will be dispatched with an origin which"] + #[doc = "use the same filter as the origin of this call."] + #[doc = ""] + #[doc = "NOTE: If you need to ensure that any account-based filtering is not honored (i.e."] + #[doc = "because you expect `proxy` to have been used prior in the call stack and you do not want"] + #[doc = "the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1`"] + #[doc = "in the Multisig pallet instead."] + #[doc = ""] + #[doc = "NOTE: Prior to version *12, this was called `as_limited_sub`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] as_derivative { index: ::core::primitive::u16, call: ::subxt::ext::subxt_core::alloc::boxed::Box< @@ -51427,14 +60940,31 @@ pub mod api { >, }, #[codec(index = 2)] - #[doc = "See [`Pallet::batch_all`]."] + #[doc = "Send a batch of dispatch calls and atomically execute them."] + #[doc = "The whole transaction will rollback and fail if any of the calls failed."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatched without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] batch_all { calls: ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::rococo_runtime::RuntimeCall, >, }, #[codec(index = 3)] - #[doc = "See [`Pallet::dispatch_as`]."] + #[doc = "Dispatches a function call with a provided origin."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(1)."] dispatch_as { as_origin: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::rococo_runtime::OriginCaller, @@ -51444,14 +60974,31 @@ pub mod api { >, }, #[codec(index = 4)] - #[doc = "See [`Pallet::force_batch`]."] + #[doc = "Send a batch of dispatch calls."] + #[doc = "Unlike `batch`, it allows errors and won't interrupt."] + #[doc = ""] + #[doc = "May be called from any origin except `None`."] + #[doc = ""] + #[doc = "- `calls`: The calls to be dispatched from the same origin. The number of call must not"] + #[doc = " exceed the constant: `batched_calls_limit` (available in constant metadata)."] + #[doc = ""] + #[doc = "If origin is root then the calls are dispatch without checking origin filter. (This"] + #[doc = "includes bypassing `frame_system::Config::BaseCallFilter`)."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- O(C) where C is the number of calls to be batched."] force_batch { calls: ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::rococo_runtime::RuntimeCall, >, }, #[codec(index = 5)] - #[doc = "See [`Pallet::with_weight`]."] + #[doc = "Dispatch a function call with a specified weight."] + #[doc = ""] + #[doc = "This function does not check the weight of the call, and instead allows the"] + #[doc = "Root origin to specify the weight of the call."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] with_weight { call: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::rococo_runtime::RuntimeCall, @@ -51546,10 +61093,28 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::vest`]."] + #[doc = "Unlock any vested funds of the sender account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_ and the sender must have funds still"] + #[doc = "locked under this pallet."] + #[doc = ""] + #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] vest, #[codec(index = 1)] - #[doc = "See [`Pallet::vest_other`]."] + #[doc = "Unlock any vested funds of a `target` account."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account whose vested funds should be unlocked. Must have funds still"] + #[doc = "locked under this pallet."] + #[doc = ""] + #[doc = "Emits either `VestingCompleted` or `VestingUpdated`."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] vest_other { target: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -51557,7 +61122,19 @@ pub mod api { >, }, #[codec(index = 2)] - #[doc = "See [`Pallet::vested_transfer`]."] + #[doc = "Create a vested transfer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `target`: The account receiving the vested funds."] + #[doc = "- `schedule`: The vesting schedule attached to the transfer."] + #[doc = ""] + #[doc = "Emits `VestingCreated`."] + #[doc = ""] + #[doc = "NOTE: This will unlock all schedules through the current block."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] vested_transfer { target: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -51569,7 +61146,20 @@ pub mod api { >, }, #[codec(index = 3)] - #[doc = "See [`Pallet::force_vested_transfer`]."] + #[doc = "Force a vested transfer."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `source`: The account whose funds should be transferred."] + #[doc = "- `target`: The account that should be transferred the vested funds."] + #[doc = "- `schedule`: The vesting schedule attached to the transfer."] + #[doc = ""] + #[doc = "Emits `VestingCreated`."] + #[doc = ""] + #[doc = "NOTE: This will unlock all schedules through the current block."] + #[doc = ""] + #[doc = "## Complexity"] + #[doc = "- `O(1)`."] force_vested_transfer { source: ::subxt::ext::subxt_core::utils::MultiAddress< ::subxt::ext::subxt_core::utils::AccountId32, @@ -51585,11 +61175,45 @@ pub mod api { >, }, #[codec(index = 4)] - #[doc = "See [`Pallet::merge_schedules`]."] + #[doc = "Merge two vesting schedules together, creating a new vesting schedule that unlocks over"] + #[doc = "the highest possible start and end blocks. If both schedules have already started the"] + #[doc = "current block will be used as the schedule start; with the caveat that if one schedule"] + #[doc = "is finished by the current block, the other will be treated as the new merged schedule,"] + #[doc = "unmodified."] + #[doc = ""] + #[doc = "NOTE: If `schedule1_index == schedule2_index` this is a no-op."] + #[doc = "NOTE: This will unlock all schedules through the current block prior to merging."] + #[doc = "NOTE: If both schedules have ended by the current block, no new schedule will be created"] + #[doc = "and both will be removed."] + #[doc = ""] + #[doc = "Merged schedule attributes:"] + #[doc = "- `starting_block`: `MAX(schedule1.starting_block, scheduled2.starting_block,"] + #[doc = " current_block)`."] + #[doc = "- `ending_block`: `MAX(schedule1.ending_block, schedule2.ending_block)`."] + #[doc = "- `locked`: `schedule1.locked_at(current_block) + schedule2.locked_at(current_block)`."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Signed_."] + #[doc = ""] + #[doc = "- `schedule1_index`: index of the first schedule to merge."] + #[doc = "- `schedule2_index`: index of the second schedule to merge."] merge_schedules { schedule1_index: ::core::primitive::u32, schedule2_index: ::core::primitive::u32, }, + #[codec(index = 5)] + #[doc = "Force remove a vesting schedule"] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "- `target`: An account that has a vesting schedule"] + #[doc = "- `schedule_index`: The vesting schedule index that should be removed"] + force_remove_vesting_schedule { + target: ::subxt::ext::subxt_core::utils::MultiAddress< + ::subxt::ext::subxt_core::utils::AccountId32, + (), + >, + schedule_index: ::core::primitive::u32, + }, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -51714,24 +61338,20 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::whitelist_call`]."] whitelist_call { call_hash: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 1)] - #[doc = "See [`Pallet::remove_whitelisted_call`]."] remove_whitelisted_call { call_hash: ::subxt::ext::subxt_core::utils::H256, }, #[codec(index = 2)] - #[doc = "See [`Pallet::dispatch_whitelisted_call`]."] dispatch_whitelisted_call { call_hash: ::subxt::ext::subxt_core::utils::H256, call_encoded_len: ::core::primitive::u32, call_weight_witness: runtime_types::sp_weights::weight_v2::Weight, }, #[codec(index = 3)] - #[doc = "See [`Pallet::dispatch_whitelisted_call_with_preimage`]."] dispatch_whitelisted_call_with_preimage { call: ::subxt::ext::subxt_core::alloc::boxed::Box< runtime_types::rococo_runtime::RuntimeCall, @@ -51827,113 +61447,7 @@ pub mod api { )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - #[codec(index = 0)] - #[doc = "See [`Pallet::send`]."] - send { - dest: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedMultiLocation, - >, - message: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedXcm1, - >, - }, - #[codec(index = 1)] - #[doc = "See [`Pallet::teleport_assets`]."] - teleport_assets { - dest: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedMultiLocation, - >, - beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedMultiLocation, - >, - assets: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedMultiAssets, - >, - fee_asset_item: ::core::primitive::u32, - }, - #[codec(index = 2)] - #[doc = "See [`Pallet::reserve_transfer_assets`]."] - reserve_transfer_assets { - dest: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedMultiLocation, - >, - beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedMultiLocation, - >, - assets: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedMultiAssets, - >, - fee_asset_item: ::core::primitive::u32, - }, - #[codec(index = 3)] - #[doc = "See [`Pallet::execute`]."] - execute { - message: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedXcm2, - >, - max_weight: runtime_types::sp_weights::weight_v2::Weight, - }, - #[codec(index = 4)] - #[doc = "See [`Pallet::force_xcm_version`]."] - force_xcm_version { - location: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, - >, - version: ::core::primitive::u32, - }, - #[codec(index = 5)] - #[doc = "See [`Pallet::force_default_xcm_version`]."] - force_default_xcm_version { - maybe_xcm_version: ::core::option::Option<::core::primitive::u32>, - }, - #[codec(index = 6)] - #[doc = "See [`Pallet::force_subscribe_version_notify`]."] - force_subscribe_version_notify { - location: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedMultiLocation, - >, - }, - #[codec(index = 7)] - #[doc = "See [`Pallet::force_unsubscribe_version_notify`]."] - force_unsubscribe_version_notify { - location: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedMultiLocation, - >, - }, - #[codec(index = 8)] - #[doc = "See [`Pallet::limited_reserve_transfer_assets`]."] - limited_reserve_transfer_assets { - dest: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedMultiLocation, - >, - beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedMultiLocation, - >, - assets: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedMultiAssets, - >, - fee_asset_item: ::core::primitive::u32, - weight_limit: runtime_types::xcm::v3::WeightLimit, - }, - #[codec(index = 9)] - #[doc = "See [`Pallet::limited_teleport_assets`]."] - limited_teleport_assets { - dest: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedMultiLocation, - >, - beneficiary: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedMultiLocation, - >, - assets: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::xcm::VersionedMultiAssets, - >, - fee_asset_item: ::core::primitive::u32, - weight_limit: runtime_types::xcm::v3::WeightLimit, - }, - #[codec(index = 10)] - #[doc = "See [`Pallet::force_suspension`]."] - force_suspension { suspended: ::core::primitive::bool }, - } + # [codec (index = 0)] # [doc = "WARNING: DEPRECATED. `send` will be removed after June 2024. Use `send_blob` instead."] send { dest : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , message : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedXcm1 > , } , # [codec (index = 1)] # [doc = "Teleport some assets from the local chain to some destination chain."] # [doc = ""] # [doc = "**This function is deprecated: Use `limited_teleport_assets` instead.**"] # [doc = ""] # [doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] # [doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] # [doc = "with all fees taken as needed from the asset."] # [doc = ""] # [doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] # [doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] # [doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] # [doc = " relay to parachain."] # [doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] # [doc = " generally be an `AccountId32` value."] # [doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] # [doc = " fee on the `dest` chain."] # [doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] # [doc = " fees."] teleport_assets { dest : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , beneficiary : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , assets : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedAssets > , fee_asset_item : :: core :: primitive :: u32 , } , # [codec (index = 2)] # [doc = "Transfer some assets from the local chain to the destination chain through their local,"] # [doc = "destination or remote reserve."] # [doc = ""] # [doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] # [doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] # [doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] # [doc = " assets to `beneficiary`."] # [doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] # [doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] # [doc = " deposit them to `beneficiary`."] # [doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] # [doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] # [doc = " to mint and deposit reserve-based assets to `beneficiary`."] # [doc = ""] # [doc = "**This function is deprecated: Use `limited_reserve_transfer_assets` instead.**"] # [doc = ""] # [doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] # [doc = "index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,"] # [doc = "with all fees taken as needed from the asset."] # [doc = ""] # [doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] # [doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] # [doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] # [doc = " relay to parachain."] # [doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] # [doc = " generally be an `AccountId32` value."] # [doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] # [doc = " fee on the `dest` (and possibly reserve) chains."] # [doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] # [doc = " fees."] reserve_transfer_assets { dest : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , beneficiary : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , assets : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedAssets > , fee_asset_item : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "Execute an XCM message from a local, signed, origin."] # [doc = ""] # [doc = "An event is deposited indicating whether `msg` could be executed completely or only"] # [doc = "partially."] # [doc = ""] # [doc = "No more than `max_weight` will be used in its attempted execution. If this is less than"] # [doc = "the maximum amount of weight that the message could take to be executed, then no"] # [doc = "execution attempt will be made."] # [doc = ""] # [doc = "WARNING: DEPRECATED. `execute` will be removed after June 2024. Use `execute_blob`"] # [doc = "instead."] execute { message : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedXcm2 > , max_weight : runtime_types :: sp_weights :: weight_v2 :: Weight , } , # [codec (index = 4)] # [doc = "Extoll that a particular destination can be communicated with through a particular"] # [doc = "version of XCM."] # [doc = ""] # [doc = "- `origin`: Must be an origin specified by AdminOrigin."] # [doc = "- `location`: The destination that is being described."] # [doc = "- `xcm_version`: The latest version of XCM that `location` supports."] force_xcm_version { location : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: staging_xcm :: v4 :: location :: Location > , version : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "Set a safe XCM version (the version that XCM should be encoded with if the most recent"] # [doc = "version a destination can accept is unknown)."] # [doc = ""] # [doc = "- `origin`: Must be an origin specified by AdminOrigin."] # [doc = "- `maybe_xcm_version`: The default XCM encoding version, or `None` to disable."] force_default_xcm_version { maybe_xcm_version : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 6)] # [doc = "Ask a location to notify us regarding their XCM version and any changes to it."] # [doc = ""] # [doc = "- `origin`: Must be an origin specified by AdminOrigin."] # [doc = "- `location`: The location to which we should subscribe for XCM version notifications."] force_subscribe_version_notify { location : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , } , # [codec (index = 7)] # [doc = "Require that a particular destination should no longer notify us regarding any XCM"] # [doc = "version changes."] # [doc = ""] # [doc = "- `origin`: Must be an origin specified by AdminOrigin."] # [doc = "- `location`: The location to which we are currently subscribed for XCM version"] # [doc = " notifications which we no longer desire."] force_unsubscribe_version_notify { location : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , } , # [codec (index = 8)] # [doc = "Transfer some assets from the local chain to the destination chain through their local,"] # [doc = "destination or remote reserve."] # [doc = ""] # [doc = "`assets` must have same reserve location and may not be teleportable to `dest`."] # [doc = " - `assets` have local reserve: transfer assets to sovereign account of destination"] # [doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] # [doc = " assets to `beneficiary`."] # [doc = " - `assets` have destination reserve: burn local assets and forward a notification to"] # [doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] # [doc = " deposit them to `beneficiary`."] # [doc = " - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move"] # [doc = " reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`"] # [doc = " to mint and deposit reserve-based assets to `beneficiary`."] # [doc = ""] # [doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] # [doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] # [doc = "is needed than `weight_limit`, then the operation will fail and the sent assets may be"] # [doc = "at risk."] # [doc = ""] # [doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] # [doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] # [doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] # [doc = " relay to parachain."] # [doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] # [doc = " generally be an `AccountId32` value."] # [doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] # [doc = " fee on the `dest` (and possibly reserve) chains."] # [doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] # [doc = " fees."] # [doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] limited_reserve_transfer_assets { dest : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , beneficiary : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , assets : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedAssets > , fee_asset_item : :: core :: primitive :: u32 , weight_limit : runtime_types :: xcm :: v3 :: WeightLimit , } , # [codec (index = 9)] # [doc = "Teleport some assets from the local chain to some destination chain."] # [doc = ""] # [doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] # [doc = "index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight"] # [doc = "is needed than `weight_limit`, then the operation will fail and the sent assets may be"] # [doc = "at risk."] # [doc = ""] # [doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] # [doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] # [doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] # [doc = " relay to parachain."] # [doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] # [doc = " generally be an `AccountId32` value."] # [doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] # [doc = " fee on the `dest` chain."] # [doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] # [doc = " fees."] # [doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] limited_teleport_assets { dest : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , beneficiary : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , assets : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedAssets > , fee_asset_item : :: core :: primitive :: u32 , weight_limit : runtime_types :: xcm :: v3 :: WeightLimit , } , # [codec (index = 10)] # [doc = "Set or unset the global suspension state of the XCM executor."] # [doc = ""] # [doc = "- `origin`: Must be an origin specified by AdminOrigin."] # [doc = "- `suspended`: `true` to suspend, `false` to resume."] force_suspension { suspended : :: core :: primitive :: bool , } , # [codec (index = 11)] # [doc = "Transfer some assets from the local chain to the destination chain through their local,"] # [doc = "destination or remote reserve, or through teleports."] # [doc = ""] # [doc = "Fee payment on the destination side is made from the asset in the `assets` vector of"] # [doc = "index `fee_asset_item` (hence referred to as `fees`), up to enough to pay for"] # [doc = "`weight_limit` of weight. If more weight is needed than `weight_limit`, then the"] # [doc = "operation will fail and the sent assets may be at risk."] # [doc = ""] # [doc = "`assets` (excluding `fees`) must have same reserve location or otherwise be teleportable"] # [doc = "to `dest`, no limitations imposed on `fees`."] # [doc = " - for local reserve: transfer assets to sovereign account of destination chain and"] # [doc = " forward a notification XCM to `dest` to mint and deposit reserve-based assets to"] # [doc = " `beneficiary`."] # [doc = " - for destination reserve: burn local assets and forward a notification to `dest` chain"] # [doc = " to withdraw the reserve assets from this chain's sovereign account and deposit them"] # [doc = " to `beneficiary`."] # [doc = " - for remote reserve: burn local assets, forward XCM to reserve chain to move reserves"] # [doc = " from this chain's SA to `dest` chain's SA, and forward another XCM to `dest` to mint"] # [doc = " and deposit reserve-based assets to `beneficiary`."] # [doc = " - for teleports: burn local assets and forward XCM to `dest` chain to mint/teleport"] # [doc = " assets and deposit them to `beneficiary`."] # [doc = ""] # [doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] # [doc = "- `dest`: Destination context for the assets. Will typically be `X2(Parent,"] # [doc = " Parachain(..))` to send from parachain to parachain, or `X1(Parachain(..))` to send"] # [doc = " from relay to parachain."] # [doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] # [doc = " generally be an `AccountId32` value."] # [doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] # [doc = " fee on the `dest` (and possibly reserve) chains."] # [doc = "- `fee_asset_item`: The index into `assets` of the item which should be used to pay"] # [doc = " fees."] # [doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] transfer_assets { dest : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , beneficiary : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , assets : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedAssets > , fee_asset_item : :: core :: primitive :: u32 , weight_limit : runtime_types :: xcm :: v3 :: WeightLimit , } , # [codec (index = 12)] # [doc = "Claims assets trapped on this pallet because of leftover assets during XCM execution."] # [doc = ""] # [doc = "- `origin`: Anyone can call this extrinsic."] # [doc = "- `assets`: The exact assets that were trapped. Use the version to specify what version"] # [doc = "was the latest when they were trapped."] # [doc = "- `beneficiary`: The location/account where the claimed assets will be deposited."] claim_assets { assets : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedAssets > , beneficiary : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , } , # [codec (index = 13)] # [doc = "Execute an XCM from a local, signed, origin."] # [doc = ""] # [doc = "An event is deposited indicating whether the message could be executed completely"] # [doc = "or only partially."] # [doc = ""] # [doc = "No more than `max_weight` will be used in its attempted execution. If this is less than"] # [doc = "the maximum amount of weight that the message could take to be executed, then no"] # [doc = "execution attempt will be made."] # [doc = ""] # [doc = "The message is passed in encoded. It needs to be decodable as a [`VersionedXcm`]."] execute_blob { encoded_message : runtime_types :: bounded_collections :: bounded_vec :: BoundedVec2 < :: core :: primitive :: u8 > , max_weight : runtime_types :: sp_weights :: weight_v2 :: Weight , } , # [codec (index = 14)] # [doc = "Send an XCM from a local, signed, origin."] # [doc = ""] # [doc = "The destination, `dest`, will receive this message with a `DescendOrigin` instruction"] # [doc = "that makes the origin of the message be the origin on this system."] # [doc = ""] # [doc = "The message is passed in encoded. It needs to be decodable as a [`VersionedXcm`]."] send_blob { dest : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , encoded_message : runtime_types :: bounded_collections :: bounded_vec :: BoundedVec2 < :: core :: primitive :: u8 > , } , # [codec (index = 15)] # [doc = "Transfer assets from the local chain to the destination chain using explicit transfer"] # [doc = "types for assets and fees."] # [doc = ""] # [doc = "`assets` must have same reserve location or may be teleportable to `dest`. Caller must"] # [doc = "provide the `assets_transfer_type` to be used for `assets`:"] # [doc = " - `TransferType::LocalReserve`: transfer assets to sovereign account of destination"] # [doc = " chain and forward a notification XCM to `dest` to mint and deposit reserve-based"] # [doc = " assets to `beneficiary`."] # [doc = " - `TransferType::DestinationReserve`: burn local assets and forward a notification to"] # [doc = " `dest` chain to withdraw the reserve assets from this chain's sovereign account and"] # [doc = " deposit them to `beneficiary`."] # [doc = " - `TransferType::RemoteReserve(reserve)`: burn local assets, forward XCM to `reserve`"] # [doc = " chain to move reserves from this chain's SA to `dest` chain's SA, and forward another"] # [doc = " XCM to `dest` to mint and deposit reserve-based assets to `beneficiary`. Typically"] # [doc = " the remote `reserve` is Asset Hub."] # [doc = " - `TransferType::Teleport`: burn local assets and forward XCM to `dest` chain to"] # [doc = " mint/teleport assets and deposit them to `beneficiary`."] # [doc = ""] # [doc = "Fee payment on the source, destination and all intermediary hops, is specified through"] # [doc = "`fees_id`, but make sure enough of the specified `fees_id` asset is included in the"] # [doc = "given list of `assets`. `fees_id` should be enough to pay for `weight_limit`. If more"] # [doc = "weight is needed than `weight_limit`, then the operation will fail and the sent assets"] # [doc = "may be at risk."] # [doc = ""] # [doc = "`fees_id` may use different transfer type than rest of `assets` and can be specified"] # [doc = "through `fees_transfer_type`."] # [doc = ""] # [doc = "- `origin`: Must be capable of withdrawing the `assets` and executing XCM."] # [doc = "- `dest`: Destination context for the assets. Will typically be `[Parent,"] # [doc = " Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from"] # [doc = " relay to parachain, or `(parents: 2, (GlobalConsensus(..), ..))` to send from"] # [doc = " parachain across a bridge to another ecosystem destination."] # [doc = "- `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will"] # [doc = " generally be an `AccountId32` value."] # [doc = "- `assets`: The assets to be withdrawn. This should include the assets used to pay the"] # [doc = " fee on the `dest` (and possibly reserve) chains."] # [doc = "- `assets_transfer_type`: The XCM `TransferType` used to transfer the `assets`."] # [doc = "- `fees_id`: One of the included `assets` to be be used to pay fees."] # [doc = "- `fees_transfer_type`: The XCM `TransferType` used to transfer the `fees` assets."] # [doc = "- `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase."] transfer_assets_using_type { dest : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , beneficiary : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedLocation > , assets : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedAssets > , assets_transfer_type : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: staging_xcm_executor :: traits :: asset_transfer :: TransferType > , fees_id : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: xcm :: VersionedAssetId > , fees_transfer_type : :: subxt :: ext :: subxt_core :: alloc :: boxed :: Box < runtime_types :: staging_xcm_executor :: traits :: asset_transfer :: TransferType > , weight_limit : runtime_types :: xcm :: v3 :: WeightLimit , } , } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, @@ -51965,7 +61479,7 @@ pub mod api { #[doc = "The message's weight could not be determined."] UnweighableMessage, #[codec(index = 4)] - #[doc = "The destination `MultiLocation` provided cannot be inverted."] + #[doc = "The destination `Location` provided cannot be inverted."] DestinationNotInvertible, #[codec(index = 5)] #[doc = "The assets to be sent are empty."] @@ -51993,8 +61507,8 @@ pub mod api { #[doc = "The location is invalid since it already has a subscription from us."] AlreadySubscribed, #[codec(index = 13)] - #[doc = "Invalid asset for the operation."] - InvalidAsset, + #[doc = "Could not check-out the assets for teleportation to the destination chain."] + CannotCheckOutTeleport, #[codec(index = 14)] #[doc = "The owner does not own (all) of the asset that they wish to do the operation on."] LowBalance, @@ -52013,6 +61527,25 @@ pub mod api { #[codec(index = 19)] #[doc = "The unlock operation cannot succeed because there are still consumers of the lock."] InUse, + #[codec(index = 21)] + #[doc = "Invalid asset, reserve chain could not be determined for it."] + InvalidAssetUnknownReserve, + #[codec(index = 22)] + #[doc = "Invalid asset, do not support remote asset reserves with different fees reserves."] + InvalidAssetUnsupportedReserve, + #[codec(index = 23)] + #[doc = "Too many assets with different reserve locations have been attempted for transfer."] + TooManyReserves, + #[codec(index = 24)] + #[doc = "Local XCM execution incomplete."] + LocalExecutionIncomplete, + #[codec(index = 25)] + #[doc = "Could not decode XCM."] + UnableToDecode, + #[codec(index = 26)] + #[doc = "XCM encoded length is too large."] + #[doc = "Returned when an XCM encoded length is larger than `MaxXcmEncodedSize`."] + XcmTooLarge, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -52033,14 +61566,14 @@ pub mod api { #[codec(index = 0)] #[doc = "Execution of an XCM message was attempted."] Attempted { - outcome: runtime_types::xcm::v3::traits::Outcome, + outcome: runtime_types::staging_xcm::v4::traits::Outcome, }, #[codec(index = 1)] #[doc = "A XCM message was sent."] Sent { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - message: runtime_types::xcm::v3::Xcm1, + origin: runtime_types::staging_xcm::v4::location::Location, + destination: runtime_types::staging_xcm::v4::location::Location, + message: runtime_types::staging_xcm::v4::Xcm1, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 2)] @@ -52048,7 +61581,7 @@ pub mod api { #[doc = "matching query was never registered, it may be because it is a duplicate response, or"] #[doc = "because the query timed out."] UnexpectedResponse { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, }, #[codec(index = 3)] @@ -52056,7 +61589,7 @@ pub mod api { #[doc = "no registered notification call."] ResponseReady { query_id: ::core::primitive::u64, - response: runtime_types::xcm::v3::Response, + response: runtime_types::staging_xcm::v4::Response, }, #[codec(index = 4)] #[doc = "Query response has been received and query is removed. The registered notification has"] @@ -52099,10 +61632,10 @@ pub mod api { #[doc = "not match that expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] InvalidResponder { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, expected_location: ::core::option::Option< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, + runtime_types::staging_xcm::v4::location::Location, >, }, #[codec(index = 9)] @@ -52114,7 +61647,7 @@ pub mod api { #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] #[doc = "needed."] InvalidResponderVersion { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, }, #[codec(index = 10)] @@ -52124,31 +61657,31 @@ pub mod api { #[doc = "Some assets have been placed in an asset trap."] AssetsTrapped { hash: ::subxt::ext::subxt_core::utils::H256, - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - assets: runtime_types::xcm::VersionedMultiAssets, + origin: runtime_types::staging_xcm::v4::location::Location, + assets: runtime_types::xcm::VersionedAssets, }, #[codec(index = 12)] #[doc = "An XCM version change notification message has been attempted to be sent."] #[doc = ""] #[doc = "The cost of sending it (borne by the chain) is included."] VersionChangeNotified { - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + destination: runtime_types::staging_xcm::v4::location::Location, result: ::core::primitive::u32, - cost: runtime_types::xcm::v3::multiasset::MultiAssets, + cost: runtime_types::staging_xcm::v4::asset::Assets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 13)] #[doc = "The supported version of a location has been changed. This might be through an"] #[doc = "automatic notification or a manual intervention."] SupportedVersionChanged { - location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + location: runtime_types::staging_xcm::v4::location::Location, version: ::core::primitive::u32, }, #[codec(index = 14)] #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "sending the notification to it."] NotifyTargetSendFail { - location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + location: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, error: runtime_types::xcm::v3::traits::Error, }, @@ -52156,7 +61689,7 @@ pub mod api { #[doc = "A given location which had a version change subscription was dropped owing to an error"] #[doc = "migrating the location to our new XCM format."] NotifyTargetMigrationFail { - location: runtime_types::xcm::VersionedMultiLocation, + location: runtime_types::xcm::VersionedLocation, query_id: ::core::primitive::u64, }, #[codec(index = 16)] @@ -52168,7 +61701,7 @@ pub mod api { #[doc = "valid response will be dropped. Manual governance intervention is probably going to be"] #[doc = "needed."] InvalidQuerierVersion { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, }, #[codec(index = 17)] @@ -52176,50 +61709,52 @@ pub mod api { #[doc = "not match the expected. The query remains registered for a later, valid, response to"] #[doc = "be received and acted upon."] InvalidQuerier { - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, + origin: runtime_types::staging_xcm::v4::location::Location, query_id: ::core::primitive::u64, - expected_querier: - runtime_types::staging_xcm::v3::multilocation::MultiLocation, + expected_querier: runtime_types::staging_xcm::v4::location::Location, maybe_actual_querier: ::core::option::Option< - runtime_types::staging_xcm::v3::multilocation::MultiLocation, + runtime_types::staging_xcm::v4::location::Location, >, }, #[codec(index = 18)] #[doc = "A remote has requested XCM version change notification from us and we have honored it."] #[doc = "A version information message is sent to them and its cost is included."] VersionNotifyStarted { - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - cost: runtime_types::xcm::v3::multiasset::MultiAssets, + destination: runtime_types::staging_xcm::v4::location::Location, + cost: runtime_types::staging_xcm::v4::asset::Assets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 19)] #[doc = "We have requested that a remote chain send us XCM version change notifications."] VersionNotifyRequested { - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - cost: runtime_types::xcm::v3::multiasset::MultiAssets, + destination: runtime_types::staging_xcm::v4::location::Location, + cost: runtime_types::staging_xcm::v4::asset::Assets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 20)] #[doc = "We have requested that a remote chain stops sending us XCM version change"] #[doc = "notifications."] VersionNotifyUnrequested { - destination: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - cost: runtime_types::xcm::v3::multiasset::MultiAssets, + destination: runtime_types::staging_xcm::v4::location::Location, + cost: runtime_types::staging_xcm::v4::asset::Assets, message_id: [::core::primitive::u8; 32usize], }, #[codec(index = 21)] #[doc = "Fees were paid from a location for an operation (often for using `SendXcm`)."] FeesPaid { - paying: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - fees: runtime_types::xcm::v3::multiasset::MultiAssets, + paying: runtime_types::staging_xcm::v4::location::Location, + fees: runtime_types::staging_xcm::v4::asset::Assets, }, #[codec(index = 22)] #[doc = "Some assets have been claimed from an asset trap"] AssetsClaimed { hash: ::subxt::ext::subxt_core::utils::H256, - origin: runtime_types::staging_xcm::v3::multilocation::MultiLocation, - assets: runtime_types::xcm::VersionedMultiAssets, + origin: runtime_types::staging_xcm::v4::location::Location, + assets: runtime_types::xcm::VersionedAssets, }, + #[codec(index = 23)] + #[doc = "A XCM version migration finished."] + VersionMigrationFinished { version: ::core::primitive::u32 }, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -52237,9 +61772,9 @@ pub mod api { )] pub enum Origin { #[codec(index = 0)] - Xcm(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + Xcm(runtime_types::staging_xcm::v4::location::Location), #[codec(index = 1)] - Response(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + Response(runtime_types::staging_xcm::v4::location::Location), } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -52258,16 +61793,16 @@ pub mod api { pub enum QueryStatus<_0> { #[codec(index = 0)] Pending { - responder: runtime_types::xcm::VersionedMultiLocation, + responder: runtime_types::xcm::VersionedLocation, maybe_match_querier: - ::core::option::Option, + ::core::option::Option, maybe_notify: ::core::option::Option<(::core::primitive::u8, ::core::primitive::u8)>, timeout: _0, }, #[codec(index = 1)] VersionNotifier { - origin: runtime_types::xcm::VersionedMultiLocation, + origin: runtime_types::xcm::VersionedLocation, is_active: ::core::primitive::bool, }, #[codec(index = 2)] @@ -52292,8 +61827,8 @@ pub mod api { )] pub struct RemoteLockedFungibleRecord<_0> { pub amount: ::core::primitive::u128, - pub owner: runtime_types::xcm::VersionedMultiLocation, - pub locker: runtime_types::xcm::VersionedMultiLocation, + pub owner: runtime_types::xcm::VersionedLocation, + pub locker: runtime_types::xcm::VersionedLocation, pub consumers: runtime_types::bounded_collections::bounded_vec::BoundedVec27<( _0, ::core::primitive::u128, @@ -52476,7 +62011,7 @@ pub mod api { } pub mod polkadot_primitives { use super::runtime_types; - pub mod v6 { + pub mod v7 { use super::runtime_types; pub mod assignment_app { use super::runtime_types; @@ -52494,7 +62029,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct Public(pub runtime_types::sp_core::sr25519::Public); + pub struct Public(pub [::core::primitive::u8; 32usize]); } pub mod async_backing { use super::runtime_types; @@ -52530,7 +62065,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct BackingState < _0 , _1 > { pub constraints : runtime_types :: polkadot_primitives :: v6 :: async_backing :: Constraints < _1 > , pub pending_availability : :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < runtime_types :: polkadot_primitives :: v6 :: async_backing :: CandidatePendingAvailability < _0 , _1 > > , } + pub struct BackingState < _0 , _1 > { pub constraints : runtime_types :: polkadot_primitives :: v7 :: async_backing :: Constraints < _1 > , pub pending_availability : :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < runtime_types :: polkadot_primitives :: v7 :: async_backing :: CandidatePendingAvailability < _0 , _1 > > , } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, @@ -52548,9 +62083,9 @@ pub mod api { pub struct CandidatePendingAvailability<_0, _1> { pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, pub descriptor: - runtime_types::polkadot_primitives::v6::CandidateDescriptor<_0>, + runtime_types::polkadot_primitives::v7::CandidateDescriptor<_0>, pub commitments: - runtime_types::polkadot_primitives::v6::CandidateCommitments<_1>, + runtime_types::polkadot_primitives::v7::CandidateCommitments<_1>, pub relay_parent_number: _1, pub max_pov_size: ::core::primitive::u32, } @@ -52568,7 +62103,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct Constraints < _0 > { pub min_relay_parent_number : _0 , pub max_pov_size : :: core :: primitive :: u32 , pub max_code_size : :: core :: primitive :: u32 , pub ump_remaining : :: core :: primitive :: u32 , pub ump_remaining_bytes : :: core :: primitive :: u32 , pub max_ump_num_per_candidate : :: core :: primitive :: u32 , pub dmp_remaining_messages : :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < _0 > , pub hrmp_inbound : runtime_types :: polkadot_primitives :: v6 :: async_backing :: InboundHrmpLimitations < _0 > , pub hrmp_channels_out : :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < (runtime_types :: polkadot_parachain_primitives :: primitives :: Id , runtime_types :: polkadot_primitives :: v6 :: async_backing :: OutboundHrmpChannelLimitations ,) > , pub max_hrmp_num_per_candidate : :: core :: primitive :: u32 , pub required_parent : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , pub validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , pub upgrade_restriction : :: core :: option :: Option < runtime_types :: polkadot_primitives :: v6 :: UpgradeRestriction > , pub future_validation_code : :: core :: option :: Option < (_0 , runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash ,) > , } + pub struct Constraints < _0 > { pub min_relay_parent_number : _0 , pub max_pov_size : :: core :: primitive :: u32 , pub max_code_size : :: core :: primitive :: u32 , pub ump_remaining : :: core :: primitive :: u32 , pub ump_remaining_bytes : :: core :: primitive :: u32 , pub max_ump_num_per_candidate : :: core :: primitive :: u32 , pub dmp_remaining_messages : :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < _0 > , pub hrmp_inbound : runtime_types :: polkadot_primitives :: v7 :: async_backing :: InboundHrmpLimitations < _0 > , pub hrmp_channels_out : :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < (runtime_types :: polkadot_parachain_primitives :: primitives :: Id , runtime_types :: polkadot_primitives :: v7 :: async_backing :: OutboundHrmpChannelLimitations ,) > , pub max_hrmp_num_per_candidate : :: core :: primitive :: u32 , pub required_parent : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , pub validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , pub upgrade_restriction : :: core :: option :: Option < runtime_types :: polkadot_primitives :: v7 :: UpgradeRestriction > , pub future_validation_code : :: core :: option :: Option < (_0 , runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash ,) > , } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, @@ -52621,7 +62156,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct Public(pub runtime_types::sp_core::sr25519::Public); + pub struct Public(pub [::core::primitive::u8; 32usize]); #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, @@ -52636,7 +62171,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct Signature(pub runtime_types::sp_core::sr25519::Signature); + pub struct Signature(pub [::core::primitive::u8; 64usize]); } pub mod executor_params { use super::runtime_types; @@ -52665,12 +62200,12 @@ pub mod api { PrecheckingMaxMemory(::core::primitive::u64), #[codec(index = 5)] PvfPrepTimeout( - runtime_types::polkadot_primitives::v6::PvfPrepTimeoutKind, + runtime_types::polkadot_primitives::v7::PvfPrepKind, ::core::primitive::u64, ), #[codec(index = 6)] PvfExecTimeout( - runtime_types::polkadot_primitives::v6::PvfExecTimeoutKind, + runtime_types::polkadot_primitives::v7::PvfExecKind, ::core::primitive::u64, ), #[codec(index = 7)] @@ -52692,7 +62227,7 @@ pub mod api { )] pub struct ExecutorParams( pub ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::executor_params::ExecutorParam, + runtime_types::polkadot_primitives::v7::executor_params::ExecutorParam, >, ); } @@ -52714,9 +62249,9 @@ pub mod api { )] pub struct UncheckedSigned<_0, _1> { pub payload: _0, - pub validator_index: runtime_types::polkadot_primitives::v6::ValidatorIndex, + pub validator_index: runtime_types::polkadot_primitives::v7::ValidatorIndex, pub signature: - runtime_types::polkadot_primitives::v6::validator_app::Signature, + runtime_types::polkadot_primitives::v7::validator_app::Signature, #[codec(skip)] pub __ignore: ::core::marker::PhantomData<_1>, } @@ -52739,12 +62274,12 @@ pub mod api { )] pub struct DisputeProof { pub time_slot: - runtime_types::polkadot_primitives::v6::slashing::DisputesTimeSlot, + runtime_types::polkadot_primitives::v7::slashing::DisputesTimeSlot, pub kind: - runtime_types::polkadot_primitives::v6::slashing::SlashingOffenceKind, - pub validator_index: runtime_types::polkadot_primitives::v6::ValidatorIndex, + runtime_types::polkadot_primitives::v7::slashing::SlashingOffenceKind, + pub validator_index: runtime_types::polkadot_primitives::v7::ValidatorIndex, pub validator_id: - runtime_types::polkadot_primitives::v6::validator_app::Public, + runtime_types::polkadot_primitives::v7::validator_app::Public, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -52797,11 +62332,11 @@ pub mod api { )] pub struct PendingSlashes { pub keys: ::subxt::ext::subxt_core::utils::KeyedVec< - runtime_types::polkadot_primitives::v6::ValidatorIndex, - runtime_types::polkadot_primitives::v6::validator_app::Public, + runtime_types::polkadot_primitives::v7::ValidatorIndex, + runtime_types::polkadot_primitives::v7::validator_app::Public, >, pub kind: - runtime_types::polkadot_primitives::v6::slashing::SlashingOffenceKind, + runtime_types::polkadot_primitives::v7::slashing::SlashingOffenceKind, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -52840,7 +62375,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct Public(pub runtime_types::sp_core::sr25519::Public); + pub struct Public(pub [::core::primitive::u8; 32usize]); #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, @@ -52855,7 +62390,25 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct Signature(pub runtime_types::sp_core::sr25519::Signature); + pub struct Signature(pub [::core::primitive::u8; 64usize]); + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct ApprovalVotingParams { + pub max_approval_coalesce_count: ::core::primitive::u32, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -52893,9 +62446,9 @@ pub mod api { )] pub struct BackedCandidate<_0> { pub candidate: - runtime_types::polkadot_primitives::v6::CommittedCandidateReceipt<_0>, + runtime_types::polkadot_primitives::v7::CommittedCandidateReceipt<_0>, pub validity_votes: ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::ValidityAttestation, + runtime_types::polkadot_primitives::v7::ValidityAttestation, >, pub validator_indices: ::subxt::ext::subxt_core::utils::bits::DecodedBits< ::core::primitive::u8, @@ -52918,11 +62471,11 @@ pub mod api { )] pub struct CandidateCommitments<_0> { pub upward_messages: - runtime_types::bounded_collections::bounded_vec::BoundedVec2< + runtime_types::bounded_collections::bounded_vec::BoundedVec3< ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, >, pub horizontal_messages: - runtime_types::bounded_collections::bounded_vec::BoundedVec3< + runtime_types::bounded_collections::bounded_vec::BoundedVec4< runtime_types::polkadot_core_primitives::OutboundHrmpMessage< runtime_types::polkadot_parachain_primitives::primitives::Id, >, @@ -52949,7 +62502,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct CandidateDescriptor < _0 > { pub para_id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , pub relay_parent : _0 , pub collator : runtime_types :: polkadot_primitives :: v6 :: collator_app :: Public , pub persisted_validation_data_hash : :: subxt :: ext :: subxt_core :: utils :: H256 , pub pov_hash : :: subxt :: ext :: subxt_core :: utils :: H256 , pub erasure_root : :: subxt :: ext :: subxt_core :: utils :: H256 , pub signature : runtime_types :: polkadot_primitives :: v6 :: collator_app :: Signature , pub para_head : :: subxt :: ext :: subxt_core :: utils :: H256 , pub validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } + pub struct CandidateDescriptor < _0 > { pub para_id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , pub relay_parent : _0 , pub collator : runtime_types :: polkadot_primitives :: v7 :: collator_app :: Public , pub persisted_validation_data_hash : :: subxt :: ext :: subxt_core :: utils :: H256 , pub pov_hash : :: subxt :: ext :: subxt_core :: utils :: H256 , pub erasure_root : :: subxt :: ext :: subxt_core :: utils :: H256 , pub signature : runtime_types :: polkadot_primitives :: v7 :: collator_app :: Signature , pub para_head : :: subxt :: ext :: subxt_core :: utils :: H256 , pub validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, @@ -52967,23 +62520,23 @@ pub mod api { pub enum CandidateEvent<_0> { #[codec(index = 0)] CandidateBacked( - runtime_types::polkadot_primitives::v6::CandidateReceipt<_0>, + runtime_types::polkadot_primitives::v7::CandidateReceipt<_0>, runtime_types::polkadot_parachain_primitives::primitives::HeadData, - runtime_types::polkadot_primitives::v6::CoreIndex, - runtime_types::polkadot_primitives::v6::GroupIndex, + runtime_types::polkadot_primitives::v7::CoreIndex, + runtime_types::polkadot_primitives::v7::GroupIndex, ), #[codec(index = 1)] CandidateIncluded( - runtime_types::polkadot_primitives::v6::CandidateReceipt<_0>, + runtime_types::polkadot_primitives::v7::CandidateReceipt<_0>, runtime_types::polkadot_parachain_primitives::primitives::HeadData, - runtime_types::polkadot_primitives::v6::CoreIndex, - runtime_types::polkadot_primitives::v6::GroupIndex, + runtime_types::polkadot_primitives::v7::CoreIndex, + runtime_types::polkadot_primitives::v7::GroupIndex, ), #[codec(index = 2)] CandidateTimedOut( - runtime_types::polkadot_primitives::v6::CandidateReceipt<_0>, + runtime_types::polkadot_primitives::v7::CandidateReceipt<_0>, runtime_types::polkadot_parachain_primitives::primitives::HeadData, - runtime_types::polkadot_primitives::v6::CoreIndex, + runtime_types::polkadot_primitives::v7::CoreIndex, ), } #[derive( @@ -53001,7 +62554,7 @@ pub mod api { crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] pub struct CandidateReceipt<_0> { - pub descriptor: runtime_types::polkadot_primitives::v6::CandidateDescriptor<_0>, + pub descriptor: runtime_types::polkadot_primitives::v7::CandidateDescriptor<_0>, pub commitments_hash: ::subxt::ext::subxt_core::utils::H256, } #[derive( @@ -53019,8 +62572,8 @@ pub mod api { crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] pub struct CommittedCandidateReceipt<_0> { - pub descriptor: runtime_types::polkadot_primitives::v6::CandidateDescriptor<_0>, - pub commitments: runtime_types::polkadot_primitives::v6::CandidateCommitments< + pub descriptor: runtime_types::polkadot_primitives::v7::CandidateDescriptor<_0>, + pub commitments: runtime_types::polkadot_primitives::v7::CandidateCommitments< ::core::primitive::u32, >, } @@ -53056,9 +62609,9 @@ pub mod api { )] pub enum CoreState<_0, _1> { #[codec(index = 0)] - Occupied(runtime_types::polkadot_primitives::v6::OccupiedCore<_0, _1>), + Occupied(runtime_types::polkadot_primitives::v7::OccupiedCore<_0, _1>), #[codec(index = 1)] - Scheduled(runtime_types::polkadot_primitives::v6::ScheduledCore), + Scheduled(runtime_types::polkadot_primitives::v7::ScheduledCore), #[codec(index = 2)] Free, } @@ -53104,9 +62657,9 @@ pub mod api { )] pub enum DisputeStatement { #[codec(index = 0)] - Valid(runtime_types::polkadot_primitives::v6::ValidDisputeStatementKind), + Valid(runtime_types::polkadot_primitives::v7::ValidDisputeStatementKind), #[codec(index = 1)] - Invalid(runtime_types::polkadot_primitives::v6::InvalidDisputeStatementKind), + Invalid(runtime_types::polkadot_primitives::v7::InvalidDisputeStatementKind), } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -53126,9 +62679,9 @@ pub mod api { pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, pub session: ::core::primitive::u32, pub statements: ::subxt::ext::subxt_core::alloc::vec::Vec<( - runtime_types::polkadot_primitives::v6::DisputeStatement, - runtime_types::polkadot_primitives::v6::ValidatorIndex, - runtime_types::polkadot_primitives::v6::validator_app::Signature, + runtime_types::polkadot_primitives::v7::DisputeStatement, + runtime_types::polkadot_primitives::v7::ValidatorIndex, + runtime_types::polkadot_primitives::v7::validator_app::Signature, )>, } #[derive( @@ -53218,18 +62771,18 @@ pub mod api { )] pub struct InherentData<_0> { pub bitfields: ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::signed::UncheckedSigned< - runtime_types::polkadot_primitives::v6::AvailabilityBitfield, - runtime_types::polkadot_primitives::v6::AvailabilityBitfield, + runtime_types::polkadot_primitives::v7::signed::UncheckedSigned< + runtime_types::polkadot_primitives::v7::AvailabilityBitfield, + runtime_types::polkadot_primitives::v7::AvailabilityBitfield, >, >, pub backed_candidates: ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::BackedCandidate< + runtime_types::polkadot_primitives::v7::BackedCandidate< ::subxt::ext::subxt_core::utils::H256, >, >, pub disputes: ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::DisputeStatementSet, + runtime_types::polkadot_primitives::v7::DisputeStatementSet, >, pub parent_header: _0, } @@ -53267,21 +62820,21 @@ pub mod api { )] pub struct OccupiedCore<_0, _1> { pub next_up_on_available: ::core::option::Option< - runtime_types::polkadot_primitives::v6::ScheduledCore, + runtime_types::polkadot_primitives::v7::ScheduledCore, >, pub occupied_since: _1, pub time_out_at: _1, pub next_up_on_time_out: ::core::option::Option< - runtime_types::polkadot_primitives::v6::ScheduledCore, + runtime_types::polkadot_primitives::v7::ScheduledCore, >, pub availability: ::subxt::ext::subxt_core::utils::bits::DecodedBits< ::core::primitive::u8, ::subxt::ext::subxt_core::utils::bits::Lsb0, >, - pub group_responsible: runtime_types::polkadot_primitives::v6::GroupIndex, + pub group_responsible: runtime_types::polkadot_primitives::v7::GroupIndex, pub candidate_hash: runtime_types::polkadot_core_primitives::CandidateHash, pub candidate_descriptor: - runtime_types::polkadot_primitives::v6::CandidateDescriptor<_0>, + runtime_types::polkadot_primitives::v7::CandidateDescriptor<_0>, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -53340,7 +62893,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct PvfCheckStatement { pub accept : :: core :: primitive :: bool , pub subject : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , pub session_index : :: core :: primitive :: u32 , pub validator_index : runtime_types :: polkadot_primitives :: v6 :: ValidatorIndex , } + pub struct PvfCheckStatement { pub accept : :: core :: primitive :: bool , pub subject : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , pub session_index : :: core :: primitive :: u32 , pub validator_index : runtime_types :: polkadot_primitives :: v7 :: ValidatorIndex , } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, @@ -53355,7 +62908,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub enum PvfExecTimeoutKind { + pub enum PvfExecKind { #[codec(index = 0)] Backing, #[codec(index = 1)] @@ -53375,11 +62928,11 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub enum PvfPrepTimeoutKind { + pub enum PvfPrepKind { #[codec(index = 0)] Precheck, #[codec(index = 1)] - Lenient, + Prepare, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -53398,7 +62951,7 @@ pub mod api { pub struct ScheduledCore { pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, pub collator: ::core::option::Option< - runtime_types::polkadot_primitives::v6::collator_app::Public, + runtime_types::polkadot_primitives::v7::collator_app::Public, >, } #[derive( @@ -53419,14 +62972,14 @@ pub mod api { pub session: ::core::primitive::u32, pub backing_validators_per_candidate: ::subxt::ext::subxt_core::alloc::vec::Vec<( - runtime_types::polkadot_primitives::v6::CandidateReceipt<_0>, + runtime_types::polkadot_primitives::v7::CandidateReceipt<_0>, ::subxt::ext::subxt_core::alloc::vec::Vec<( - runtime_types::polkadot_primitives::v6::ValidatorIndex, - runtime_types::polkadot_primitives::v6::ValidityAttestation, + runtime_types::polkadot_primitives::v7::ValidatorIndex, + runtime_types::polkadot_primitives::v7::ValidityAttestation, )>, )>, pub disputes: ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::DisputeStatementSet, + runtime_types::polkadot_primitives::v7::DisputeStatementSet, >, } #[derive( @@ -53445,24 +62998,24 @@ pub mod api { )] pub struct SessionInfo { pub active_validator_indices: ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::ValidatorIndex, + runtime_types::polkadot_primitives::v7::ValidatorIndex, >, pub random_seed: [::core::primitive::u8; 32usize], pub dispute_period: ::core::primitive::u32, - pub validators: runtime_types::polkadot_primitives::v6::IndexedVec1< - runtime_types::polkadot_primitives::v6::ValidatorIndex, - runtime_types::polkadot_primitives::v6::validator_app::Public, + pub validators: runtime_types::polkadot_primitives::v7::IndexedVec1< + runtime_types::polkadot_primitives::v7::ValidatorIndex, + runtime_types::polkadot_primitives::v7::validator_app::Public, >, pub discovery_keys: ::subxt::ext::subxt_core::alloc::vec::Vec< runtime_types::sp_authority_discovery::app::Public, >, pub assignment_keys: ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::assignment_app::Public, + runtime_types::polkadot_primitives::v7::assignment_app::Public, >, - pub validator_groups: runtime_types::polkadot_primitives::v6::IndexedVec2< - runtime_types::polkadot_primitives::v6::GroupIndex, + pub validator_groups: runtime_types::polkadot_primitives::v7::IndexedVec2< + runtime_types::polkadot_primitives::v7::GroupIndex, ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::ValidatorIndex, + runtime_types::polkadot_primitives::v7::ValidatorIndex, >, >, pub n_cores: ::core::primitive::u32, @@ -53533,6 +63086,12 @@ pub mod api { BackingValid(::subxt::ext::subxt_core::utils::H256), #[codec(index = 3)] ApprovalChecking, + #[codec(index = 4)] + ApprovalCheckingMultipleCandidates( + ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::polkadot_core_primitives::CandidateHash, + >, + ), } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, @@ -53566,9 +63125,41 @@ pub mod api { )] pub enum ValidityAttestation { #[codec(index = 1)] - Implicit(runtime_types::polkadot_primitives::v6::validator_app::Signature), + Implicit(runtime_types::polkadot_primitives::v7::validator_app::Signature), #[codec(index = 2)] - Explicit(runtime_types::polkadot_primitives::v6::validator_app::Signature), + Explicit(runtime_types::polkadot_primitives::v7::validator_app::Signature), + } + } + pub mod vstaging { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct SchedulerParams<_0> { + pub group_rotation_frequency: _0, + pub paras_availability_period: _0, + pub max_validators_per_core: ::core::option::Option<_0>, + pub lookahead: ::core::primitive::u32, + pub num_cores: ::core::primitive::u32, + pub max_availability_timeouts: ::core::primitive::u32, + pub on_demand_queue_max_size: ::core::primitive::u32, + pub on_demand_target_queue_utilization: + runtime_types::sp_arithmetic::per_things::Perbill, + pub on_demand_fee_variability: + runtime_types::sp_arithmetic::per_things::Perbill, + pub on_demand_base_fee: ::core::primitive::u128, + pub ttl: _0, } } } @@ -53594,7 +63185,7 @@ pub mod api { )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::assign_perm_parachain_slot`]."] assign_perm_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 1)] # [doc = "See [`Pallet::assign_temp_parachain_slot`]."] assign_temp_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , lease_period_start : runtime_types :: polkadot_runtime_common :: assigned_slots :: SlotLeasePeriodStart , } , # [codec (index = 2)] # [doc = "See [`Pallet::unassign_parachain_slot`]."] unassign_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "See [`Pallet::set_max_permanent_slots`]."] set_max_permanent_slots { slots : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::set_max_temporary_slots`]."] set_max_temporary_slots { slots : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "Assign a permanent parachain slot and immediately create a lease for it."] assign_perm_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 1)] # [doc = "Assign a temporary parachain slot. The function tries to create a lease for it"] # [doc = "immediately if `SlotLeasePeriodStart::Current` is specified, and if the number"] # [doc = "of currently active temporary slots is below `MaxTemporarySlotPerLeasePeriod`."] assign_temp_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , lease_period_start : runtime_types :: polkadot_runtime_common :: assigned_slots :: SlotLeasePeriodStart , } , # [codec (index = 2)] # [doc = "Unassign a permanent or temporary parachain slot"] unassign_parachain_slot { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "Sets the storage value [`MaxPermanentSlots`]."] set_max_permanent_slots { slots : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "Sets the storage value [`MaxTemporarySlots`]."] set_max_temporary_slots { slots : :: core :: primitive :: u32 , } , } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, @@ -53736,7 +63327,11 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::new_auction`]."] + #[doc = "Create a new auction."] + #[doc = ""] + #[doc = "This can only happen when there isn't already an auction in progress and may only be"] + #[doc = "called by the root origin. Accepts the `duration` of this auction and the"] + #[doc = "`lease_period_index` of the initial lease period of the four that are to be auctioned."] new_auction { #[codec(compact)] duration: ::core::primitive::u32, @@ -53744,7 +63339,22 @@ pub mod api { lease_period_index: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "See [`Pallet::bid`]."] + #[doc = "Make a new bid from an account (including a parachain account) for deploying a new"] + #[doc = "parachain."] + #[doc = ""] + #[doc = "Multiple simultaneous bids from the same bidder are allowed only as long as all active"] + #[doc = "bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted."] + #[doc = ""] + #[doc = "- `sub` is the sub-bidder ID, allowing for multiple competing bids to be made by (and"] + #[doc = "funded by) the same account."] + #[doc = "- `auction_index` is the index of the auction to bid on. Should just be the present"] + #[doc = "value of `AuctionCounter`."] + #[doc = "- `first_slot` is the first lease period index of the range to bid on. This is the"] + #[doc = "absolute lease period index value, not an auction-specific offset."] + #[doc = "- `last_slot` is the last lease period index of the range to bid on. This is the"] + #[doc = "absolute lease period index value, not an auction-specific offset."] + #[doc = "- `amount` is the amount to bid to be held as deposit for the parachain should the"] + #[doc = "bid win. This amount is held throughout the range."] bid { #[codec(compact)] para: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -53758,7 +63368,9 @@ pub mod api { amount: ::core::primitive::u128, }, #[codec(index = 2)] - #[doc = "See [`Pallet::cancel_auction`]."] + #[doc = "Cancel an in-progress auction."] + #[doc = ""] + #[doc = "Can only be called by Root origin."] cancel_auction, } #[derive( @@ -53890,14 +63502,51 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::claim`]."] + #[doc = "Make a claim to collect your DOTs."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to claim is deemed valid if the signature provided matches"] + #[doc = "the expected signed message of:"] + #[doc = ""] + #[doc = "> Ethereum Signed Message:"] + #[doc = "> (configured prefix string)(address)"] + #[doc = ""] + #[doc = "and `address` matches the `dest` account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `dest`: The destination account to payout the claim."] + #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] + #[doc = " described above."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to validate unsigned `claim` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] claim { dest: ::subxt::ext::subxt_core::utils::AccountId32, ethereum_signature: runtime_types::polkadot_runtime_common::claims::EcdsaSignature, }, #[codec(index = 1)] - #[doc = "See [`Pallet::mint_claim`]."] + #[doc = "Mint a new claim to collect DOTs."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _Root_."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `who`: The Ethereum address allowed to collect this claim."] + #[doc = "- `value`: The number of DOTs that will be claimed."] + #[doc = "- `vesting_schedule`: An optional vesting schedule for these DOTs."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "We assume worst case that both vesting and statement is being inserted."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] mint_claim { who: runtime_types::polkadot_runtime_common::claims::EthereumAddress, value: ::core::primitive::u128, @@ -53911,7 +63560,33 @@ pub mod api { >, }, #[codec(index = 2)] - #[doc = "See [`Pallet::claim_attest`]."] + #[doc = "Make a claim to collect your DOTs by signing a statement."] + #[doc = ""] + #[doc = "The dispatch origin for this call must be _None_."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to `claim_attest` is deemed valid if the signature provided matches"] + #[doc = "the expected signed message of:"] + #[doc = ""] + #[doc = "> Ethereum Signed Message:"] + #[doc = "> (configured prefix string)(address)(statement)"] + #[doc = ""] + #[doc = "and `address` matches the `dest` account; the `statement` must match that which is"] + #[doc = "expected according to your purchase arrangement."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `dest`: The destination account to payout the claim."] + #[doc = "- `ethereum_signature`: The signature of an ethereum signed message matching the format"] + #[doc = " described above."] + #[doc = "- `statement`: The identity of the statement which is being attested to in the"] + #[doc = " signature."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to validate unsigned `claim_attest` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] claim_attest { dest: ::subxt::ext::subxt_core::utils::AccountId32, ethereum_signature: @@ -53920,13 +63595,30 @@ pub mod api { ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 3)] - #[doc = "See [`Pallet::attest`]."] + #[doc = "Attest to a statement, needed to finalize the claims process."] + #[doc = ""] + #[doc = "WARNING: Insecure unless your chain includes `PrevalidateAttests` as a"] + #[doc = "`SignedExtension`."] + #[doc = ""] + #[doc = "Unsigned Validation:"] + #[doc = "A call to attest is deemed valid if the sender has a `Preclaim` registered"] + #[doc = "and provides a `statement` which is expected for the account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `statement`: The identity of the statement which is being attested to in the"] + #[doc = " signature."] + #[doc = ""] + #[doc = ""] + #[doc = "The weight of this call is invariant over the input parameters."] + #[doc = "Weight includes logic to do pre-validation on `attest` call."] + #[doc = ""] + #[doc = "Total Complexity: O(1)"] + #[doc = ""] attest { statement: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 4)] - #[doc = "See [`Pallet::move_claim`]."] move_claim { old: runtime_types::polkadot_runtime_common::claims::EthereumAddress, new: runtime_types::polkadot_runtime_common::claims::EthereumAddress, @@ -54069,7 +63761,11 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::create`]."] + #[doc = "Create a new crowdloaning campaign for a parachain slot with the given lease period"] + #[doc = "range."] + #[doc = ""] + #[doc = "This applies a lock to your parachain configuration, ensuring that it cannot be changed"] + #[doc = "by the parachain manager."] create { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -54085,7 +63781,8 @@ pub mod api { ::core::option::Option, }, #[codec(index = 1)] - #[doc = "See [`Pallet::contribute`]."] + #[doc = "Contribute to a crowd sale. This will transfer some balance over to fund a parachain"] + #[doc = "slot. It will be withdrawable when the crowdloan has ended and the funds are unused."] contribute { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -54095,26 +63792,48 @@ pub mod api { ::core::option::Option, }, #[codec(index = 2)] - #[doc = "See [`Pallet::withdraw`]."] + #[doc = "Withdraw full balance of a specific contributor."] + #[doc = ""] + #[doc = "Origin must be signed, but can come from anyone."] + #[doc = ""] + #[doc = "The fund must be either in, or ready for, retirement. For a fund to be *in* retirement,"] + #[doc = "then the retirement flag must be set. For a fund to be ready for retirement, then:"] + #[doc = "- it must not already be in retirement;"] + #[doc = "- the amount of raised funds must be bigger than the _free_ balance of the account;"] + #[doc = "- and either:"] + #[doc = " - the block number must be at least `end`; or"] + #[doc = " - the current lease period must be greater than the fund's `last_period`."] + #[doc = ""] + #[doc = "In this case, the fund's retirement flag is set and its `end` is reset to the current"] + #[doc = "block number."] + #[doc = ""] + #[doc = "- `who`: The account whose contribution should be withdrawn."] + #[doc = "- `index`: The parachain to whose crowdloan the contribution was made."] withdraw { who: ::subxt::ext::subxt_core::utils::AccountId32, #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 3)] - #[doc = "See [`Pallet::refund`]."] + #[doc = "Automatically refund contributors of an ended crowdloan."] + #[doc = "Due to weight restrictions, this function may need to be called multiple"] + #[doc = "times to fully refund all users. We will refund `RemoveKeysLimit` users at a time."] + #[doc = ""] + #[doc = "Origin must be signed, but can come from anyone."] refund { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 4)] - #[doc = "See [`Pallet::dissolve`]."] + #[doc = "Remove a fund after the retirement period has ended and all funds have been returned."] dissolve { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 5)] - #[doc = "See [`Pallet::edit`]."] + #[doc = "Edit the configuration for an in-progress crowdloan."] + #[doc = ""] + #[doc = "Can only be called by Root origin."] edit { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -54130,18 +63849,24 @@ pub mod api { ::core::option::Option, }, #[codec(index = 6)] - #[doc = "See [`Pallet::add_memo`]."] + #[doc = "Add an optional memo to an existing crowdloan contribution."] + #[doc = ""] + #[doc = "Origin must be Signed, and the user must have contributed to the crowdloan."] add_memo { index: runtime_types::polkadot_parachain_primitives::primitives::Id, memo: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, }, #[codec(index = 7)] - #[doc = "See [`Pallet::poke`]."] + #[doc = "Poke the fund into `NewRaise`"] + #[doc = ""] + #[doc = "Origin must be Signed, and the fund has non-zero raise."] poke { index: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 8)] - #[doc = "See [`Pallet::contribute_all`]."] + #[doc = "Contribute your entire balance to a crowd sale. This will transfer the entire balance of"] + #[doc = "a user over to fund a parachain slot. It will be withdrawable when the crowdloan has"] + #[doc = "ended and the funds are unused."] contribute_all { #[codec(compact)] index: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -54367,6 +64092,71 @@ pub mod api { Ending(_0), } } + pub mod identity_migrator { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + #[codec(index = 0)] + #[doc = "Reap the `IdentityInfo` of `who` from the Identity pallet of `T`, unreserving any"] + #[doc = "deposits held and removing storage items associated with `who`."] + reap_identity { + who: ::subxt::ext::subxt_core::utils::AccountId32, + }, + #[codec(index = 1)] + #[doc = "Update the deposit of `who`. Meant to be called by the system with an XCM `Transact`"] + #[doc = "Instruction."] + poke_deposit { + who: ::subxt::ext::subxt_core::utils::AccountId32, + }, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "The identity and all sub accounts were reaped for `who`."] + IdentityReaped { + who: ::subxt::ext::subxt_core::utils::AccountId32, + }, + #[codec(index = 1)] + #[doc = "The deposits held for `who` were updated. `identity` is the new deposit held for"] + #[doc = "identity info, and `subs` is the new deposit held for the sub-accounts."] + DepositUpdated { + who: ::subxt::ext::subxt_core::utils::AccountId32, + identity: ::core::primitive::u128, + subs: ::core::primitive::u128, + }, + } + } + } pub mod impls { use super::runtime_types; #[derive( @@ -54389,6 +64179,11 @@ pub mod api { location: runtime_types::staging_xcm::v3::multilocation::MultiLocation, asset_id: runtime_types::xcm::v3::multiasset::AssetId, }, + #[codec(index = 4)] + V4 { + location: runtime_types::staging_xcm::v4::location::Location, + asset_id: runtime_types::staging_xcm::v4::asset::AssetId, + }, } } pub mod paras_registrar { @@ -54411,7 +64206,7 @@ pub mod api { )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::register`]."] register { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "See [`Pallet::force_register`]."] force_register { who : :: subxt :: ext :: subxt_core :: utils :: AccountId32 , deposit : :: core :: primitive :: u128 , id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 2)] # [doc = "See [`Pallet::deregister`]."] deregister { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "See [`Pallet::swap`]."] swap { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , other : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 4)] # [doc = "See [`Pallet::remove_lock`]."] remove_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "See [`Pallet::reserve`]."] reserve , # [codec (index = 6)] # [doc = "See [`Pallet::add_lock`]."] add_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 7)] # [doc = "See [`Pallet::schedule_code_upgrade`]."] schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 8)] # [doc = "See [`Pallet::set_current_head`]."] set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , } + # [codec (index = 0)] # [doc = "Register head data and validation code for a reserved Para Id."] # [doc = ""] # [doc = "## Arguments"] # [doc = "- `origin`: Must be called by a `Signed` origin."] # [doc = "- `id`: The para ID. Must be owned/managed by the `origin` signing account."] # [doc = "- `genesis_head`: The genesis head data of the parachain/thread."] # [doc = "- `validation_code`: The initial validation code of the parachain/thread."] # [doc = ""] # [doc = "## Deposits/Fees"] # [doc = "The account with the originating signature must reserve a deposit."] # [doc = ""] # [doc = "The deposit is required to cover the costs associated with storing the genesis head"] # [doc = "data and the validation code."] # [doc = "This accounts for the potential to store validation code of a size up to the"] # [doc = "`max_code_size`, as defined in the configuration pallet"] # [doc = ""] # [doc = "Anything already reserved previously for this para ID is accounted for."] # [doc = ""] # [doc = "## Events"] # [doc = "The `Registered` event is emitted in case of success."] register { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "Force the registration of a Para Id on the relay chain."] # [doc = ""] # [doc = "This function must be called by a Root origin."] # [doc = ""] # [doc = "The deposit taken can be specified for this registration. Any `ParaId`"] # [doc = "can be registered, including sub-1000 IDs which are System Parachains."] force_register { who : :: subxt :: ext :: subxt_core :: utils :: AccountId32 , deposit : :: core :: primitive :: u128 , id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , genesis_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 2)] # [doc = "Deregister a Para Id, freeing all data and returning any deposit."] # [doc = ""] # [doc = "The caller must be Root, the `para` owner, or the `para` itself. The para must be an"] # [doc = "on-demand parachain."] deregister { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "Swap a lease holding parachain with another parachain, either on-demand or lease"] # [doc = "holding."] # [doc = ""] # [doc = "The origin must be Root, the `para` owner, or the `para` itself."] # [doc = ""] # [doc = "The swap will happen only if there is already an opposite swap pending. If there is not,"] # [doc = "the swap will be stored in the pending swaps map, ready for a later confirmatory swap."] # [doc = ""] # [doc = "The `ParaId`s remain mapped to the same head data and code so external code can rely on"] # [doc = "`ParaId` to be a long-term identifier of a notional \"parachain\". However, their"] # [doc = "scheduling info (i.e. whether they're an on-demand parachain or lease holding"] # [doc = "parachain), auction information and the auction deposit are switched."] swap { id : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , other : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 4)] # [doc = "Remove a manager lock from a para. This will allow the manager of a"] # [doc = "previously locked para to deregister or swap a para without using governance."] # [doc = ""] # [doc = "Can only be called by the Root origin or the parachain."] remove_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "Reserve a Para Id on the relay chain."] # [doc = ""] # [doc = "This function will reserve a new Para Id to be owned/managed by the origin account."] # [doc = "The origin account is able to register head data and validation code using `register` to"] # [doc = "create an on-demand parachain. Using the Slots pallet, an on-demand parachain can then"] # [doc = "be upgraded to a lease holding parachain."] # [doc = ""] # [doc = "## Arguments"] # [doc = "- `origin`: Must be called by a `Signed` origin. Becomes the manager/owner of the new"] # [doc = " para ID."] # [doc = ""] # [doc = "## Deposits/Fees"] # [doc = "The origin must reserve a deposit of `ParaDeposit` for the registration."] # [doc = ""] # [doc = "## Events"] # [doc = "The `Reserved` event is emitted in case of success, which provides the ID reserved for"] # [doc = "use."] reserve , # [codec (index = 6)] # [doc = "Add a manager lock from a para. This will prevent the manager of a"] # [doc = "para to deregister or swap a para."] # [doc = ""] # [doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] # [doc = "unlocked."] add_lock { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 7)] # [doc = "Schedule a parachain upgrade."] # [doc = ""] # [doc = "This will kick off a check of `new_code` by all validators. After the majority of the"] # [doc = "validators have reported on the validity of the code, the code will either be enacted"] # [doc = "or the upgrade will be rejected. If the code will be enacted, the current code of the"] # [doc = "parachain will be overwritten directly. This means that any PoV will be checked by this"] # [doc = "new code. The parachain itself will not be informed explictely that the validation code"] # [doc = "has changed."] # [doc = ""] # [doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] # [doc = "unlocked."] schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 8)] # [doc = "Set the parachain's current head."] # [doc = ""] # [doc = "Can be called by Root, the parachain, or the parachain manager if the parachain is"] # [doc = "unlocked."] set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, @@ -54466,8 +64261,8 @@ pub mod api { #[doc = "The ID given for registration has not been reserved."] NotReserved, #[codec(index = 12)] - #[doc = "Registering parachain with empty code is not allowed."] - EmptyCode, + #[doc = "The validation code is invalid."] + InvalidCode, #[codec(index = 13)] #[doc = "Cannot perform a parachain slot / lifecycle swap. Check that the state of both paras"] #[doc = "are correct for the swap to work."] @@ -54551,29 +64346,36 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::sudo_schedule_para_initialize`]."] + #[doc = "Schedule a para to be initialized at the start of the next session."] + #[doc = ""] + #[doc = "This should only be used for TESTING and not on PRODUCTION chains. It automatically"] + #[doc = "assigns Coretime to the chain and increases the number of cores. Thus, there is no"] + #[doc = "running coretime chain required."] sudo_schedule_para_initialize { id: runtime_types::polkadot_parachain_primitives::primitives::Id, genesis: runtime_types::polkadot_runtime_parachains::paras::ParaGenesisArgs, }, #[codec(index = 1)] - #[doc = "See [`Pallet::sudo_schedule_para_cleanup`]."] + #[doc = "Schedule a para to be cleaned up at the start of the next session."] sudo_schedule_para_cleanup { id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 2)] - #[doc = "See [`Pallet::sudo_schedule_parathread_upgrade`]."] + #[doc = "Upgrade a parathread (on-demand parachain) to a lease holding parachain"] sudo_schedule_parathread_upgrade { id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 3)] - #[doc = "See [`Pallet::sudo_schedule_parachain_downgrade`]."] + #[doc = "Downgrade a lease holding parachain to an on-demand parachain"] sudo_schedule_parachain_downgrade { id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 4)] - #[doc = "See [`Pallet::sudo_queue_downward_xcm`]."] + #[doc = "Send a downward XCM to the given para."] + #[doc = ""] + #[doc = "The given parachain should exist and the payload should not exceed the preconfigured"] + #[doc = "size `config.max_downward_message_size`."] sudo_queue_downward_xcm { id: runtime_types::polkadot_parachain_primitives::primitives::Id, xcm: ::subxt::ext::subxt_core::alloc::boxed::Box< @@ -54581,7 +64383,10 @@ pub mod api { >, }, #[codec(index = 5)] - #[doc = "See [`Pallet::sudo_establish_hrmp_channel`]."] + #[doc = "Forcefully establish a channel from the sender to the recipient."] + #[doc = ""] + #[doc = "This is equivalent to sending an `Hrmp::hrmp_init_open_channel` extrinsic followed by"] + #[doc = "`Hrmp::hrmp_accept_open_channel`."] sudo_establish_hrmp_channel { sender: runtime_types::polkadot_parachain_primitives::primitives::Id, recipient: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -54630,6 +64435,9 @@ pub mod api { #[codec(index = 7)] #[doc = "Cannot downgrade lease holding parachain to on-demand."] CannotDowngrade, + #[codec(index = 8)] + #[doc = "There are more cores than supported by the runtime."] + TooManyCores, } } } @@ -54654,7 +64462,10 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::force_lease`]."] + #[doc = "Just a connect into the `lease_out` call, in case Root wants to force some lease to"] + #[doc = "happen independently of any other on-chain mechanism to use it."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] force_lease { para: runtime_types::polkadot_parachain_primitives::primitives::Id, leaser: ::subxt::ext::subxt_core::utils::AccountId32, @@ -54663,12 +64474,20 @@ pub mod api { period_count: ::core::primitive::u32, }, #[codec(index = 1)] - #[doc = "See [`Pallet::clear_all_leases`]."] + #[doc = "Clear all leases for a Para Id, refunding any deposits back to the original owners."] + #[doc = ""] + #[doc = "The dispatch origin for this call must match `T::ForceOrigin`."] clear_all_leases { para: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 2)] - #[doc = "See [`Pallet::trigger_onboard`]."] + #[doc = "Try to onboard a parachain that has a lease for the current lease period."] + #[doc = ""] + #[doc = "This function can be useful if there was some state issue with a para that should"] + #[doc = "have onboarded, but was unable to. As long as they have a lease period, we can"] + #[doc = "let them onboard from here."] + #[doc = ""] + #[doc = "Origin must be signed, but can be called by anyone."] trigger_onboard { para: runtime_types::polkadot_parachain_primitives::primitives::Id, }, @@ -54735,6 +64554,153 @@ pub mod api { } pub mod polkadot_runtime_parachains { use super::runtime_types; + pub mod assigner_coretime { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + AssignmentsEmpty, + #[codec(index = 1)] + #[doc = "Assignments together exceeded 57600."] + OverScheduled, + #[codec(index = 2)] + #[doc = "Assignments together less than 57600"] + UnderScheduled, + #[codec(index = 3)] + #[doc = "assign_core is only allowed to append new assignments at the end of already existing"] + #[doc = "ones."] + DisallowedInsert, + #[codec(index = 4)] + #[doc = "Tried to insert a schedule for the same core and block number as an existing schedule"] + DuplicateInsert, + #[codec(index = 5)] + #[doc = "Tried to add an unsorted set of assignments"] + AssignmentsNotSorted, + } + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct AssignmentState { + pub ratio: + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + pub remaining: + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct CoreDescriptor < _0 > { pub queue : :: core :: option :: Option < runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: QueueDescriptor < _0 > > , pub current_work : :: core :: option :: Option < runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: WorkState < _0 > > , } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct PartsOf57600(pub ::core::primitive::u16); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct QueueDescriptor<_0> { + pub first: _0, + pub last: _0, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct Schedule<_0> { + pub assignments: ::subxt::ext::subxt_core::alloc::vec::Vec<( + runtime_types::pallet_broker::coretime_interface::CoreAssignment, + runtime_types::polkadot_runtime_parachains::assigner_coretime::PartsOf57600, + )>, + pub end_hint: ::core::option::Option<_0>, + pub next_schedule: ::core::option::Option<_0>, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct WorkState < _0 > { pub assignments : :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < (runtime_types :: pallet_broker :: coretime_interface :: CoreAssignment , runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: AssignmentState ,) > , pub end_hint : :: core :: option :: Option < _0 > , pub pos : :: core :: primitive :: u16 , pub step : runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: PartsOf57600 , } + } pub mod assigner_on_demand { use super::runtime_types; pub mod pallet { @@ -54756,13 +64722,43 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::place_order_allow_death`]."] + #[doc = "Create a single on demand core order."] + #[doc = "Will use the spot price for the current block and will reap the account if needed."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] + #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] + #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] + #[doc = ""] + #[doc = "Errors:"] + #[doc = "- `InsufficientBalance`: from the Currency implementation"] + #[doc = "- `InvalidParaId`"] + #[doc = "- `QueueFull`"] + #[doc = "- `SpotPriceHigherThanMaxAmount`"] + #[doc = ""] + #[doc = "Events:"] + #[doc = "- `SpotOrderPlaced`"] place_order_allow_death { max_amount: ::core::primitive::u128, para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, }, #[codec(index = 1)] - #[doc = "See [`Pallet::place_order_keep_alive`]."] + #[doc = "Same as the [`place_order_allow_death`](Self::place_order_allow_death) call , but with a"] + #[doc = "check that placing the order will not reap the account."] + #[doc = ""] + #[doc = "Parameters:"] + #[doc = "- `origin`: The sender of the call, funds will be withdrawn from this account."] + #[doc = "- `max_amount`: The maximum balance to withdraw from the origin to place an order."] + #[doc = "- `para_id`: A `ParaId` the origin wants to provide blockspace for."] + #[doc = ""] + #[doc = "Errors:"] + #[doc = "- `InsufficientBalance`: from the Currency implementation"] + #[doc = "- `InvalidParaId`"] + #[doc = "- `QueueFull`"] + #[doc = "- `SpotPriceHigherThanMaxAmount`"] + #[doc = ""] + #[doc = "Events:"] + #[doc = "- `SpotOrderPlaced`"] place_order_keep_alive { max_amount: ::core::primitive::u128, para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, @@ -54785,20 +64781,12 @@ pub mod api { #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] - #[doc = "The `ParaId` supplied to the `place_order` call is not a valid `ParaThread`, making the"] - #[doc = "call is invalid."] - InvalidParaId, - #[codec(index = 1)] #[doc = "The order queue is full, `place_order` will not continue."] QueueFull, - #[codec(index = 2)] + #[codec(index = 1)] #[doc = "The current spot price is higher than the max amount specified in the `place_order`"] #[doc = "call, making it invalid."] SpotPriceHigherThanMaxAmount, - #[codec(index = 3)] - #[doc = "There are no on demand cores available. `place_order` will not add anything to the"] - #[doc = "queue."] - NoOnDemandCores, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -54844,9 +64832,75 @@ pub mod api { crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] pub struct CoreAffinityCount { - pub core_idx: runtime_types::polkadot_primitives::v6::CoreIndex, + pub core_index: runtime_types::polkadot_primitives::v7::CoreIndex, pub count: ::core::primitive::u32, } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct EnqueuedOrder { + pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub idx: + runtime_types::polkadot_runtime_parachains::assigner_on_demand::QueueIndex, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct QueueIndex(pub ::core::primitive::u32); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct QueueStatusType { pub traffic : runtime_types :: sp_arithmetic :: fixed_point :: FixedU128 , pub next_index : runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: QueueIndex , pub smallest_index : runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: QueueIndex , pub freed_indices : :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < runtime_types :: polkadot_runtime_parachains :: assigner_on_demand :: ReverseQueueIndex > , } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: CompactAs, + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct ReverseQueueIndex(pub ::core::primitive::u32); } pub mod configuration { use super::runtime_types; @@ -54868,7 +64922,7 @@ pub mod api { )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::set_validation_upgrade_cooldown`]."] set_validation_upgrade_cooldown { new : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::set_validation_upgrade_delay`]."] set_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 2)] # [doc = "See [`Pallet::set_code_retention_period`]."] set_code_retention_period { new : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "See [`Pallet::set_max_code_size`]."] set_max_code_size { new : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::set_max_pov_size`]."] set_max_pov_size { new : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "See [`Pallet::set_max_head_data_size`]."] set_max_head_data_size { new : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "See [`Pallet::set_on_demand_cores`]."] set_on_demand_cores { new : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "See [`Pallet::set_on_demand_retries`]."] set_on_demand_retries { new : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "See [`Pallet::set_group_rotation_frequency`]."] set_group_rotation_frequency { new : :: core :: primitive :: u32 , } , # [codec (index = 9)] # [doc = "See [`Pallet::set_paras_availability_period`]."] set_paras_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 11)] # [doc = "See [`Pallet::set_scheduling_lookahead`]."] set_scheduling_lookahead { new : :: core :: primitive :: u32 , } , # [codec (index = 12)] # [doc = "See [`Pallet::set_max_validators_per_core`]."] set_max_validators_per_core { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 13)] # [doc = "See [`Pallet::set_max_validators`]."] set_max_validators { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 14)] # [doc = "See [`Pallet::set_dispute_period`]."] set_dispute_period { new : :: core :: primitive :: u32 , } , # [codec (index = 15)] # [doc = "See [`Pallet::set_dispute_post_conclusion_acceptance_period`]."] set_dispute_post_conclusion_acceptance_period { new : :: core :: primitive :: u32 , } , # [codec (index = 18)] # [doc = "See [`Pallet::set_no_show_slots`]."] set_no_show_slots { new : :: core :: primitive :: u32 , } , # [codec (index = 19)] # [doc = "See [`Pallet::set_n_delay_tranches`]."] set_n_delay_tranches { new : :: core :: primitive :: u32 , } , # [codec (index = 20)] # [doc = "See [`Pallet::set_zeroth_delay_tranche_width`]."] set_zeroth_delay_tranche_width { new : :: core :: primitive :: u32 , } , # [codec (index = 21)] # [doc = "See [`Pallet::set_needed_approvals`]."] set_needed_approvals { new : :: core :: primitive :: u32 , } , # [codec (index = 22)] # [doc = "See [`Pallet::set_relay_vrf_modulo_samples`]."] set_relay_vrf_modulo_samples { new : :: core :: primitive :: u32 , } , # [codec (index = 23)] # [doc = "See [`Pallet::set_max_upward_queue_count`]."] set_max_upward_queue_count { new : :: core :: primitive :: u32 , } , # [codec (index = 24)] # [doc = "See [`Pallet::set_max_upward_queue_size`]."] set_max_upward_queue_size { new : :: core :: primitive :: u32 , } , # [codec (index = 25)] # [doc = "See [`Pallet::set_max_downward_message_size`]."] set_max_downward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 27)] # [doc = "See [`Pallet::set_max_upward_message_size`]."] set_max_upward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 28)] # [doc = "See [`Pallet::set_max_upward_message_num_per_candidate`]."] set_max_upward_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 29)] # [doc = "See [`Pallet::set_hrmp_open_request_ttl`]."] set_hrmp_open_request_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 30)] # [doc = "See [`Pallet::set_hrmp_sender_deposit`]."] set_hrmp_sender_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 31)] # [doc = "See [`Pallet::set_hrmp_recipient_deposit`]."] set_hrmp_recipient_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 32)] # [doc = "See [`Pallet::set_hrmp_channel_max_capacity`]."] set_hrmp_channel_max_capacity { new : :: core :: primitive :: u32 , } , # [codec (index = 33)] # [doc = "See [`Pallet::set_hrmp_channel_max_total_size`]."] set_hrmp_channel_max_total_size { new : :: core :: primitive :: u32 , } , # [codec (index = 34)] # [doc = "See [`Pallet::set_hrmp_max_parachain_inbound_channels`]."] set_hrmp_max_parachain_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 36)] # [doc = "See [`Pallet::set_hrmp_channel_max_message_size`]."] set_hrmp_channel_max_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 37)] # [doc = "See [`Pallet::set_hrmp_max_parachain_outbound_channels`]."] set_hrmp_max_parachain_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 39)] # [doc = "See [`Pallet::set_hrmp_max_message_num_per_candidate`]."] set_hrmp_max_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 42)] # [doc = "See [`Pallet::set_pvf_voting_ttl`]."] set_pvf_voting_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 43)] # [doc = "See [`Pallet::set_minimum_validation_upgrade_delay`]."] set_minimum_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 44)] # [doc = "See [`Pallet::set_bypass_consistency_check`]."] set_bypass_consistency_check { new : :: core :: primitive :: bool , } , # [codec (index = 45)] # [doc = "See [`Pallet::set_async_backing_params`]."] set_async_backing_params { new : runtime_types :: polkadot_primitives :: v6 :: async_backing :: AsyncBackingParams , } , # [codec (index = 46)] # [doc = "See [`Pallet::set_executor_params`]."] set_executor_params { new : runtime_types :: polkadot_primitives :: v6 :: executor_params :: ExecutorParams , } , # [codec (index = 47)] # [doc = "See [`Pallet::set_on_demand_base_fee`]."] set_on_demand_base_fee { new : :: core :: primitive :: u128 , } , # [codec (index = 48)] # [doc = "See [`Pallet::set_on_demand_fee_variability`]."] set_on_demand_fee_variability { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 49)] # [doc = "See [`Pallet::set_on_demand_queue_max_size`]."] set_on_demand_queue_max_size { new : :: core :: primitive :: u32 , } , # [codec (index = 50)] # [doc = "See [`Pallet::set_on_demand_target_queue_utilization`]."] set_on_demand_target_queue_utilization { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 51)] # [doc = "See [`Pallet::set_on_demand_ttl`]."] set_on_demand_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 52)] # [doc = "See [`Pallet::set_minimum_backing_votes`]."] set_minimum_backing_votes { new : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "Set the validation upgrade cooldown."] set_validation_upgrade_cooldown { new : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "Set the validation upgrade delay."] set_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 2)] # [doc = "Set the acceptance period for an included candidate."] set_code_retention_period { new : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "Set the max validation code size for incoming upgrades."] set_max_code_size { new : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "Set the max POV block size for incoming upgrades."] set_max_pov_size { new : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "Set the max head data size for paras."] set_max_head_data_size { new : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "Set the number of coretime execution cores."] # [doc = ""] # [doc = "NOTE: that this configuration is managed by the coretime chain. Only manually change"] # [doc = "this, if you really know what you are doing!"] set_coretime_cores { new : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "Set the max number of times a claim may timeout on a core before it is abandoned"] set_max_availability_timeouts { new : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "Set the parachain validator-group rotation frequency"] set_group_rotation_frequency { new : :: core :: primitive :: u32 , } , # [codec (index = 9)] # [doc = "Set the availability period for paras."] set_paras_availability_period { new : :: core :: primitive :: u32 , } , # [codec (index = 11)] # [doc = "Set the scheduling lookahead, in expected number of blocks at peak throughput."] set_scheduling_lookahead { new : :: core :: primitive :: u32 , } , # [codec (index = 12)] # [doc = "Set the maximum number of validators to assign to any core."] set_max_validators_per_core { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 13)] # [doc = "Set the maximum number of validators to use in parachain consensus."] set_max_validators { new : :: core :: option :: Option < :: core :: primitive :: u32 > , } , # [codec (index = 14)] # [doc = "Set the dispute period, in number of sessions to keep for disputes."] set_dispute_period { new : :: core :: primitive :: u32 , } , # [codec (index = 15)] # [doc = "Set the dispute post conclusion acceptance period."] set_dispute_post_conclusion_acceptance_period { new : :: core :: primitive :: u32 , } , # [codec (index = 18)] # [doc = "Set the no show slots, in number of number of consensus slots."] # [doc = "Must be at least 1."] set_no_show_slots { new : :: core :: primitive :: u32 , } , # [codec (index = 19)] # [doc = "Set the total number of delay tranches."] set_n_delay_tranches { new : :: core :: primitive :: u32 , } , # [codec (index = 20)] # [doc = "Set the zeroth delay tranche width."] set_zeroth_delay_tranche_width { new : :: core :: primitive :: u32 , } , # [codec (index = 21)] # [doc = "Set the number of validators needed to approve a block."] set_needed_approvals { new : :: core :: primitive :: u32 , } , # [codec (index = 22)] # [doc = "Set the number of samples to do of the `RelayVRFModulo` approval assignment criterion."] set_relay_vrf_modulo_samples { new : :: core :: primitive :: u32 , } , # [codec (index = 23)] # [doc = "Sets the maximum items that can present in a upward dispatch queue at once."] set_max_upward_queue_count { new : :: core :: primitive :: u32 , } , # [codec (index = 24)] # [doc = "Sets the maximum total size of items that can present in a upward dispatch queue at"] # [doc = "once."] set_max_upward_queue_size { new : :: core :: primitive :: u32 , } , # [codec (index = 25)] # [doc = "Set the critical downward message size."] set_max_downward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 27)] # [doc = "Sets the maximum size of an upward message that can be sent by a candidate."] set_max_upward_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 28)] # [doc = "Sets the maximum number of messages that a candidate can contain."] set_max_upward_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 29)] # [doc = "Sets the number of sessions after which an HRMP open channel request expires."] set_hrmp_open_request_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 30)] # [doc = "Sets the amount of funds that the sender should provide for opening an HRMP channel."] set_hrmp_sender_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 31)] # [doc = "Sets the amount of funds that the recipient should provide for accepting opening an HRMP"] # [doc = "channel."] set_hrmp_recipient_deposit { new : :: core :: primitive :: u128 , } , # [codec (index = 32)] # [doc = "Sets the maximum number of messages allowed in an HRMP channel at once."] set_hrmp_channel_max_capacity { new : :: core :: primitive :: u32 , } , # [codec (index = 33)] # [doc = "Sets the maximum total size of messages in bytes allowed in an HRMP channel at once."] set_hrmp_channel_max_total_size { new : :: core :: primitive :: u32 , } , # [codec (index = 34)] # [doc = "Sets the maximum number of inbound HRMP channels a parachain is allowed to accept."] set_hrmp_max_parachain_inbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 36)] # [doc = "Sets the maximum size of a message that could ever be put into an HRMP channel."] set_hrmp_channel_max_message_size { new : :: core :: primitive :: u32 , } , # [codec (index = 37)] # [doc = "Sets the maximum number of outbound HRMP channels a parachain is allowed to open."] set_hrmp_max_parachain_outbound_channels { new : :: core :: primitive :: u32 , } , # [codec (index = 39)] # [doc = "Sets the maximum number of outbound HRMP messages can be sent by a candidate."] set_hrmp_max_message_num_per_candidate { new : :: core :: primitive :: u32 , } , # [codec (index = 42)] # [doc = "Set the number of session changes after which a PVF pre-checking voting is rejected."] set_pvf_voting_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 43)] # [doc = "Sets the minimum delay between announcing the upgrade block for a parachain until the"] # [doc = "upgrade taking place."] # [doc = ""] # [doc = "See the field documentation for information and constraints for the new value."] set_minimum_validation_upgrade_delay { new : :: core :: primitive :: u32 , } , # [codec (index = 44)] # [doc = "Setting this to true will disable consistency checks for the configuration setters."] # [doc = "Use with caution."] set_bypass_consistency_check { new : :: core :: primitive :: bool , } , # [codec (index = 45)] # [doc = "Set the asynchronous backing parameters."] set_async_backing_params { new : runtime_types :: polkadot_primitives :: v7 :: async_backing :: AsyncBackingParams , } , # [codec (index = 46)] # [doc = "Set PVF executor parameters."] set_executor_params { new : runtime_types :: polkadot_primitives :: v7 :: executor_params :: ExecutorParams , } , # [codec (index = 47)] # [doc = "Set the on demand (parathreads) base fee."] set_on_demand_base_fee { new : :: core :: primitive :: u128 , } , # [codec (index = 48)] # [doc = "Set the on demand (parathreads) fee variability."] set_on_demand_fee_variability { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 49)] # [doc = "Set the on demand (parathreads) queue max size."] set_on_demand_queue_max_size { new : :: core :: primitive :: u32 , } , # [codec (index = 50)] # [doc = "Set the on demand (parathreads) fee variability."] set_on_demand_target_queue_utilization { new : runtime_types :: sp_arithmetic :: per_things :: Perbill , } , # [codec (index = 51)] # [doc = "Set the on demand (parathreads) ttl in the claimqueue."] set_on_demand_ttl { new : :: core :: primitive :: u32 , } , # [codec (index = 52)] # [doc = "Set the minimum backing votes threshold."] set_minimum_backing_votes { new : :: core :: primitive :: u32 , } , # [codec (index = 53)] # [doc = "Set/Unset a node feature."] set_node_feature { index : :: core :: primitive :: u8 , value : :: core :: primitive :: bool , } , # [codec (index = 54)] # [doc = "Set approval-voting-params."] set_approval_voting_params { new : runtime_types :: polkadot_primitives :: v7 :: ApprovalVotingParams , } , # [codec (index = 55)] # [doc = "Set scheduler-params."] set_scheduler_params { new : runtime_types :: polkadot_primitives :: vstaging :: SchedulerParams < :: core :: primitive :: u32 > , } , } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, @@ -54915,7 +64969,7 @@ pub mod api { pub validation_upgrade_cooldown: _0, pub validation_upgrade_delay: _0, pub async_backing_params: - runtime_types::polkadot_primitives::v6::async_backing::AsyncBackingParams, + runtime_types::polkadot_primitives::v7::async_backing::AsyncBackingParams, pub max_pov_size: ::core::primitive::u32, pub max_downward_message_size: ::core::primitive::u32, pub hrmp_max_parachain_outbound_channels: ::core::primitive::u32, @@ -54926,21 +64980,8 @@ pub mod api { pub hrmp_max_parachain_inbound_channels: ::core::primitive::u32, pub hrmp_channel_max_message_size: ::core::primitive::u32, pub executor_params: - runtime_types::polkadot_primitives::v6::executor_params::ExecutorParams, + runtime_types::polkadot_primitives::v7::executor_params::ExecutorParams, pub code_retention_period: _0, - pub on_demand_cores: ::core::primitive::u32, - pub on_demand_retries: ::core::primitive::u32, - pub on_demand_queue_max_size: ::core::primitive::u32, - pub on_demand_target_queue_utilization: - runtime_types::sp_arithmetic::per_things::Perbill, - pub on_demand_fee_variability: - runtime_types::sp_arithmetic::per_things::Perbill, - pub on_demand_base_fee: ::core::primitive::u128, - pub on_demand_ttl: _0, - pub group_rotation_frequency: _0, - pub paras_availability_period: _0, - pub scheduling_lookahead: ::core::primitive::u32, - pub max_validators_per_core: ::core::option::Option<_0>, pub max_validators: ::core::option::Option<_0>, pub dispute_period: ::core::primitive::u32, pub dispute_post_conclusion_acceptance_period: _0, @@ -54952,6 +64993,82 @@ pub mod api { pub pvf_voting_ttl: ::core::primitive::u32, pub minimum_validation_upgrade_delay: _0, pub minimum_backing_votes: ::core::primitive::u32, + pub node_features: ::subxt::ext::subxt_core::utils::bits::DecodedBits< + ::core::primitive::u8, + ::subxt::ext::subxt_core::utils::bits::Lsb0, + >, + pub approval_voting_params: + runtime_types::polkadot_primitives::v7::ApprovalVotingParams, + pub scheduler_params: + runtime_types::polkadot_primitives::vstaging::SchedulerParams<_0>, + } + } + pub mod coretime { + use super::runtime_types; + pub mod pallet { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] + pub enum Call { + # [codec (index = 1)] request_core_count { count : :: core :: primitive :: u16 , } , # [codec (index = 4)] # [doc = "Receive instructions from the `ExternalBrokerOrigin`, detailing how a specific core is"] # [doc = "to be used."] # [doc = ""] # [doc = "Parameters:"] # [doc = "-`origin`: The `ExternalBrokerOrigin`, assumed to be the Broker system parachain."] # [doc = "-`core`: The core that should be scheduled."] # [doc = "-`begin`: The starting blockheight of the instruction."] # [doc = "-`assignment`: How the blockspace should be utilised."] # [doc = "-`end_hint`: An optional hint as to when this particular set of instructions will end."] assign_core { core : :: core :: primitive :: u16 , begin : :: core :: primitive :: u32 , assignment : :: subxt :: ext :: subxt_core :: alloc :: vec :: Vec < (runtime_types :: pallet_broker :: coretime_interface :: CoreAssignment , runtime_types :: polkadot_runtime_parachains :: assigner_coretime :: PartsOf57600 ,) > , end_hint : :: core :: option :: Option < :: core :: primitive :: u32 > , } , } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "The `Error` enum of this pallet."] + pub enum Error { + #[codec(index = 0)] + #[doc = "The paraid making the call is not the coretime brokerage system parachain."] + NotBroker, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + #[doc = "The `Event` enum of this pallet"] + pub enum Event { + #[codec(index = 0)] + #[doc = "The broker chain has asked for revenue information for a specific block."] + RevenueInfoRequested { when: ::core::primitive::u32 }, + #[codec(index = 1)] + #[doc = "A core has received a new assignment from the broker chain."] + CoreAssigned { + core: runtime_types::polkadot_primitives::v7::CoreIndex, + }, + } } } pub mod disputes { @@ -54975,7 +65092,6 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::force_unfreeze`]."] force_unfreeze, } #[derive( @@ -55080,10 +65196,9 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::report_dispute_lost_unsigned`]."] report_dispute_lost_unsigned { dispute_proof: ::subxt::ext::subxt_core::alloc::boxed::Box< - runtime_types::polkadot_primitives::v6::slashing::DisputeProof, + runtime_types::polkadot_primitives::v7::slashing::DisputeProof, >, key_owner_proof: runtime_types::sp_session::MembershipProof, }, @@ -55187,7 +65302,7 @@ pub mod api { )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::hrmp_init_open_channel`]."] hrmp_init_open_channel { recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "See [`Pallet::hrmp_accept_open_channel`]."] hrmp_accept_open_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 2)] # [doc = "See [`Pallet::hrmp_close_channel`]."] hrmp_close_channel { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 3)] # [doc = "See [`Pallet::force_clean_hrmp`]."] force_clean_hrmp { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , num_inbound : :: core :: primitive :: u32 , num_outbound : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "See [`Pallet::force_process_hrmp_open`]."] force_process_hrmp_open { channels : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "See [`Pallet::force_process_hrmp_close`]."] force_process_hrmp_close { channels : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "See [`Pallet::hrmp_cancel_open_request`]."] hrmp_cancel_open_request { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , open_requests : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "See [`Pallet::force_open_hrmp_channel`]."] force_open_hrmp_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , max_capacity : :: core :: primitive :: u32 , max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "See [`Pallet::establish_system_channel`]."] establish_system_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 9)] # [doc = "See [`Pallet::poke_channel_deposits`]."] poke_channel_deposits { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , } + # [codec (index = 0)] # [doc = "Initiate opening a channel from a parachain to a given recipient with given channel"] # [doc = "parameters."] # [doc = ""] # [doc = "- `proposed_max_capacity` - specifies how many messages can be in the channel at once."] # [doc = "- `proposed_max_message_size` - specifies the maximum size of the messages."] # [doc = ""] # [doc = "These numbers are a subject to the relay-chain configuration limits."] # [doc = ""] # [doc = "The channel can be opened only after the recipient confirms it and only on a session"] # [doc = "change."] hrmp_init_open_channel { recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "Accept a pending open channel request from the given sender."] # [doc = ""] # [doc = "The channel will be opened only on the next session boundary."] hrmp_accept_open_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 2)] # [doc = "Initiate unilateral closing of a channel. The origin must be either the sender or the"] # [doc = "recipient in the channel being closed."] # [doc = ""] # [doc = "The closure can only happen on a session change."] hrmp_close_channel { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 3)] # [doc = "This extrinsic triggers the cleanup of all the HRMP storage items that a para may have."] # [doc = "Normally this happens once per session, but this allows you to trigger the cleanup"] # [doc = "immediately for a specific parachain."] # [doc = ""] # [doc = "Number of inbound and outbound channels for `para` must be provided as witness data."] # [doc = ""] # [doc = "Origin must be the `ChannelManager`."] force_clean_hrmp { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , num_inbound : :: core :: primitive :: u32 , num_outbound : :: core :: primitive :: u32 , } , # [codec (index = 4)] # [doc = "Force process HRMP open channel requests."] # [doc = ""] # [doc = "If there are pending HRMP open channel requests, you can use this function to process"] # [doc = "all of those requests immediately."] # [doc = ""] # [doc = "Total number of opening channels must be provided as witness data."] # [doc = ""] # [doc = "Origin must be the `ChannelManager`."] force_process_hrmp_open { channels : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "Force process HRMP close channel requests."] # [doc = ""] # [doc = "If there are pending HRMP close channel requests, you can use this function to process"] # [doc = "all of those requests immediately."] # [doc = ""] # [doc = "Total number of closing channels must be provided as witness data."] # [doc = ""] # [doc = "Origin must be the `ChannelManager`."] force_process_hrmp_close { channels : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "This cancels a pending open channel request. It can be canceled by either of the sender"] # [doc = "or the recipient for that request. The origin must be either of those."] # [doc = ""] # [doc = "The cancellation happens immediately. It is not possible to cancel the request if it is"] # [doc = "already accepted."] # [doc = ""] # [doc = "Total number of open requests (i.e. `HrmpOpenChannelRequestsList`) must be provided as"] # [doc = "witness data."] hrmp_cancel_open_request { channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , open_requests : :: core :: primitive :: u32 , } , # [codec (index = 7)] # [doc = "Open a channel from a `sender` to a `recipient` `ParaId`. Although opened by governance,"] # [doc = "the `max_capacity` and `max_message_size` are still subject to the Relay Chain's"] # [doc = "configured limits."] # [doc = ""] # [doc = "Expected use is when one (and only one) of the `ParaId`s involved in the channel is"] # [doc = "governed by the system, e.g. a system parachain."] # [doc = ""] # [doc = "Origin must be the `ChannelManager`."] force_open_hrmp_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , max_capacity : :: core :: primitive :: u32 , max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 8)] # [doc = "Establish an HRMP channel between two system chains. If the channel does not already"] # [doc = "exist, the transaction fees will be refunded to the caller. The system does not take"] # [doc = "deposits for channels between system chains, and automatically sets the message number"] # [doc = "and size limits to the maximum allowed by the network's configuration."] # [doc = ""] # [doc = "Arguments:"] # [doc = ""] # [doc = "- `sender`: A system chain, `ParaId`."] # [doc = "- `recipient`: A system chain, `ParaId`."] # [doc = ""] # [doc = "Any signed origin can call this function, but _both_ inputs MUST be system chains. If"] # [doc = "the channel does not exist yet, there is no fee."] establish_system_channel { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 9)] # [doc = "Update the deposits held for an HRMP channel to the latest `Configuration`. Channels"] # [doc = "with system chains do not require a deposit."] # [doc = ""] # [doc = "Arguments:"] # [doc = ""] # [doc = "- `sender`: A chain, `ParaId`."] # [doc = "- `recipient`: A chain, `ParaId`."] # [doc = ""] # [doc = "Any signed origin can call this function."] poke_channel_deposits { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 10)] # [doc = "Establish a bidirectional HRMP channel between a parachain and a system chain."] # [doc = ""] # [doc = "Arguments:"] # [doc = ""] # [doc = "- `target_system_chain`: A system chain, `ParaId`."] # [doc = ""] # [doc = "The origin needs to be the parachain origin."] establish_channel_with_system { target_system_chain : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, @@ -55281,7 +65396,7 @@ pub mod api { )] #[doc = "The `Event` enum of this pallet"] pub enum Event { - # [codec (index = 0)] # [doc = "Open HRMP channel requested."] OpenChannelRequested { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "An HRMP channel request sent by the receiver was canceled by either party."] OpenChannelCanceled { by_parachain : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 2)] # [doc = "Open HRMP channel accepted."] OpenChannelAccepted { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "HRMP channel closed."] ChannelClosed { by_parachain : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 4)] # [doc = "An HRMP channel was opened via Root origin."] HrmpChannelForceOpened { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "An HRMP channel was opened between two system chains."] HrmpSystemChannelOpened { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "An HRMP channel's deposits were updated."] OpenChannelDepositsUpdated { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , } + # [codec (index = 0)] # [doc = "Open HRMP channel requested."] OpenChannelRequested { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 1)] # [doc = "An HRMP channel request sent by the receiver was canceled by either party."] OpenChannelCanceled { by_parachain : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 2)] # [doc = "Open HRMP channel accepted."] OpenChannelAccepted { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 3)] # [doc = "HRMP channel closed."] ChannelClosed { by_parachain : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , channel_id : runtime_types :: polkadot_parachain_primitives :: primitives :: HrmpChannelId , } , # [codec (index = 4)] # [doc = "An HRMP channel was opened via Root origin."] HrmpChannelForceOpened { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 5)] # [doc = "An HRMP channel was opened with a system chain."] HrmpSystemChannelOpened { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , proposed_max_capacity : :: core :: primitive :: u32 , proposed_max_message_size : :: core :: primitive :: u32 , } , # [codec (index = 6)] # [doc = "An HRMP channel's deposits were updated."] OpenChannelDepositsUpdated { sender : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , recipient : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , } } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -55367,97 +65482,62 @@ pub mod api { #[doc = "The `Error` enum of this pallet."] pub enum Error { #[codec(index = 0)] - #[doc = "Validator indices are out of order or contains duplicates."] - UnsortedOrDuplicateValidatorIndices, - #[codec(index = 1)] - #[doc = "Dispute statement sets are out of order or contain duplicates."] - UnsortedOrDuplicateDisputeStatementSet, - #[codec(index = 2)] - #[doc = "Backed candidates are out of order (core index) or contain duplicates."] - UnsortedOrDuplicateBackedCandidates, - #[codec(index = 3)] - #[doc = "A different relay parent was provided compared to the on-chain stored one."] - UnexpectedRelayParent, - #[codec(index = 4)] - #[doc = "Availability bitfield has unexpected size."] - WrongBitfieldSize, - #[codec(index = 5)] - #[doc = "Bitfield consists of zeros only."] - BitfieldAllZeros, - #[codec(index = 6)] - #[doc = "Multiple bitfields submitted by same validator or validators out of order by index."] - BitfieldDuplicateOrUnordered, - #[codec(index = 7)] #[doc = "Validator index out of bounds."] ValidatorIndexOutOfBounds, - #[codec(index = 8)] - #[doc = "Invalid signature"] - InvalidBitfieldSignature, - #[codec(index = 9)] + #[codec(index = 1)] #[doc = "Candidate submitted but para not scheduled."] UnscheduledCandidate, - #[codec(index = 10)] - #[doc = "Candidate scheduled despite pending candidate already existing for the para."] - CandidateScheduledBeforeParaFree, - #[codec(index = 11)] - #[doc = "Scheduled cores out of order."] - ScheduledOutOfOrder, - #[codec(index = 12)] + #[codec(index = 2)] #[doc = "Head data exceeds the configured maximum."] HeadDataTooLarge, - #[codec(index = 13)] + #[codec(index = 3)] #[doc = "Code upgrade prematurely."] PrematureCodeUpgrade, - #[codec(index = 14)] + #[codec(index = 4)] #[doc = "Output code is too large"] NewCodeTooLarge, - #[codec(index = 15)] + #[codec(index = 5)] #[doc = "The candidate's relay-parent was not allowed. Either it was"] #[doc = "not recent enough or it didn't advance based on the last parachain block."] DisallowedRelayParent, - #[codec(index = 16)] + #[codec(index = 6)] #[doc = "Failed to compute group index for the core: either it's out of bounds"] #[doc = "or the relay parent doesn't belong to the current session."] InvalidAssignment, - #[codec(index = 17)] + #[codec(index = 7)] #[doc = "Invalid group index in core assignment."] InvalidGroupIndex, - #[codec(index = 18)] + #[codec(index = 8)] #[doc = "Insufficient (non-majority) backing."] InsufficientBacking, - #[codec(index = 19)] + #[codec(index = 9)] #[doc = "Invalid (bad signature, unknown validator, etc.) backing."] InvalidBacking, - #[codec(index = 20)] + #[codec(index = 10)] #[doc = "Collator did not sign PoV."] NotCollatorSigned, - #[codec(index = 21)] + #[codec(index = 11)] #[doc = "The validation data hash does not match expected."] ValidationDataHashMismatch, - #[codec(index = 22)] + #[codec(index = 12)] #[doc = "The downward message queue is not processed correctly."] IncorrectDownwardMessageHandling, - #[codec(index = 23)] + #[codec(index = 13)] #[doc = "At least one upward message sent does not pass the acceptance criteria."] InvalidUpwardMessages, - #[codec(index = 24)] + #[codec(index = 14)] #[doc = "The candidate didn't follow the rules of HRMP watermark advancement."] HrmpWatermarkMishandling, - #[codec(index = 25)] + #[codec(index = 15)] #[doc = "The HRMP messages sent by the candidate is not valid."] InvalidOutboundHrmp, - #[codec(index = 26)] + #[codec(index = 16)] #[doc = "The validation code hash of the candidate is not valid."] InvalidValidationCodeHash, - #[codec(index = 27)] + #[codec(index = 17)] #[doc = "The `para_head` hash in the candidate descriptor doesn't match the hash of the actual"] #[doc = "para head in the commitments."] ParaHeadMismatch, - #[codec(index = 28)] - #[doc = "A bitfield that references a freed core,"] - #[doc = "either intentionally or as part of a concluded"] - #[doc = "invalid dispute."] - BitfieldReferencesFreedCore, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -55478,31 +65558,31 @@ pub mod api { #[codec(index = 0)] #[doc = "A candidate was backed. `[candidate, head_data]`"] CandidateBacked( - runtime_types::polkadot_primitives::v6::CandidateReceipt< + runtime_types::polkadot_primitives::v7::CandidateReceipt< ::subxt::ext::subxt_core::utils::H256, >, runtime_types::polkadot_parachain_primitives::primitives::HeadData, - runtime_types::polkadot_primitives::v6::CoreIndex, - runtime_types::polkadot_primitives::v6::GroupIndex, + runtime_types::polkadot_primitives::v7::CoreIndex, + runtime_types::polkadot_primitives::v7::GroupIndex, ), #[codec(index = 1)] #[doc = "A candidate was included. `[candidate, head_data]`"] CandidateIncluded( - runtime_types::polkadot_primitives::v6::CandidateReceipt< + runtime_types::polkadot_primitives::v7::CandidateReceipt< ::subxt::ext::subxt_core::utils::H256, >, runtime_types::polkadot_parachain_primitives::primitives::HeadData, - runtime_types::polkadot_primitives::v6::CoreIndex, - runtime_types::polkadot_primitives::v6::GroupIndex, + runtime_types::polkadot_primitives::v7::CoreIndex, + runtime_types::polkadot_primitives::v7::GroupIndex, ), #[codec(index = 2)] #[doc = "A candidate timed out. `[candidate, head_data]`"] CandidateTimedOut( - runtime_types::polkadot_primitives::v6::CandidateReceipt< + runtime_types::polkadot_primitives::v7::CandidateReceipt< ::subxt::ext::subxt_core::utils::H256, >, runtime_types::polkadot_parachain_primitives::primitives::HeadData, - runtime_types::polkadot_primitives::v6::CoreIndex, + runtime_types::polkadot_primitives::v7::CoreIndex, ), #[codec(index = 3)] #[doc = "Some upward messages have been received and will be processed."] @@ -55544,28 +65624,12 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct AvailabilityBitfieldRecord<_0> { - pub bitfield: runtime_types::polkadot_primitives::v6::AvailabilityBitfield, - pub submitted_at: _0, - } - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] pub struct CandidatePendingAvailability<_0, _1> { - pub core: runtime_types::polkadot_primitives::v6::CoreIndex, + pub core: runtime_types::polkadot_primitives::v7::CoreIndex, pub hash: runtime_types::polkadot_core_primitives::CandidateHash, - pub descriptor: runtime_types::polkadot_primitives::v6::CandidateDescriptor<_0>, + pub descriptor: runtime_types::polkadot_primitives::v7::CandidateDescriptor<_0>, + pub commitments: + runtime_types::polkadot_primitives::v7::CandidateCommitments<_1>, pub availability_votes: ::subxt::ext::subxt_core::utils::bits::DecodedBits< ::core::primitive::u8, ::subxt::ext::subxt_core::utils::bits::Lsb0, @@ -55576,7 +65640,7 @@ pub mod api { >, pub relay_parent_number: _1, pub backed_in_number: _1, - pub backing_group: runtime_types::polkadot_primitives::v6::GroupIndex, + pub backing_group: runtime_types::polkadot_primitives::v7::GroupIndex, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -55618,7 +65682,9 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::force_approve`]."] + #[doc = "Issue a signal to the consensus engine to forcibly act as though all parachain"] + #[doc = "blocks in all relay chain blocks up to and including the given number in the current"] + #[doc = "chain are valid and should be finalized."] force_approve { up_to: ::core::primitive::u32 }, } } @@ -55638,10 +65704,10 @@ pub mod api { )] pub struct BufferedSessionChange { pub validators: ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::validator_app::Public, + runtime_types::polkadot_primitives::v7::validator_app::Public, >, pub queued: ::subxt::ext::subxt_core::alloc::vec::Vec< - runtime_types::polkadot_primitives::v6::validator_app::Public, + runtime_types::polkadot_primitives::v7::validator_app::Public, >, pub session_index: ::core::primitive::u32, } @@ -55690,7 +65756,7 @@ pub mod api { )] #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { - # [codec (index = 0)] # [doc = "See [`Pallet::force_set_current_code`]."] force_set_current_code { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "See [`Pallet::force_set_current_head`]."] force_set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 2)] # [doc = "See [`Pallet::force_schedule_code_upgrade`]."] force_schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , relay_parent_number : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "See [`Pallet::force_note_new_head`]."] force_note_new_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 4)] # [doc = "See [`Pallet::force_queue_action`]."] force_queue_action { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "See [`Pallet::add_trusted_validation_code`]."] add_trusted_validation_code { validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 6)] # [doc = "See [`Pallet::poke_unused_validation_code`]."] poke_unused_validation_code { validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } , # [codec (index = 7)] # [doc = "See [`Pallet::include_pvf_check_statement`]."] include_pvf_check_statement { stmt : runtime_types :: polkadot_primitives :: v6 :: PvfCheckStatement , signature : runtime_types :: polkadot_primitives :: v6 :: validator_app :: Signature , } , # [codec (index = 8)] # [doc = "See [`Pallet::force_set_most_recent_context`]."] force_set_most_recent_context { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , context : :: core :: primitive :: u32 , } , } + # [codec (index = 0)] # [doc = "Set the storage for the parachain validation code immediately."] force_set_current_code { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 1)] # [doc = "Set the storage for the current parachain head data immediately."] force_set_current_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 2)] # [doc = "Schedule an upgrade as if it was scheduled in the given relay parent block."] force_schedule_code_upgrade { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , relay_parent_number : :: core :: primitive :: u32 , } , # [codec (index = 3)] # [doc = "Note a new block head for para within the context of the current block."] force_note_new_head { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , new_head : runtime_types :: polkadot_parachain_primitives :: primitives :: HeadData , } , # [codec (index = 4)] # [doc = "Put a parachain directly into the next session's action queue."] # [doc = "We can't queue it any sooner than this without going into the"] # [doc = "initializer..."] force_queue_action { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , } , # [codec (index = 5)] # [doc = "Adds the validation code to the storage."] # [doc = ""] # [doc = "The code will not be added if it is already present. Additionally, if PVF pre-checking"] # [doc = "is running for that code, it will be instantly accepted."] # [doc = ""] # [doc = "Otherwise, the code will be added into the storage. Note that the code will be added"] # [doc = "into storage with reference count 0. This is to account the fact that there are no users"] # [doc = "for this code yet. The caller will have to make sure that this code eventually gets"] # [doc = "used by some parachain or removed from the storage to avoid storage leaks. For the"] # [doc = "latter prefer to use the `poke_unused_validation_code` dispatchable to raw storage"] # [doc = "manipulation."] # [doc = ""] # [doc = "This function is mainly meant to be used for upgrading parachains that do not follow"] # [doc = "the go-ahead signal while the PVF pre-checking feature is enabled."] add_trusted_validation_code { validation_code : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCode , } , # [codec (index = 6)] # [doc = "Remove the validation code from the storage iff the reference count is 0."] # [doc = ""] # [doc = "This is better than removing the storage directly, because it will not remove the code"] # [doc = "that was suddenly got used by some parachain while this dispatchable was pending"] # [doc = "dispatching."] poke_unused_validation_code { validation_code_hash : runtime_types :: polkadot_parachain_primitives :: primitives :: ValidationCodeHash , } , # [codec (index = 7)] # [doc = "Includes a statement for a PVF pre-checking vote. Potentially, finalizes the vote and"] # [doc = "enacts the results if that was the last vote before achieving the supermajority."] include_pvf_check_statement { stmt : runtime_types :: polkadot_primitives :: v7 :: PvfCheckStatement , signature : runtime_types :: polkadot_primitives :: v7 :: validator_app :: Signature , } , # [codec (index = 8)] # [doc = "Set the storage for the current parachain head data immediately."] force_set_most_recent_context { para : runtime_types :: polkadot_parachain_primitives :: primitives :: Id , context : :: core :: primitive :: u32 , } , } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, @@ -55743,6 +65809,9 @@ pub mod api { #[codec(index = 11)] #[doc = "Parachain cannot currently schedule a code upgrade."] CannotUpgradeCode, + #[codec(index = 12)] + #[doc = "Invalid validation code size."] + InvalidCode, } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -55883,7 +65952,8 @@ pub mod api { Upgrade { id: runtime_types::polkadot_parachain_primitives::primitives::Id, included_at: _0, - set_go_ahead: runtime_types::polkadot_runtime_parachains::paras::SetGoAhead, + upgrade_strategy: + runtime_types::polkadot_runtime_parachains::paras::UpgradeStrategy, }, } #[derive( @@ -55918,11 +65988,11 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub enum SetGoAhead { + pub enum UpgradeStrategy { #[codec(index = 0)] - Yes, + SetGoAheadSignal, #[codec(index = 1)] - No, + ApplyAtExpectedBlock, } } pub mod paras_inherent { @@ -55946,9 +66016,9 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::enter`]."] + #[doc = "Enter the paras inherent. This will process bitfields and backed candidates."] enter { - data: runtime_types::polkadot_primitives::v6::InherentData< + data: runtime_types::polkadot_primitives::v7::InherentData< runtime_types::sp_runtime::generic::header::Header< ::core::primitive::u32, >, @@ -55979,17 +66049,15 @@ pub mod api { #[doc = "the parent."] InvalidParentHeader, #[codec(index = 2)] - #[doc = "Disputed candidate that was concluded invalid."] - CandidateConcludedInvalid, - #[codec(index = 3)] #[doc = "The data given to the inherent will result in an overweight block."] InherentOverweight, + #[codec(index = 3)] + #[doc = "A candidate was filtered during inherent execution. This should have only been done"] + #[doc = "during creation."] + CandidatesFilteredDuringExecution, #[codec(index = 4)] - #[doc = "The ordering of dispute statements was invalid."] - DisputeStatementsUnsortedOrDuplicates, - #[codec(index = 5)] - #[doc = "A dispute statement was invalid."] - DisputeInvalid, + #[doc = "Too many candidates supplied."] + UnscheduledCandidate, } } } @@ -56011,8 +66079,14 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct Assignment { - pub para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + pub enum Assignment { + #[codec(index = 0)] + Pool { + para_id: runtime_types::polkadot_parachain_primitives::primitives::Id, + core_index: runtime_types::polkadot_primitives::v7::CoreIndex, + }, + #[codec(index = 1)] + Bulk(runtime_types::polkadot_parachain_primitives::primitives::Id), } } pub mod pallet { @@ -56093,6 +66167,213 @@ pub mod api { } pub mod rococo_runtime { use super::runtime_types; + pub mod dynamic_params { + use super::runtime_types; + pub mod nis { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct MinBid; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum Parameters { + #[codec(index = 0)] + Target( + runtime_types::rococo_runtime::dynamic_params::nis::Target, + ::core::option::Option< + runtime_types::sp_arithmetic::per_things::Perquintill, + >, + ), + #[codec(index = 1)] + MinBid( + runtime_types::rococo_runtime::dynamic_params::nis::MinBid, + ::core::option::Option<::core::primitive::u128>, + ), + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum ParametersKey { + #[codec(index = 0)] + Target(runtime_types::rococo_runtime::dynamic_params::nis::Target), + #[codec(index = 1)] + MinBid(runtime_types::rococo_runtime::dynamic_params::nis::MinBid), + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum ParametersValue { + #[codec(index = 0)] + Target(runtime_types::sp_arithmetic::per_things::Perquintill), + #[codec(index = 1)] + MinBid(::core::primitive::u128), + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct Target; + } + pub mod preimage { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct BaseDeposit; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct ByteDeposit; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum Parameters { + #[codec(index = 0)] + BaseDeposit( + runtime_types::rococo_runtime::dynamic_params::preimage::BaseDeposit, + ::core::option::Option<::core::primitive::u128>, + ), + #[codec(index = 1)] + ByteDeposit( + runtime_types::rococo_runtime::dynamic_params::preimage::ByteDeposit, + ::core::option::Option<::core::primitive::u128>, + ), + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum ParametersKey { + #[codec(index = 0)] + BaseDeposit( + runtime_types::rococo_runtime::dynamic_params::preimage::BaseDeposit, + ), + #[codec(index = 1)] + ByteDeposit( + runtime_types::rococo_runtime::dynamic_params::preimage::ByteDeposit, + ), + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum ParametersValue { + #[codec(index = 0)] + BaseDeposit(::core::primitive::u128), + #[codec(index = 1)] + ByteDeposit(::core::primitive::u128), + } + } + } pub mod governance { use super::runtime_types; pub mod origins { @@ -56193,14 +66474,18 @@ pub mod api { #[doc = "Contains a variant per dispatchable extrinsic that this pallet has."] pub enum Call { #[codec(index = 0)] - #[doc = "See [`Pallet::register_validators`]."] + #[doc = "Add new validators to the set."] + #[doc = ""] + #[doc = "The new validators will be active from current session + 2."] register_validators { validators: ::subxt::ext::subxt_core::alloc::vec::Vec< ::subxt::ext::subxt_core::utils::AccountId32, >, }, #[codec(index = 1)] - #[doc = "See [`Pallet::deregister_validators`]."] + #[doc = "Remove validators from the set."] + #[doc = ""] + #[doc = "The removed validators will be deactivated from current session + 2."] deregister_validators { validators: ::subxt::ext::subxt_core::alloc::vec::Vec< ::subxt::ext::subxt_core::utils::AccountId32, @@ -56312,14 +66597,12 @@ pub mod api { Indices(runtime_types::pallet_indices::pallet::Call), #[codec(index = 4)] Balances(runtime_types::pallet_balances::pallet::Call), - #[codec(index = 240)] - Beefy(runtime_types::pallet_beefy::pallet::Call), + #[codec(index = 6)] + Parameters(runtime_types::pallet_parameters::pallet::Call), #[codec(index = 8)] Session(runtime_types::pallet_session::pallet::Call), #[codec(index = 10)] Grandpa(runtime_types::pallet_grandpa::pallet::Call), - #[codec(index = 11)] - ImOnline(runtime_types::pallet_im_online::pallet::Call), #[codec(index = 18)] Treasury(runtime_types::pallet_treasury::pallet::Call), #[codec(index = 20)] @@ -56400,8 +66683,16 @@ pub mod api { Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Call), #[codec(index = 73)] Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Call), + #[codec(index = 74)] + Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Call), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Call), + #[codec(index = 240)] + Beefy(runtime_types::pallet_beefy::pallet::Call), + #[codec(index = 248)] + IdentityMigrator( + runtime_types::polkadot_runtime_common::identity_migrator::pallet::Call, + ), #[codec(index = 250)] ParasSudoWrapper( runtime_types::polkadot_runtime_common::paras_sudo_wrapper::pallet::Call, @@ -56412,6 +66703,8 @@ pub mod api { ValidatorManager(runtime_types::rococo_runtime::validator_manager::pallet::Call), #[codec(index = 254)] StateTrieMigration(runtime_types::pallet_state_trie_migration::pallet::Call), + #[codec(index = 249)] + RootTesting(runtime_types::pallet_root_testing::pallet::Call), #[codec(index = 255)] Sudo(runtime_types::pallet_sudo::pallet::Call), } @@ -56434,14 +66727,10 @@ pub mod api { Indices(runtime_types::pallet_indices::pallet::Error), #[codec(index = 4)] Balances(runtime_types::pallet_balances::pallet::Error), - #[codec(index = 240)] - Beefy(runtime_types::pallet_beefy::pallet::Error), #[codec(index = 8)] Session(runtime_types::pallet_session::pallet::Error), #[codec(index = 10)] Grandpa(runtime_types::pallet_grandpa::pallet::Error), - #[codec(index = 11)] - ImOnline(runtime_types::pallet_im_online::pallet::Error), #[codec(index = 18)] Treasury(runtime_types::pallet_treasury::pallet::Error), #[codec(index = 20)] @@ -56510,6 +66799,10 @@ pub mod api { OnDemandAssignmentProvider( runtime_types::polkadot_runtime_parachains::assigner_on_demand::pallet::Error, ), + #[codec(index = 68)] + CoretimeAssignmentProvider( + runtime_types::polkadot_runtime_parachains::assigner_coretime::pallet::Error, + ), #[codec(index = 70)] Registrar(runtime_types::polkadot_runtime_common::paras_registrar::pallet::Error), #[codec(index = 71)] @@ -56518,8 +66811,12 @@ pub mod api { Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Error), #[codec(index = 73)] Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Error), + #[codec(index = 74)] + Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Error), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Error), + #[codec(index = 240)] + Beefy(runtime_types::pallet_beefy::pallet::Error), #[codec(index = 250)] ParasSudoWrapper( runtime_types::polkadot_runtime_common::paras_sudo_wrapper::pallet::Error, @@ -56550,6 +66847,8 @@ pub mod api { Indices(runtime_types::pallet_indices::pallet::Event), #[codec(index = 4)] Balances(runtime_types::pallet_balances::pallet::Event), + #[codec(index = 6)] + Parameters(runtime_types::pallet_parameters::pallet::Event), #[codec(index = 33)] TransactionPayment(runtime_types::pallet_transaction_payment::pallet::Event), #[codec(index = 7)] @@ -56558,8 +66857,6 @@ pub mod api { Session(runtime_types::pallet_session::pallet::Event), #[codec(index = 10)] Grandpa(runtime_types::pallet_grandpa::pallet::Event), - #[codec(index = 11)] - ImOnline(runtime_types::pallet_im_online::pallet::Event), #[codec(index = 18)] Treasury(runtime_types::pallet_treasury::pallet::Event), #[codec(index = 20)] @@ -56624,8 +66921,14 @@ pub mod api { Auctions(runtime_types::polkadot_runtime_common::auctions::pallet::Event), #[codec(index = 73)] Crowdloan(runtime_types::polkadot_runtime_common::crowdloan::pallet::Event), + #[codec(index = 74)] + Coretime(runtime_types::polkadot_runtime_parachains::coretime::pallet::Event), #[codec(index = 99)] XcmPallet(runtime_types::pallet_xcm::pallet::Event), + #[codec(index = 248)] + IdentityMigrator( + runtime_types::polkadot_runtime_common::identity_migrator::pallet::Event, + ), #[codec(index = 251)] AssignedSlots( runtime_types::polkadot_runtime_common::assigned_slots::pallet::Event, @@ -56634,6 +66937,8 @@ pub mod api { ValidatorManager(runtime_types::rococo_runtime::validator_manager::pallet::Event), #[codec(index = 254)] StateTrieMigration(runtime_types::pallet_state_trie_migration::pallet::Event), + #[codec(index = 249)] + RootTesting(runtime_types::pallet_root_testing::pallet::Event), #[codec(index = 255)] Sudo(runtime_types::pallet_sudo::pallet::Event), } @@ -56652,6 +66957,56 @@ pub mod api { Preimage(runtime_types::pallet_preimage::pallet::HoldReason), #[codec(index = 38)] Nis(runtime_types::pallet_nis::pallet::HoldReason), + #[codec(index = 254)] + StateTrieMigration(runtime_types::pallet_state_trie_migration::pallet::HoldReason), + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub enum RuntimeParameters { + #[codec(index = 0)] + Nis(runtime_types::rococo_runtime::dynamic_params::nis::Parameters), + #[codec(index = 1)] + Preimage(runtime_types::rococo_runtime::dynamic_params::preimage::Parameters), + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub enum RuntimeParametersKey { + #[codec(index = 0)] + Nis(runtime_types::rococo_runtime::dynamic_params::nis::ParametersKey), + #[codec(index = 1)] + Preimage(runtime_types::rococo_runtime::dynamic_params::preimage::ParametersKey), + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub enum RuntimeParametersValue { + #[codec(index = 0)] + Nis(runtime_types::rococo_runtime::dynamic_params::nis::ParametersValue), + #[codec(index = 1)] + Preimage(runtime_types::rococo_runtime::dynamic_params::preimage::ParametersValue), } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -56666,9 +67021,8 @@ pub mod api { pub struct SessionKeys { pub grandpa: runtime_types::sp_consensus_grandpa::app::Public, pub babe: runtime_types::sp_consensus_babe::app::Public, - pub im_online: runtime_types::pallet_im_online::sr25519::app_sr25519::Public, - pub para_validator: runtime_types::polkadot_primitives::v6::validator_app::Public, - pub para_assignment: runtime_types::polkadot_primitives::v6::assignment_app::Public, + pub para_validator: runtime_types::polkadot_primitives::v7::validator_app::Public, + pub para_assignment: runtime_types::polkadot_primitives::v7::assignment_app::Public, pub authority_discovery: runtime_types::sp_authority_discovery::app::Public, pub beefy: runtime_types::sp_consensus_beefy::ecdsa_crypto::Public, } @@ -56797,7 +67151,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct Public(pub runtime_types::sp_core::sr25519::Public); + pub struct Public(pub [::core::primitive::u8; 32usize]); } } pub mod sp_consensus_babe { @@ -56818,7 +67172,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct Public(pub runtime_types::sp_core::sr25519::Public); + pub struct Public(pub [::core::primitive::u8; 32usize]); } pub mod digests { use super::runtime_types; @@ -57052,7 +67406,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct Public(pub runtime_types::sp_core::ecdsa::Public); + pub struct Public(pub [::core::primitive::u8; 33usize]); #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, @@ -57067,7 +67421,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct Signature(pub runtime_types::sp_core::ecdsa::Signature); + pub struct Signature(pub [::core::primitive::u8; 65usize]); } pub mod mmr { use super::runtime_types; @@ -57189,7 +67543,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct Public(pub runtime_types::sp_core::ed25519::Public); + pub struct Public(pub [::core::primitive::u8; 32usize]); #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, @@ -57204,7 +67558,7 @@ pub mod api { #[encode_as_type( crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] - pub struct Signature(pub runtime_types::sp_core::ed25519::Signature); + pub struct Signature(pub [::core::primitive::u8; 64usize]); } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -57313,72 +67667,6 @@ pub mod api { )] pub struct KeyTypeId(pub [::core::primitive::u8; 4usize]); } - pub mod ecdsa { - use super::runtime_types; - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - pub struct Public(pub [::core::primitive::u8; 33usize]); - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - pub struct Signature(pub [::core::primitive::u8; 65usize]); - } - pub mod ed25519 { - use super::runtime_types; - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - pub struct Public(pub [::core::primitive::u8; 32usize]); - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - pub struct Signature(pub [::core::primitive::u8; 64usize]); - } pub mod sr25519 { use super::runtime_types; pub mod vrf { @@ -57398,40 +67686,10 @@ pub mod api { crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" )] pub struct VrfSignature { - pub output: [::core::primitive::u8; 32usize], + pub pre_output: [::core::primitive::u8; 32usize], pub proof: [::core::primitive::u8; 64usize], } } - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - pub struct Public(pub [::core::primitive::u8; 32usize]); - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - pub struct Signature(pub [::core::primitive::u8; 64usize]); } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -58406,6 +68664,22 @@ pub mod api { # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub enum ExtrinsicInclusionMode { + #[codec(index = 0)] + AllExtrinsics, + #[codec(index = 1)] + OnlyInherents, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub struct ModuleError { pub index: ::core::primitive::u8, pub error: [::core::primitive::u8; 4usize], @@ -58422,11 +68696,11 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum MultiSignature { #[codec(index = 0)] - Ed25519(runtime_types::sp_core::ed25519::Signature), + Ed25519([::core::primitive::u8; 64usize]), #[codec(index = 1)] - Sr25519(runtime_types::sp_core::sr25519::Signature), + Sr25519([::core::primitive::u8; 64usize]), #[codec(index = 2)] - Ecdsa(runtime_types::sp_core::ecdsa::Signature), + Ecdsa([::core::primitive::u8; 65usize]), } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -58440,11 +68714,11 @@ pub mod api { #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] pub enum MultiSigner { #[codec(index = 0)] - Ed25519(runtime_types::sp_core::ed25519::Public), + Ed25519([::core::primitive::u8; 32usize]), #[codec(index = 1)] - Sr25519(runtime_types::sp_core::sr25519::Public), + Sr25519([::core::primitive::u8; 32usize]), #[codec(index = 2)] - Ecdsa(runtime_types::sp_core::ecdsa::Public), + Ecdsa([::core::primitive::u8; 33usize]), } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -58631,6 +68905,985 @@ pub mod api { } } } + pub mod v4 { + use super::runtime_types; + pub mod asset { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct Asset { + pub id: runtime_types::staging_xcm::v4::asset::AssetId, + pub fun: runtime_types::staging_xcm::v4::asset::Fungibility, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum AssetFilter { + #[codec(index = 0)] + Definite(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 1)] + Wild(runtime_types::staging_xcm::v4::asset::WildAsset), + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct AssetId(pub runtime_types::staging_xcm::v4::location::Location); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum AssetInstance { + #[codec(index = 0)] + Undefined, + #[codec(index = 1)] + Index(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 2)] + Array4([::core::primitive::u8; 4usize]), + #[codec(index = 3)] + Array8([::core::primitive::u8; 8usize]), + #[codec(index = 4)] + Array16([::core::primitive::u8; 16usize]), + #[codec(index = 5)] + Array32([::core::primitive::u8; 32usize]), + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct Assets( + pub ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::staging_xcm::v4::asset::Asset, + >, + ); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum Fungibility { + #[codec(index = 0)] + Fungible(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 1)] + NonFungible(runtime_types::staging_xcm::v4::asset::AssetInstance), + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum WildAsset { + #[codec(index = 0)] + All, + #[codec(index = 1)] + AllOf { + id: runtime_types::staging_xcm::v4::asset::AssetId, + fun: runtime_types::staging_xcm::v4::asset::WildFungibility, + }, + #[codec(index = 2)] + AllCounted(#[codec(compact)] ::core::primitive::u32), + #[codec(index = 3)] + AllOfCounted { + id: runtime_types::staging_xcm::v4::asset::AssetId, + fun: runtime_types::staging_xcm::v4::asset::WildFungibility, + #[codec(compact)] + count: ::core::primitive::u32, + }, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum WildFungibility { + #[codec(index = 0)] + Fungible, + #[codec(index = 1)] + NonFungible, + } + } + pub mod junction { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum Junction { + #[codec(index = 0)] + Parachain(#[codec(compact)] ::core::primitive::u32), + #[codec(index = 1)] + AccountId32 { + network: ::core::option::Option< + runtime_types::staging_xcm::v4::junction::NetworkId, + >, + id: [::core::primitive::u8; 32usize], + }, + #[codec(index = 2)] + AccountIndex64 { + network: ::core::option::Option< + runtime_types::staging_xcm::v4::junction::NetworkId, + >, + #[codec(compact)] + index: ::core::primitive::u64, + }, + #[codec(index = 3)] + AccountKey20 { + network: ::core::option::Option< + runtime_types::staging_xcm::v4::junction::NetworkId, + >, + key: [::core::primitive::u8; 20usize], + }, + #[codec(index = 4)] + PalletInstance(::core::primitive::u8), + #[codec(index = 5)] + GeneralIndex(#[codec(compact)] ::core::primitive::u128), + #[codec(index = 6)] + GeneralKey { + length: ::core::primitive::u8, + data: [::core::primitive::u8; 32usize], + }, + #[codec(index = 7)] + OnlyChild, + #[codec(index = 8)] + Plurality { + id: runtime_types::xcm::v3::junction::BodyId, + part: runtime_types::xcm::v3::junction::BodyPart, + }, + #[codec(index = 9)] + GlobalConsensus(runtime_types::staging_xcm::v4::junction::NetworkId), + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum NetworkId { + #[codec(index = 0)] + ByGenesis([::core::primitive::u8; 32usize]), + #[codec(index = 1)] + ByFork { + block_number: ::core::primitive::u64, + block_hash: [::core::primitive::u8; 32usize], + }, + #[codec(index = 2)] + Polkadot, + #[codec(index = 3)] + Kusama, + #[codec(index = 4)] + Westend, + #[codec(index = 5)] + Rococo, + #[codec(index = 6)] + Wococo, + #[codec(index = 7)] + Ethereum { + #[codec(compact)] + chain_id: ::core::primitive::u64, + }, + #[codec(index = 8)] + BitcoinCore, + #[codec(index = 9)] + BitcoinCash, + #[codec(index = 10)] + PolkadotBulletin, + } + } + pub mod junctions { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum Junctions { + #[codec(index = 0)] + Here, + #[codec(index = 1)] + X1([runtime_types::staging_xcm::v4::junction::Junction; 1usize]), + #[codec(index = 2)] + X2([runtime_types::staging_xcm::v4::junction::Junction; 2usize]), + #[codec(index = 3)] + X3([runtime_types::staging_xcm::v4::junction::Junction; 3usize]), + #[codec(index = 4)] + X4([runtime_types::staging_xcm::v4::junction::Junction; 4usize]), + #[codec(index = 5)] + X5([runtime_types::staging_xcm::v4::junction::Junction; 5usize]), + #[codec(index = 6)] + X6([runtime_types::staging_xcm::v4::junction::Junction; 6usize]), + #[codec(index = 7)] + X7([runtime_types::staging_xcm::v4::junction::Junction; 7usize]), + #[codec(index = 8)] + X8([runtime_types::staging_xcm::v4::junction::Junction; 8usize]), + } + } + pub mod location { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct Location { + pub parents: ::core::primitive::u8, + pub interior: runtime_types::staging_xcm::v4::junctions::Junctions, + } + } + pub mod traits { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum Outcome { + #[codec(index = 0)] + Complete { + used: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 1)] + Incomplete { + used: runtime_types::sp_weights::weight_v2::Weight, + error: runtime_types::xcm::v3::traits::Error, + }, + #[codec(index = 2)] + Error { + error: runtime_types::xcm::v3::traits::Error, + }, + } + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum Instruction1 { + #[codec(index = 0)] + WithdrawAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 1)] + ReserveAssetDeposited(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 2)] + ReceiveTeleportedAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 3)] + QueryResponse { + #[codec(compact)] + query_id: ::core::primitive::u64, + response: runtime_types::staging_xcm::v4::Response, + max_weight: runtime_types::sp_weights::weight_v2::Weight, + querier: ::core::option::Option< + runtime_types::staging_xcm::v4::location::Location, + >, + }, + #[codec(index = 4)] + TransferAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + beneficiary: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 5)] + TransferReserveAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm1, + }, + #[codec(index = 6)] + Transact { + origin_kind: runtime_types::xcm::v2::OriginKind, + require_weight_at_most: runtime_types::sp_weights::weight_v2::Weight, + call: runtime_types::xcm::double_encoded::DoubleEncoded, + }, + #[codec(index = 7)] + HrmpNewChannelOpenRequest { + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + max_message_size: ::core::primitive::u32, + #[codec(compact)] + max_capacity: ::core::primitive::u32, + }, + #[codec(index = 8)] + HrmpChannelAccepted { + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 9)] + HrmpChannelClosing { + #[codec(compact)] + initiator: ::core::primitive::u32, + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 10)] + ClearOrigin, + #[codec(index = 11)] + DescendOrigin(runtime_types::staging_xcm::v4::junctions::Junctions), + #[codec(index = 12)] + ReportError(runtime_types::staging_xcm::v4::QueryResponseInfo), + #[codec(index = 13)] + DepositAsset { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + beneficiary: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 14)] + DepositReserveAsset { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm1, + }, + #[codec(index = 15)] + ExchangeAsset { + give: runtime_types::staging_xcm::v4::asset::AssetFilter, + want: runtime_types::staging_xcm::v4::asset::Assets, + maximal: ::core::primitive::bool, + }, + #[codec(index = 16)] + InitiateReserveWithdraw { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + reserve: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm1, + }, + #[codec(index = 17)] + InitiateTeleport { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm1, + }, + #[codec(index = 18)] + ReportHolding { + response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + }, + #[codec(index = 19)] + BuyExecution { + fees: runtime_types::staging_xcm::v4::asset::Asset, + weight_limit: runtime_types::xcm::v3::WeightLimit, + }, + #[codec(index = 20)] + RefundSurplus, + #[codec(index = 21)] + SetErrorHandler(runtime_types::staging_xcm::v4::Xcm1), + #[codec(index = 22)] + SetAppendix(runtime_types::staging_xcm::v4::Xcm1), + #[codec(index = 23)] + ClearError, + #[codec(index = 24)] + ClaimAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + ticket: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 25)] + Trap(#[codec(compact)] ::core::primitive::u64), + #[codec(index = 26)] + SubscribeVersion { + #[codec(compact)] + query_id: ::core::primitive::u64, + max_response_weight: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 27)] + UnsubscribeVersion, + #[codec(index = 28)] + BurnAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 29)] + ExpectAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 30)] + ExpectOrigin( + ::core::option::Option, + ), + #[codec(index = 31)] + ExpectError( + ::core::option::Option<( + ::core::primitive::u32, + runtime_types::xcm::v3::traits::Error, + )>, + ), + #[codec(index = 32)] + ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode), + #[codec(index = 33)] + QueryPallet { + module_name: + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, + }, + #[codec(index = 34)] + ExpectPallet { + #[codec(compact)] + index: ::core::primitive::u32, + name: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + module_name: + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + #[codec(compact)] + crate_major: ::core::primitive::u32, + #[codec(compact)] + min_crate_minor: ::core::primitive::u32, + }, + #[codec(index = 35)] + ReportTransactStatus(runtime_types::staging_xcm::v4::QueryResponseInfo), + #[codec(index = 36)] + ClearTransactStatus, + #[codec(index = 37)] + UniversalOrigin(runtime_types::staging_xcm::v4::junction::Junction), + #[codec(index = 38)] + ExportMessage { + network: runtime_types::staging_xcm::v4::junction::NetworkId, + destination: runtime_types::staging_xcm::v4::junctions::Junctions, + xcm: runtime_types::staging_xcm::v4::Xcm1, + }, + #[codec(index = 39)] + LockAsset { + asset: runtime_types::staging_xcm::v4::asset::Asset, + unlocker: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 40)] + UnlockAsset { + asset: runtime_types::staging_xcm::v4::asset::Asset, + target: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 41)] + NoteUnlockable { + asset: runtime_types::staging_xcm::v4::asset::Asset, + owner: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 42)] + RequestUnlock { + asset: runtime_types::staging_xcm::v4::asset::Asset, + locker: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 43)] + SetFeesMode { + jit_withdraw: ::core::primitive::bool, + }, + #[codec(index = 44)] + SetTopic([::core::primitive::u8; 32usize]), + #[codec(index = 45)] + ClearTopic, + #[codec(index = 46)] + AliasOrigin(runtime_types::staging_xcm::v4::location::Location), + #[codec(index = 47)] + UnpaidExecution { + weight_limit: runtime_types::xcm::v3::WeightLimit, + check_origin: ::core::option::Option< + runtime_types::staging_xcm::v4::location::Location, + >, + }, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum Instruction2 { + #[codec(index = 0)] + WithdrawAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 1)] + ReserveAssetDeposited(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 2)] + ReceiveTeleportedAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 3)] + QueryResponse { + #[codec(compact)] + query_id: ::core::primitive::u64, + response: runtime_types::staging_xcm::v4::Response, + max_weight: runtime_types::sp_weights::weight_v2::Weight, + querier: ::core::option::Option< + runtime_types::staging_xcm::v4::location::Location, + >, + }, + #[codec(index = 4)] + TransferAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + beneficiary: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 5)] + TransferReserveAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm1, + }, + #[codec(index = 6)] + Transact { + origin_kind: runtime_types::xcm::v2::OriginKind, + require_weight_at_most: runtime_types::sp_weights::weight_v2::Weight, + call: runtime_types::xcm::double_encoded::DoubleEncoded, + }, + #[codec(index = 7)] + HrmpNewChannelOpenRequest { + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + max_message_size: ::core::primitive::u32, + #[codec(compact)] + max_capacity: ::core::primitive::u32, + }, + #[codec(index = 8)] + HrmpChannelAccepted { + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 9)] + HrmpChannelClosing { + #[codec(compact)] + initiator: ::core::primitive::u32, + #[codec(compact)] + sender: ::core::primitive::u32, + #[codec(compact)] + recipient: ::core::primitive::u32, + }, + #[codec(index = 10)] + ClearOrigin, + #[codec(index = 11)] + DescendOrigin(runtime_types::staging_xcm::v4::junctions::Junctions), + #[codec(index = 12)] + ReportError(runtime_types::staging_xcm::v4::QueryResponseInfo), + #[codec(index = 13)] + DepositAsset { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + beneficiary: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 14)] + DepositReserveAsset { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm1, + }, + #[codec(index = 15)] + ExchangeAsset { + give: runtime_types::staging_xcm::v4::asset::AssetFilter, + want: runtime_types::staging_xcm::v4::asset::Assets, + maximal: ::core::primitive::bool, + }, + #[codec(index = 16)] + InitiateReserveWithdraw { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + reserve: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm1, + }, + #[codec(index = 17)] + InitiateTeleport { + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + dest: runtime_types::staging_xcm::v4::location::Location, + xcm: runtime_types::staging_xcm::v4::Xcm1, + }, + #[codec(index = 18)] + ReportHolding { + response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, + assets: runtime_types::staging_xcm::v4::asset::AssetFilter, + }, + #[codec(index = 19)] + BuyExecution { + fees: runtime_types::staging_xcm::v4::asset::Asset, + weight_limit: runtime_types::xcm::v3::WeightLimit, + }, + #[codec(index = 20)] + RefundSurplus, + #[codec(index = 21)] + SetErrorHandler(runtime_types::staging_xcm::v4::Xcm2), + #[codec(index = 22)] + SetAppendix(runtime_types::staging_xcm::v4::Xcm2), + #[codec(index = 23)] + ClearError, + #[codec(index = 24)] + ClaimAsset { + assets: runtime_types::staging_xcm::v4::asset::Assets, + ticket: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 25)] + Trap(#[codec(compact)] ::core::primitive::u64), + #[codec(index = 26)] + SubscribeVersion { + #[codec(compact)] + query_id: ::core::primitive::u64, + max_response_weight: runtime_types::sp_weights::weight_v2::Weight, + }, + #[codec(index = 27)] + UnsubscribeVersion, + #[codec(index = 28)] + BurnAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 29)] + ExpectAsset(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 30)] + ExpectOrigin( + ::core::option::Option, + ), + #[codec(index = 31)] + ExpectError( + ::core::option::Option<( + ::core::primitive::u32, + runtime_types::xcm::v3::traits::Error, + )>, + ), + #[codec(index = 32)] + ExpectTransactStatus(runtime_types::xcm::v3::MaybeErrorCode), + #[codec(index = 33)] + QueryPallet { + module_name: + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + response_info: runtime_types::staging_xcm::v4::QueryResponseInfo, + }, + #[codec(index = 34)] + ExpectPallet { + #[codec(compact)] + index: ::core::primitive::u32, + name: ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + module_name: + ::subxt::ext::subxt_core::alloc::vec::Vec<::core::primitive::u8>, + #[codec(compact)] + crate_major: ::core::primitive::u32, + #[codec(compact)] + min_crate_minor: ::core::primitive::u32, + }, + #[codec(index = 35)] + ReportTransactStatus(runtime_types::staging_xcm::v4::QueryResponseInfo), + #[codec(index = 36)] + ClearTransactStatus, + #[codec(index = 37)] + UniversalOrigin(runtime_types::staging_xcm::v4::junction::Junction), + #[codec(index = 38)] + ExportMessage { + network: runtime_types::staging_xcm::v4::junction::NetworkId, + destination: runtime_types::staging_xcm::v4::junctions::Junctions, + xcm: runtime_types::staging_xcm::v4::Xcm1, + }, + #[codec(index = 39)] + LockAsset { + asset: runtime_types::staging_xcm::v4::asset::Asset, + unlocker: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 40)] + UnlockAsset { + asset: runtime_types::staging_xcm::v4::asset::Asset, + target: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 41)] + NoteUnlockable { + asset: runtime_types::staging_xcm::v4::asset::Asset, + owner: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 42)] + RequestUnlock { + asset: runtime_types::staging_xcm::v4::asset::Asset, + locker: runtime_types::staging_xcm::v4::location::Location, + }, + #[codec(index = 43)] + SetFeesMode { + jit_withdraw: ::core::primitive::bool, + }, + #[codec(index = 44)] + SetTopic([::core::primitive::u8; 32usize]), + #[codec(index = 45)] + ClearTopic, + #[codec(index = 46)] + AliasOrigin(runtime_types::staging_xcm::v4::location::Location), + #[codec(index = 47)] + UnpaidExecution { + weight_limit: runtime_types::xcm::v3::WeightLimit, + check_origin: ::core::option::Option< + runtime_types::staging_xcm::v4::location::Location, + >, + }, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct PalletInfo { + #[codec(compact)] + pub index: ::core::primitive::u32, + pub name: runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >, + pub module_name: runtime_types::bounded_collections::bounded_vec::BoundedVec2< + ::core::primitive::u8, + >, + #[codec(compact)] + pub major: ::core::primitive::u32, + #[codec(compact)] + pub minor: ::core::primitive::u32, + #[codec(compact)] + pub patch: ::core::primitive::u32, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct QueryResponseInfo { + pub destination: runtime_types::staging_xcm::v4::location::Location, + #[codec(compact)] + pub query_id: ::core::primitive::u64, + pub max_weight: runtime_types::sp_weights::weight_v2::Weight, + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum Response { + #[codec(index = 0)] + Null, + #[codec(index = 1)] + Assets(runtime_types::staging_xcm::v4::asset::Assets), + #[codec(index = 2)] + ExecutionResult( + ::core::option::Option<( + ::core::primitive::u32, + runtime_types::xcm::v3::traits::Error, + )>, + ), + #[codec(index = 3)] + Version(::core::primitive::u32), + #[codec(index = 4)] + PalletsInfo( + runtime_types::bounded_collections::bounded_vec::BoundedVec6< + runtime_types::staging_xcm::v4::PalletInfo, + >, + ), + #[codec(index = 5)] + DispatchResult(runtime_types::xcm::v3::MaybeErrorCode), + } + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct Xcm1( + pub ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::staging_xcm::v4::Instruction1, + >, + ); + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub struct Xcm2( + pub ::subxt::ext::subxt_core::alloc::vec::Vec< + runtime_types::staging_xcm::v4::Instruction2, + >, + ); + } + } + pub mod staging_xcm_executor { + use super::runtime_types; + pub mod traits { + use super::runtime_types; + pub mod asset_transfer { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" + )] + #[encode_as_type( + crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" + )] + pub enum TransferType { + #[codec(index = 0)] + Teleport, + #[codec(index = 1)] + LocalReserve, + #[codec(index = 2)] + DestinationReserve, + #[codec(index = 3)] + RemoteReserve(runtime_types::xcm::VersionedLocation), + } + } + } } pub mod xcm { use super::runtime_types; @@ -59761,6 +71014,8 @@ pub mod api { BitcoinCore, #[codec(index = 9)] BitcoinCash, + #[codec(index = 10)] + PolkadotBulletin, } } pub mod junctions { @@ -60120,31 +71375,6 @@ pub mod api { #[codec(index = 39)] ExceedsStackLimit, } - #[derive( - :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, - :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, - :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, - :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, - Debug, - )] - # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] - #[decode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode" - )] - #[encode_as_type( - crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode" - )] - pub enum Outcome { - #[codec(index = 0)] - Complete(runtime_types::sp_weights::weight_v2::Weight), - #[codec(index = 1)] - Incomplete( - runtime_types::sp_weights::weight_v2::Weight, - runtime_types::xcm::v3::traits::Error, - ), - #[codec(index = 2)] - Error(runtime_types::xcm::v3::traits::Error), - } } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -60617,13 +71847,13 @@ pub mod api { Success, #[codec(index = 1)] Error( - runtime_types::bounded_collections::bounded_vec::BoundedVec5< + runtime_types::bounded_collections::bounded_vec::BoundedVec2< ::core::primitive::u8, >, ), #[codec(index = 2)] TruncatedError( - runtime_types::bounded_collections::bounded_vec::BoundedVec5< + runtime_types::bounded_collections::bounded_vec::BoundedVec2< ::core::primitive::u8, >, ), @@ -60645,10 +71875,10 @@ pub mod api { pub struct PalletInfo { #[codec(compact)] pub index: ::core::primitive::u32, - pub name: runtime_types::bounded_collections::bounded_vec::BoundedVec5< + pub name: runtime_types::bounded_collections::bounded_vec::BoundedVec2< ::core::primitive::u8, >, - pub module_name: runtime_types::bounded_collections::bounded_vec::BoundedVec5< + pub module_name: runtime_types::bounded_collections::bounded_vec::BoundedVec2< ::core::primitive::u8, >, #[codec(compact)] @@ -60708,7 +71938,7 @@ pub mod api { Version(::core::primitive::u32), #[codec(index = 4)] PalletsInfo( - runtime_types::bounded_collections::bounded_vec::BoundedVec4< + runtime_types::bounded_collections::bounded_vec::BoundedVec5< runtime_types::xcm::v3::PalletInfo, >, ), @@ -60787,6 +72017,8 @@ pub mod api { pub enum VersionedAssetId { #[codec(index = 3)] V3(runtime_types::xcm::v3::multiasset::AssetId), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::asset::AssetId), } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -60798,11 +72030,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] - pub enum VersionedMultiAssets { + pub enum VersionedAssets { #[codec(index = 1)] V2(runtime_types::xcm::v2::multiasset::MultiAssets), #[codec(index = 3)] V3(runtime_types::xcm::v3::multiasset::MultiAssets), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::asset::Assets), } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -60814,11 +72048,13 @@ pub mod api { # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] - pub enum VersionedMultiLocation { + pub enum VersionedLocation { #[codec(index = 1)] V2(runtime_types::xcm::v2::multilocation::MultiLocation), #[codec(index = 3)] V3(runtime_types::staging_xcm::v3::multilocation::MultiLocation), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::location::Location), } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -60835,6 +72071,8 @@ pub mod api { V2(runtime_types::xcm::v2::Response), #[codec(index = 3)] V3(runtime_types::xcm::v3::Response), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::Response), } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -60851,6 +72089,8 @@ pub mod api { V2(runtime_types::xcm::v2::Xcm1), #[codec(index = 3)] V3(runtime_types::xcm::v3::Xcm1), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::Xcm1), } #[derive( :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, @@ -60867,6 +72107,35 @@ pub mod api { V2(runtime_types::xcm::v2::Xcm2), #[codec(index = 3)] V3(runtime_types::xcm::v3::Xcm2), + #[codec(index = 4)] + V4(runtime_types::staging_xcm::v4::Xcm2), + } + } + pub mod xcm_fee_payment_runtime_api { + use super::runtime_types; + #[derive( + :: subxt :: ext :: subxt_core :: ext :: codec :: Decode, + :: subxt :: ext :: subxt_core :: ext :: codec :: Encode, + :: subxt :: ext :: subxt_core :: ext :: scale_decode :: DecodeAsType, + :: subxt :: ext :: subxt_core :: ext :: scale_encode :: EncodeAsType, + Debug, + )] + # [codec (crate = :: subxt :: ext :: subxt_core :: ext :: codec)] + #[decode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_decode")] + #[encode_as_type(crate_path = ":: subxt :: ext :: subxt_core :: ext :: scale_encode")] + pub enum Error { + #[codec(index = 0)] + Unimplemented, + #[codec(index = 1)] + VersionedConversionFailed, + #[codec(index = 2)] + WeightNotComputable, + #[codec(index = 3)] + UnhandledXcmVersion, + #[codec(index = 4)] + AssetNotFound, + #[codec(index = 5)] + Unroutable, } } }